вторник, 9 декабря 2008 г.

Что такое derived work или в чем несвобода gpl?

В тексте лицензии GPLv2 используется такое понятие как "derived". Если говорить конкретно, то речь идет о том, что если ваша программа есть порожденная работа от GPLv2 проекта, то и она должна быть выпущена под GPLv2. Но что считать порожденной работой?

Например, если я пишу игру на SDL, является ли код игры derived? Или у нас есть драйвер модема для Linux -- должен ли он быть открыт? Вопрос почти философский, и тем не менее (или -- тем более) требующий выяснения.

Наверное, самое простое и удачное правило (Linux: EXPORT_SYMBOL_GPL vs EXPORT_SYMBOL), выглядит так:
"if work A would not exist (or would be radically different) if work B did not exist, then A is a derivative work of B."

По-моему очень точно соответствует действительности. Драйвер устройства может быть в общем случае написан для любой системы. По крайней мере большая часть драйвера может быть независима от API ядра. В тоже время модуль к оконному менеджеру выпущенному под лицензией GPLv2, даже выделенный в отдельный проект -- должен быть выпущен под той-же лицензией.

Довольно давно, в коде ядра Linux некоторые из символов стали экспортироваться как EXPORT_SYMBOL_GPL, что означает возможность их использования только в GPL модулях. Похоже, такую идею можно назвать попыткой решить вопросы лицензионной политики программным способом. (Если используешь функцию/подсистему специфичную для ядра Linux -- то ты работаешь над GPL проектом.)

Вообще, интересно отметить, что здесь лицензия GPL оказывается не "просто свободной" лицензией (как часто привычно думается), а довольно прагматичным способом решить те задачи, которые поставил Столлман. Гильдия программистов -- пользователей лицензии GPLv2, имеют полную свободу модифицировать код проекта, но платят за это своей работой и что самое интересное, НЕсвободой освободить проект из под GPL лицензии и сделать его общественным достоянием в полном смысле, например, выпустив его под не-copyleft BSD-лицензией.

В тоже время выпустив проект под BSD-лицензией, мы можем получить GPL продукт на его основе, в следствии совместимости BSD с GPL.

Если вас также, как и меня, заинтересовали подобные вопросы, то рекомендую ознакомиться со статьей: Владимир Осинцев. Всегда ли General Public License – это свобода?

Комментариев нет:

Архив блога