osdev.orgРазработка операционных систем
  ЛИЦЕНЗИРОВАНИЕ (2 августа 2012 года)

Оглавление | Оригинал 


 "Чтение лицензионного месива может превратить ваши мозги в пюре"
 Amiga ROM Kernel Reference Manual: Includes & Autodocs, 2nd edition (вольный перевод).


Содержание
1. Введение
2. Популярные лицензии
3. Работа в качестве разработчика ПО
4. Слияние исходного кода
5. Отдельная трансляции модуля/объектного кода
6. Ссылки/Обучение
7. Версии (L)GPL
8. Индивидуальное лицензирование
9. Изменение лицензии
 9.1 Ловушки для авторов

Введение
 Когда есть новая, блестящая идея, вопросы лицензирования - как правило последнее о чём вы хотели бы думать. Однако, вопросы лицензирования могут доставить неприятности позже, и достаточно серьёзные. Следовательно, этим вопросам необходимо уделить время. Данный текст относится не только к разработке ОС, но и к разработке ПО в целом.

 Наверное самой страшной вещью в лицензиях ПО являются бесконечные разделы, написанные юридическим языком. Однако мы попытаемся сохранить данный текст чётким и коротким.

Популярные лицензии
 Вот перечень весьма сокращённых версий самых популярны лицензий:

  • GNU General Public License (GPL): пользователи имеют право на получение исходного кода, который могут свободно использовать, модифицировать и распространять до тех пор, пока исходники доступны и остаются под действием GPL. Обектные файлы связанные с кодом GPL так же попадают под действие GPL. (Более подробная информация о лицензии из Wikipedia)
  • GNU Lesser General Public License (LGPL): Пользователи имеют право на получение исходного кода, его свободное использование, модификацию и распространение до тех пор, пока исходники доступны и остаются под действие м LGPL или (опционально) GPL. GNU LGPL позволяет линковать с данной библиотекой или программой программы под любой лицензией, несовместимой с GNU GPL, при условии, что такая программа не является производной от объекта, распространяемого под (L)GPL, кроме как путём линкования. (Более подробная информация о лицензии из Wikipedia)
  • Berkeley Software Distribution (BSD): Разрешается повторное распространение и использование как в виде исходного кода, так и в двоичной форме, с изменениями или без, при соблюдении следующих условий (Более подробная информация о лицензии из Wikipedia):
  • При повторном распространении исходного кода должно оставаться указанное выше уведомление об авторском праве, этот список условий и последующий отказ от гарантий.
  • При повторном распространении двоичного кода должна сохраняться указанная выше информация об авторском праве, этот список условий и последующий отказ от гарантий в документации и/или в других материалах, поставляемых при распространении.
  • Public Domain: Обще́ственное достоя́ние (англ. Public Domain) — совокупность творческих произведений, имущественные авторские права на которые истекли или никогда не существовали. Также общественным достоянием иногда называют изобретения, срок патента на которые истёк. Распространять и использовать общественное достояние могут все без ограничений. Произведения, перешедшие в общественное достояние, могут свободно использоваться любым лицом без выплаты авторского вознаграждения. При этом должно соблюдаться право авторства, право на имя и право на защиту репутации автора (личные неимущественные права автора).(Более подробная информация о лицензии из Wikipedia)
  • Proprietary Licenses: Проприетарные лицензии - лицензированные пользователи могут свободно использовать ПО, изменять его для собственных нужд (в рамках договора), но не могут распространять.
  • Отсутствие информации о лицензии: По умолчанию "all rights reserved" - обычно сюрприз для авторов и пользователей...

Работа в качестве разработчика ПО
 Когда вы работаете по трудовому договору, код написанный в рабочее время, как правило, принадлежит тем, кто платит вам зарплату, ели ваш контракт прямо не говорит о ином.
 В некоторых странах, трудовой договор может охватывать всю работу проводимую в определённой области знаний, а иногда и свех того. Это означает, что если вас наняли для написания кода днём, то что вы написали после рабочего дня дома так же станет собственностью работодателя, поскольку работодатель заплатил за работу (и получение опыта) в определённой области и вы обязаны вернуть этот опыт обратно в компанию. С другой точки зрения, вы не можете в свободное время создавать продукт который может стать конкурентным продукции вашей компании.
 Это может показаться странным и даже возмутительным. Но вы должны это выяснить у руководства. В лучшем случае, ваш руководитель увидит, что вы хороший инженер и даст добро на продолжение свободного проекта. В худшем случае, вам скажут что вы не можете работать над проектом - прежде чем вы выпустите 10 тысяч строк исходного кода и предъявите иск на работодателя.

 Это не шутки и ситуацию следует рассматривать серьёзно. Вы можете потерять работу и доходы если ваш работодатель подаст в суд за нарушение условий контракта. Фонд свободного ПО требует предоставлять разрешающие документы подписанные вашим руководством, прежде чем принять ваш код.

 Всё это означает, что следует рассматривать код с которым вы работаете в рабочее время, как чужой исходник, даже если вы написали его сами.

Слияние исходного кода
 Здесь приведена некоторая информация, рассматривающая ситуацию, когда вы хоте вставить существующий код в свою кодовую базу.

  • Без заявления лицензии: Как уже было сказано выше, если вы работаете разработчиком ПО, и не доказали противного, вы не можете просто взять код из кода вашего работодателя и использовать его в собственном проекте. Скорее всего вас уволят и передадут дело в суд. Не следует этого делать. Вы можете быть удивлены, узнав, что коды из учебников или фрагменты кода размещённые на форумах являются собственностью их авторов, если явно не указано противного. С юридической точки зрения это означает, что вы не должны копировать их код. Однако вы всегда можете связаться с авторами для выяснения обстоятельств лицензирования.
  • Заявления проприетарной лицензии: практически никогда не позволяет копировать и вставлять исходные коды находящиеся под проприетарной лицензией (в зависимости от фактической лицензии). Как правило у вас даже нет доступа к исходникам.
  • Public Domain: Общественное достояние - всегда позволяет копирование и вставку кода исходников.
  • Лицензия BSD: Данная лицензия требует сохранения уведомления об авторском праве и перечень условий состаляющих лицензию BSD. Таким образом, определённая часть исходного кода остаётся под лицензией BSD, независимот от лицензии кода в который она интегрирована. До тех пор пока вы выполняете эти правила, вы можете использовать исходники с BSD лицензией в любом проекте с BSD или (L)GPL лицензией без предварительного уведомления.
  • Проекты под (L)GPL лицензией должны уведомляться. что часть исходников с BSD лицензией может быть законно извлечена в дальнейшем, для собственных проектов или PD проектов, без нарушения (L)GPL.
  • Проекты PD могут поступать аналогично, но это будет означать, что они, в целом не попадают под лицензию PD, а являются PD с частью BSD - это стоит выделять как в исходниках так и в документации (если таковая имеется).
  "Я не уверен в правовых последствиях включения BSD исходников в собственное ПО, и вы должны поддерживать "перечень условий" в нетронутом состоянии, в том числе и разрешения на дистрибьюцию. По этому вопросу есть много противоречивых мнений" - Martin Baute.
  • LGPL - Если ваш собственный проект находится под лицензией LGPL или GPL, вы можете копировать исходники LGPL без предварительного уведомления, поскольку LGPL явно поощряет исходники LGPL и GPL. (Смотрите пункт о версиях (L)GPL ниже).
  • GPL - Вы не можете взять исходный код находящийся под лицензией GPL и использовать его в ином месте, кроме проекта под лицензией GPL. Следует заметить, что в то время как код LGPL может быть "раскручен " под GPL, этого нельзя сделать наоборот (GPL -> LGPL).

Отдельная трансляция модуля/исходного кода
 Допустим, у вас есть отдельная трансляция модуля ( например файл или набор файлов, которые соответствуют индивидуальным объектным файлам, модулям и т.п., или бинарный объектный файл для связывания), и вы хотите интегрировать его в свой проект (обычно путём включения заголовочных файлов во время компиляции и компоновки винарных объектов при компиляции исполняемого файла или библиотеки).

  • Без заявления лицензии - Если заявление лицензии отсутствует, вы не имеете права на использование и распространение. Держитесь от этого подальше.
  • Заявление проприетарной лицензии - в зависимости от терминов актуальной лицензии.
  • Public Domain - действуйте без всяких условий.
  • Лицензия BSD - Вы должны сохранить не тронутым уведомление об авторском праве. Если вы используете только бинарники - сделайте это в документации; иначе в исходниках.
  • "В соответствии с моими примечаниями выше, я бы советовал сохранение лицензии BSD в идентификации модуля (как описано ниже для (L)GPL), чтобы избежать любых недоразумений по поводу применения лицензии BSD на весь проект и его распространение" - Martin Baute.
  • LGPL - Вы можете использовать исходники LGPL, но проекты не находящиеся под (L)GPL должны содержать их в отдельных транслированных модулях.
  • Если распространяете только бинарники, вы должны предоставлять несвязанные версии вашего объектного кода, чтобы люди могли связать его с различными версиями частей (L)GPL. Это явное требование LGPL!
  • GPL - Вы можете использовать исходники GPL только в проекте под GPL.
Ссылка/Изучение
 Вопрос заключается в том, что код написаный на основе изучения материала X является "рабботой основанной на X" (в терминологии GPL) и/или "кражей интеллектуальной собственности" (говоря юридическим языком). Во многом, ситуация зависит от того, где используется код.

  • Без заявления лицензии - Предположите худшее (судебный иск)
  • Проприетарная лицензия - С учётом актуальной лицензии.
  • Public Domain - Двигайтесь вперёд и получайте прибыль. Автор не возражает.
  • Лицензия BSD - Лицензия BSD распространяется на сам код, "с модификациями или без них", но не говорит о результатах его изучения.
  • (L)GPL - Лицензии LGPL и GPL требуют, чтобы любая "работа основанная на продукте" производилась под той же лицензией. Жёсткие евангелисты утверждают, что вдохновение полученное от кода под лицензией LGPL представляет собой "работу на основе продукта". Лично я считаю это утверждение бессмысленным.

Версии (L)GPL
 Существуют вариации GPL и LGPL, поскольку они представлены версиями. Правообладатель имеет право указывать конкрентую версию (L)GPL, и лицензировать ей исходники, или указывать версию "или любые более поздние версии", или не указывать любые версии.

 Позаботьтесь об этом, когда будете копировать код (L)GPL. Если версия не указана, можно предположить, что владелец этим не озаботился и добавьте указание версии с  или без части "or any later version".

 Однако, если правообладатель указал версию, вы можете можете не добавлять часть "or any later version" если она не существует или удалить существующую  часть без письменного согласия владельца авторских прав.

Индивидуальное лицензирование
 В этом документе мы говорили только о наиболее общих лицензиях. Если лицензия на конкретный кусок кода составляет проблему, вы всегда можете связаться с правообладателем и обратиться за индивидуальной лицензией.
Например, если вы создаёте библиотеку под лицензией PD, а необходимая для завершения функциональность является специфической и доступна только под BSD лицензией, попросите правообладателя на разрешение включения функциональности в проект без необходимости возиться с условиями BSD.

Изменение лицензии
 Как владелец авторских прав проекта, вы свободны изменить лицензирование проекта. Вы можете выпустить v2.0 ранее действующую под лицензией GPL, как проприетарное ПО, и наоборот. В первом случае, ваши коллеги могут свободно использовать v1.9 и продолжить разработку проекта под GPL, поскольку вы не можете менять лицензии задним числом.

Ловушки для авторов
 Допустим, прочитав всё ранее сказанное, вы вдруг решили, что разработка вашего проекта под GPL была не самой удачной идеей. Вы хотите изменить лицензию. Если вы работали над проектом один - вам ничто не мешает (За исключением того, что SourceForge не принимает проприетарные проекты).

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

Позвольте повториться: если вы хотите изменить лицензию вашего проекта
  •  с GPL ни на что другое;
  •  c LPGP ни на что другое кроме GPL;
  •  с BSD ни на что другое;
  •  с некоторых X на У о которых я не подумал;

 Вы не сможете это сделать, даже если это ваш собственный проект. Это одна из причин, по которой Фонд Свободного ПО (Free Software Foundation) побуждает людей передавать авторские права на исходники в FSF в письменной форме, поскольку только это позволяет FSF изменить лицензирование этих исходников как это явно описано в (L)GPL.