Перейти к содержанию

ADR 0101: Лицензирование и стратегия коммерциализации

Статус: Accepted
Дата: 2026-04-26

Связанные ADR

ADR Роль
0009 связанный ADR
0024 связанный ADR
0027 связанный ADR
architecture-policy.md вне нумерованного ADR

Резюме

  • Матрица лицензий и правила зависимостей (copyleft, коммерциализация).
  • Guardrails для выбора стека и публикации артефактов.
  • Governance — рядом с 0100.

1. Контекст

CascadeIDE планирует оставаться open source, сохраняя варианты коммерциализации (облачные сервисы, корпоративные сервисы, поддержка, пользовательские интеграции).
Проект также рассматривает зависимости ИИ и времени выполнения с разными лицензионными моделями, включая «сильный» копилефт.

Без явной политики решения по зависимостям могут дрейфовать и создавать будущие IP-конфликты (ограничения распространения, риски при пере-лицензировании, риски для due diligence и неопределённость для контрибьюторов).


2. Решение

Принять лицензионную стратегию open source с сохранением коммерческих опций:

  1. Код CascadeIDE в этом репозитории распространяется под MIT (см. корневой LICENSE); коммерческие услуги и публичные контакты — в COMMERCIAL-NOTICE.md.
  2. Базовый путь распространения использует только лицензии из базового разрешённого списка.
  3. Компоненты со «сильным» копилефтом (семейство GPL/AGPL) запрещены в ядре и рантайме без отдельного утверждённого ADR-исключения.
  4. Коммерциализация остаётся открытой через:
  5. управляемые облачные предложения,
  6. корпоративные расширения,
  7. поддержку/консалтинг/обучение.
  8. Каждая новая внешняя зависимость проходит проверку и фиксируется с лицензионными метаданными.

3. Матрица лицензионной политики

3.1 Разрешено по умолчанию

  • MIT
  • Apache-2.0
  • BSD-2-Clause
  • BSD-3-Clause

3.2 Разрешено с явной проверкой

  • MPL-2.0
  • семейство LGPL

Критерии проверки для этой группы: - модель связывания и развёртывания, - обязательства на изменённые файлы/библиотеки, - влияние на распространение пакетированных desktop-сборок.

3.3 Ограничено (требуется ADR-исключение)

  • семейство GPL
  • семейство AGPL
  • SSPL
  • custom non-commercial / source-available условия, ограничивающие бизнес-использование

4. Правила управления зависимостями

Для каждого нового пакета или библиотеки:

  1. Фиксировать:
  2. имя пакета,
  3. версию,
  4. URL источника,
  5. заявленную лицензию,
  6. заметные риски по транзитивным лицензиям.
  7. Добавлять и обновлять проектные уведомления в docs/THIRD-PARTY-NOTICES.md.
  8. Обеспечить, что проверки лицензий в CI падают при:
  9. запрещённых лицензиях,
  10. неизвестных/неразрешённых лицензиях.

5. Архитектурный ограничитель для запрещённых лицензий

Если рассматривается компонент с запрещённой лицензией:

  1. Начинать с оценки PoC вне пути поставки ядра.
  2. Проводить юридическую и продуктовую проверку (обязательства, модель распространения, политика обновлений).
  3. Разрешать только через отдельное ADR-исключение с планом отката.

Без явной юридической проверки не предполагается «автоматическая безопасность» только из-за процессных границ (например, sidecar/process split).


6. Модель коммерциализации (неисключительная)

Open source-ядро совместимо с коммерческими сценариями через:

  • облачные и управляемые сервисы,
  • корпоративные дополнения,
  • платную поддержку/SLA,
  • консалтинг и внедрение.

Этот ADR не фиксирует единственный путь монетизации; он сохраняет гибкость и при этом поддерживает гигиену зависимостей.


7. Последствия

Положительные

  • Ясные правила контрибуций и зависимостей.
  • Более чистая IP-цепочка для будущего due diligence.
  • Ниже риск случайной лицензионной блокировки.

Отрицательные

  • Часть технически привлекательных библиотек может быть исключена из ядра.
  • Больше процессной нагрузки при добавлении зависимостей.

8. План внедрения

  1. ~~Добавить license-policy.md (краткая политика для разработчиков).~~ Сделано: ../license-policy.md.
  2. ~~Добавить/поддерживать THIRD-PARTY-NOTICES.md.~~ Сделано: ../THIRD-PARTY-NOTICES.md (копируется в publish через CascadeIDE.csproj).
  3. Добавить в CI проверку лицензий как обязательный этап.
  4. Провести базовый аудит лицензий зависимостей и устранить находки.
  5. Вести исключения отдельными ADR.