Как защитить свободу с помощью авторского права
Копилефт (copyleft) — игра слов на основе копирайта (copyright). Это понятие, созданное в 1980-х годах Ричардом Столлманом и Фондом свободного программного обеспечения (FSF) для проекта GNU, — механизм, который использует авторское право, чтобы свобода ПО не исчезала. Правообладатель разрешает всем использовать, изменять и распространять ПО, но ставит одно условие: «распространяя то, что создано на основе этого кода, вы должны дать получателям те же свободы».
У разрешительных лицензий (MIT, BSD, Apache) такого условия нет. Поэтому кто-то может изменить разрешительный код и продавать его как закрытый продукт. Копилефт препятствует этому и оставляет открытыми и улучшенные версии. Из-за этого свойства лицензии с копилефтом называют также «взаимными» (reciprocal).
Обязанности возникают при «распространении»
Условия копилефта срабатывают, когда код передаётся другим. В GPL-3.0 это называется «convey» (передача).
- Если вы сделали на основе кода GPL инструмент только для внутреннего использования в компании и не распространяете его вовне, обязанности раскрывать исходники не возникает.
- Раздача приложения клиентам в виде установочного файла или продажа устройств с ним — это распространение.
- Если ПО работает только на сервере, а пользователи обращаются к нему через веб, по GPL это не распространение. Этот пробел закрывает AGPL.
Три вида по охвату
Сильный копилефт
Типичные представители — GPL-2.0 и GPL-3.0. Всё, что объединено с кодом GPL в одну программу и распространяется, должно следовать условиям GPL. Позиция FSF: если части образуют одну программу, это объединение — будь то статическая или динамическая компоновка.
Слабый копилефт
Лицензии с более узким охватом обязанностей.
- LGPL: на уровне библиотеки. Раскрывать нужно только изменения самой библиотеки, а использующие её программы могут оставаться закрытыми при соблюдении условий (возможность повторной компоновки и т. п.).
- MPL-2.0: на уровне файла. Изменив файл под MPL, раскрываете только этот файл.
- EPL-2.0: на уровне модуля. Код EPL и изменения раскрываются, а отдельные модули могут быть под другой лицензией.
Сетевой копилефт
AGPL-3.0 обязывает предоставлять пользователям исходный код уже при предоставлении изменённой программы по сети. Она создана, чтобы закрыть пробел GPL в эпоху веб-сервисов.
| Лицензия | Объём раскрытия | Если только запускать на сервере |
|---|---|---|
| GPL-2.0 / GPL-3.0 | Вся объединённая программа | Обязанностей нет |
| LGPL-2.1 / LGPL-3.0 | Библиотека и её изменения | Обязанностей нет |
| MPL-2.0 | Изменённые файлы MPL | Обязанностей нет |
| EPL-2.0 | Код EPL и изменения (модуль) | Обязанностей нет |
| AGPL-3.0 | Вся объединённая программа | Для изменённой версии — предоставить исходный код |
Частые заблуждения
- «Копилефт запрещает коммерческое использование» — Не запрещает. ПО под GPL можно продавать, и многие компании зарабатывают на платной поддержке или хостинге. Запрещено лишать получателей их свобод.
- «Если хоть раз взглянуть на строку кода GPL, мой код станет GPL» — Лицензии регулируют копирование, изменение и распространение произведений. Получение идей при чтении кода само по себе не является предметом авторского права. Однако если это фактически переписывание, это могут счесть копированием.
- «При нарушении мой код автоматически станет GPL» — Последствием нарушения лицензии обычно становятся утрата прав и ответственность за нарушение авторского права. Ваш код не раскрывается принудительно: вы выбираете между соблюдением условий и прекращением распространения.
- «Код с копилефтом никогда нельзя использовать в проектах с разрешительной лицензией» — Имеется в виду, что при совместном распространении объединённое произведение подчиняется условиям копилефта. Есть способы вроде разделения на отдельные программы или компоновки библиотеки со слабым копилефтом в соответствии с условиями. См. Основы совместимости.
Вопросы для решения о копилефте
- Устраивает ли вас, если изменения вашего кода попадут в закрытые продукты?
- Что важнее — широкое распространение как библиотеки или возврат улучшений?
- Основная форма использования — устанавливаемое ПО или сервис, работающий на сервере?
По ответам на эти три вопроса мастер выбора сузит список вариантов. Подробное сравнение — в статье Разрешительные лицензии и копилефт.
Эта статья содержит общую информацию и не является юридической консультацией. Важные решения обсуждайте со специалистами.
Источники
- GNU — What is Copyleft? — https://www.gnu.org/licenses/copyleft.html
- FAQ по лицензиям GNU — https://www.gnu.org/licenses/gpl-faq.html
- Текст GNU GPL v3.0 — https://www.gnu.org/licenses/gpl-3.0.html