Лицензии на программное обеспечение
Лицензия определяет, как продукт можно использовать, распространять и модифицировать. Любой код без лицензии юридически защищён авторским правом по умолчанию - его нельзя использовать, копировать или распространять без разрешения автора. Выбор лицензии влияет на бизнес-модель, совместимость с другими проектами и юридические обязательства.
Два основных класса: проприетарные (коммерческие) и open-source. Внутри open-source фундаментальное разделение на permissive (разрешительные) и copyleft (наследуемые).
Open-Source лицензии
Permissive (разрешительные)
Разрешают делать с кодом почти всё: использовать в коммерческих продуктах, модифицировать, распространять под другой лицензией. Основное требование - сохранение копирайт-уведомления.
MIT License - самая популярная open-source лицензия. Минимум ограничений: можно использовать, копировать, модифицировать, объединять, публиковать, распространять, сублицензировать, продавать. Единственное условие - сохранить текст лицензии и копирайт в копиях. Нет гарантий, автор не несёт ответственности.
Используют: React, Vue.js, Angular, Next.js, Node.js, jQuery, Rails, .NET, Babel, Webpack, Tailwind CSS.
Apache License 2.0 - как MIT, но с двумя дополнениями: явная патентная лицензия (пользователь получает права на патенты контрибьюторов, связанные с кодом) и условие прекращения патентной лицензии при подаче патентного иска. Требует указывать изменения при модификации.
Используют: Kubernetes, Android (AOSP), TensorFlow, Apache HTTP Server, Kafka, Spark, Elasticsearch, Swift, TypeScript.
BSD 2-Clause (Simplified) - практически идентична MIT. Разрешает использование и распространение при сохранении копирайта. Лаконичнее MIT по формулировке.
BSD 3-Clause (New/Revised) - BSD 2-Clause плюс запрет использовать имя авторов/организации для продвижения производных продуктов без разрешения.
Используют: FreeBSD, nginx (ранее), Go, Django.
ISC License - функционально эквивалентна MIT, но с упрощённой формулировкой. Рекомендуется OpenBSD. Используется в npm-пакетах.
Copyleft (наследуемые)
Требуют, чтобы производные работы распространялись под той же лицензией. Цель - гарантировать, что код и его модификации останутся открытыми.
GNU General Public License v3 (GPLv3) - строгий copyleft. Если вы модифицируете GPL-код и распространяете продукт, обязаны открыть исходный код всей программы под GPLv3. Включает патентную защиту и защиту от тивоизации (Tivoization - когда устройство использует GPL-код, но аппаратно блокирует запуск модифицированных версий).
Используют: Linux kernel (GPLv2), GCC, GIMP, WordPress, Bash, Git.
Important
GPL не запрещает коммерческое использование. Можно продавать GPL-софт. Обязательство - предоставить исходный код получателям. Это не означает публикацию для всех, только для тех, кому вы распространили бинарники.
GNU GPLv2 - предыдущая версия GPL без патентной защиты и без защиты от тивоизации. Linux kernel остаётся на GPLv2, потому что Линус Торвальдс не согласен с анти-тивоизационными положениями v3.
GNU Lesser General Public License (LGPL) - ослабленный copyleft. Позволяет линковать проприетарный код с LGPL-библиотекой без необходимости открывать свой код. Но если вы модифицируете саму LGPL-библиотеку, изменения должны быть открыты.
Используют: GNU C Library (glibc), Qt (dual), FFmpeg (частично).
GNU Affero General Public License (AGPL) - самый строгий copyleft. Как GPLv3, но закрывает «лазейку SaaS»: если вы используете AGPL-код на сервере и предоставляете к нему доступ по сети, обязаны открыть исходный код, даже если не распространяете бинарники.
Используют: MongoDB (до 2018, потом SSPL), Grafana, Mastodon, Nextcloud.
Info
AGPL - причина, по которой многие компании избегают определённых open-source продуктов. Использование AGPL-библиотеки в SaaS может потребовать открытия кода всего сервиса.
Weak Copyleft
Mozilla Public License 2.0 (MPL 2.0) - copyleft на уровне файлов. Модификации MPL-файлов должны оставаться под MPL, но можно комбинировать с проприетарным кодом в одном проекте. Баланс между permissive и copyleft.
Используют: Firefox, Thunderbird, LibreOffice, HashiCorp Terraform (до 2023), Syncthing.
Creative Commons (для контента)
CC лицензии предназначены для контента (документация, изображения, данные), не для кода.
- CC0 - отказ от всех прав (public domain)
- CC BY - атрибуция (указать автора)
- CC BY-SA - атрибуция + ShareAlike (производные под той же лицензией)
- CC BY-NC - атрибуция + только некоммерческое использование
- CC BY-ND - атрибуция + без производных (нельзя модифицировать)
Комбинации этих условий дают 6 основных CC лицензий. Wikipedia использует CC BY-SA. Stack Overflow использует CC BY-SA для пользовательского контента.
Специальные и спорные лицензии
Server Side Public License (SSPL) - создана MongoDB. Как AGPL, но требует, чтобы компания, предлагающая SSPL-софт как сервис, открыла весь свой стек управления, включая оркестрацию, мониторинг, хранение, сеть. OSI не признаёт SSPL как open-source из-за непропорциональных требований.
Используют: MongoDB (с 2018), Elasticsearch (с 2021, потом AGPL+SSPL).
Business Source License (BSL / BUSL) - код открыт для просмотра, но коммерческое использование ограничено (обычно запрещено конкурентное использование). Через определённый срок (обычно 3-4 года) автоматически конвертируется в open-source лицензию (Apache 2.0 или GPL).
Используют: MariaDB, HashiCorp (Terraform, Vault с 2023), Sentry, CockroachDB.
Elastic License 2.0 (ELv2) - разрешает использование, модификацию, распространение, но запрещает предоставлять ПО как managed service и обходить лицензионные ключи.
Используют: Elasticsearch (dual AGPL+ELv2 с 2024), Kibana.
Unlicense - посвящение в public domain. Отказ от всех авторских прав. В юрисдикциях, где public domain невозможен, действует как максимально разрешительная лицензия.
Проприетарные (коммерческие) лицензии
Проприетарные лицензии сохраняют за автором исключительные права. Исходный код обычно закрыт. Пользователь получает ограниченное право использования.
Основные модели:
- Per-seat (per-user) - плата за каждого пользователя. JetBrains IDE, Jira, Confluence
- Per-instance (per-server) - плата за каждый сервер/инстанс. Oracle Database, SQL Server (per-core)
- Subscription (SaaS) - регулярная подписка за доступ к сервису. GitHub Enterprise, Slack, Figma
- Perpetual license - разовая покупка бессрочной лицензии, иногда с платной поддержкой. Ранние версии Microsoft Office, Sublime Text
- Freemium - базовая версия бесплатна, расширенная платна. Docker Desktop, Notion, VS Code (MIT) + GitHub Copilot (SaaS)
- Dual licensing - один продукт под двумя лицензиями: open-source (GPL) для сообщества и коммерческая для компаний, которые не хотят соблюдать copyleft. MySQL (GPL + Commercial), Qt (LGPL + Commercial), Redis (до 2024)
- Open core - ядро open-source, расширения или enterprise-фичи проприетарные. GitLab (CE под MIT, EE проприетарная), Grafana (AGPL core, Enterprise features)
Совместимость лицензий
При использовании зависимостей с разными лицензиями важна совместимость. Ключевое правило: лицензия итогового продукта должна удовлетворять условиям всех используемых лицензий.
Permissive → Copyleft: можно (MIT-код можно включить в GPL-проект)
Copyleft → Permissive: нельзя (GPL-код нельзя перелицензировать под MIT)
GPLv2 → GPLv3: обычно нельзя (если нет "or later" в уведомлении)
Apache 2.0 → GPLv3: можно
Apache 2.0 → GPLv2: формально несовместимы (из-за патентных условий)
Important
Перед добавлением зависимости проверяйте лицензию. Одна GPL-зависимость в коммерческом проекте может потребовать открытия всего кода. Инструменты для аудита:
license-checker(npm),pip-licenses(Python), FOSSA, Snyk.
Open-Source организации
Free Software Foundation (FSF)
Основана Ричардом Столлманом в 1985 году. Продвигает концепцию свободного ПО (free software) - свобода запускать, изучать, распространять и модифицировать софт. Автор GPL, LGPL, AGPL лицензий. Поддерживает проект GNU.
FSF отличает «free software» от «open source»: free software - про свободу пользователя (ethical stance), open source - про модель разработки (practical stance). FSF не признаёт некоторые лицензии, одобренные OSI.
Open Source Initiative (OSI)
Основана в 1998 году Брюсом Перенсом и Эриком Рэймондом. Хранители Open Source Definition - 10 критериев, которым должна соответствовать лицензия, чтобы считаться open-source. OSI сертифицирует лицензии: если лицензия одобрена OSI, она считается «настоящей» open-source. Именно OSI отказалась признать SSPL и BSL как open-source.
Apache Software Foundation (ASF)
Некоммерческая организация, управляющая более чем 350 open-source проектами. Все проекты ASF выходят под Apache License 2.0. Обеспечивает инфраструктуру, governance и юридическую защиту для проектов. Известные проекты: Apache HTTP Server, Kafka, Spark, Hadoop, Cassandra, Airflow, Flink.
Linux Foundation (LF)
Основана в 2000 году. Хостит и поддерживает инфраструктуру для Linux и связанных проектов. Управляет фондами: CNCF, OpenJS Foundation, TODO Group и другими. Спонсирует работу Линуса Торвальдса. Более 1000 корпоративных членов, включая Google, Microsoft, IBM, Intel, Huawei.
Cloud Native Computing Foundation (CNCF)
Подразделение Linux Foundation, сфокусированное на cloud-native технологиях. Управляет graduated-проектами: Kubernetes, Prometheus, Envoy, containerd, CoreDNS, etcd, Helm, Argo, Flux. Определяет стандарты cloud-native экосистемы. CNCF Landscape - карта более 1000 проектов в cloud-native пространстве.
OpenJS Foundation
Подразделение Linux Foundation для JavaScript-экосистемы. Хостит: Node.js, jQuery, webpack, ESLint, Electron, Deno, Appium. Обеспечивает нейтральную площадку для управления JS-проектами.
Eclipse Foundation
Управляет Eclipse IDE и связанными проектами. Хостит Jakarta EE (бывший Java EE), Eclipse Adoptium (OpenJDK builds), MicroProfile. Базируется в Европе (Бельгия), что важно для compliance с европейским законодательством.
Software Freedom Conservancy (SFC)
Некоммерческая организация, предоставляющая юридический и финансовый дом для FOSS-проектов. Хостит: Git, Homebrew, Selenium, PyPy, Godot Engine. Единственная организация, активно занимающаяся enforcement GPL-лицензий.
Другие заметные организации
- Python Software Foundation (PSF) - управляет Python, PyPI, PyCon
- Rust Foundation - управляет Rust и Cargo, основана Mozilla, AWS, Google, Huawei, Microsoft
- Mozilla Foundation - Firefox, MDN Web Docs, Servo, лоббирование открытого интернета
- GNOME Foundation - десктоп GNOME, GTK
- KDE e.V. - десктоп KDE, Qt-аффилированные проекты
- NumFOCUS - научные и data-проекты: NumPy, Pandas, Jupyter, matplotlib, scikit-learn
Выбор лицензии для своего проекта
Для библиотеки, которую хотите максимально распространить: MIT или Apache 2.0. Apache предпочтительнее, если важна патентная защита.
Для проекта, который должен оставаться открытым с производными: GPLv3 или AGPL (для серверного ПО).
Для проекта с open-core бизнес-моделью: ядро под MIT/Apache, enterprise-фичи проприетарные. Или dual licensing (GPL + Commercial).
Для контента и документации: CC BY 4.0 (с атрибуцией) или CC0 (public domain).
Для утилит и мелких скриптов: MIT или Unlicense.
Info
GitHub при создании репозитория предлагает choosealicense.com - ресурс от GitHub для выбора лицензии через простые вопросы. SPDX (Software Package Data Exchange) предоставляет стандартные идентификаторы лицензий, используемые в package.json, Cargo.toml, go.mod.