Блог им. semiletov → GPL + public domain
Пытаюсь понять, могу ли я, разрабатывая программу, одну часть исходников лицензировать под GPL, а другую (где нет чужого GPL-кода) просто отдавать как public domain?
- +1
- semiletov
- 26 января 2012, 00:59
Думаю — да, можешь. Помечаешь свой код, который хочешь сделать public domain, как public domain (лучше выделить его в отдельный файл) — и всё, будет две версии кода: public domain и GPL. Называется «двойное лицензирование». Правда не ясно, зачем всё это надо.
GPL требует, чтобы всё было открыто. Даже то, что динамически линкуется. Если очень хочется, то можно организовать общениен между разными частями проекта с помощью socket или чего-нибудь подобного.
Есть две версии кода:
1) полный под программы, всё под GPL.
2) куски кода программы за авторством OP, public domain.
Никакого обхода не вижу. Можно взять (2), и делать с ним что угодно, GPL-частей это никак не касается. Можно взять (1), но тогда будет действовать GPL, со всеми вытекающими.
В данном случае имеет место именно двойное лицензирование — на один и тот же код (который (2)) распространяются сразу две лицензии — GPL (когда он поставляется в составе (1)) и public domain (когда поставляется только в виде (2)).
Если следовать твоей логике, то программа под GPL не может включать в себя куски кода из public domain, что противоречит фактам.
P.S. Есть вероятность, что я объяснил идею недостаточно подробно для лиц, не разбирающихся в авторском праве. Отсюда и непонимание.
P.P.S. Вообще, я бы не советовал такие вещи делать. Людям потом хуже будет, особенно если некоторые хитрые товарищи решат использовать GPL'нутую версию (с GPL'нутыми же патчами поверх неё) в обход авторского права, выдавая её за public domain. Поди потом докажи факт нарушения авторского права — сырцов-то нету...
P.P.P.S Понятно, что выбор лицензии — личное решение. Если код из (2) включить в GPL'нутый проект, и сделать (1), то патчи поверх (1) могут быть GPL'нутыми, БЕЗ двойного лицензирования. Право выбора лицензии полностью принадлежит авторам патчей. Поэтому хотя изначально (2) является подмножеством (1), со временем разработки (1) уйдёт вперёд, а (2) останется там же, где и была, если только разработчики не согласятся предоставить патчи в public domain. Именно поэтому репозитории фирм, которые занимаются двойным лицензированием, открыты только для патчей, авторы которых согласны распространять код под двумя лицензиями (либо фирма просто требует передачи ей соотвествующей части авторских прав). В частности, несовместимость OpenOffice с LibreOffice частично объясняется этим — не все патчи из LO лицензированы под MPL (OO весь лицензирован под MPL), поэтому OO не может их взять себе.
Я бы сделал следующим образом — прямо указал бы в «readme», что такой-то и такой-то файлы под одной лицензией, а другие под другой, и что при сборке проекта код под «public domain» автоматически перелицинзируется под GPL (согласно её требованию) и конечный продукт имеет статус GPL-программы. Такой подход, с одной стороны, позволит полноценно использовать ПО, а с другой, забирать «public domain»-код в другие продукты (в т.ч. проприетарные).