Лицензия для вашего open-source проекта
В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.
Статья будет полезна тем, кто хочет:
— в общих чертах понять, что такое авторское право (но лучше обратиться к юристу); — подобрать свободную лицензию для своего проекта; — разобраться, что нужно писать в шапке файла исходного кода. Первым делом — ссылка на LicenseIT, очень полезный сайт с описанием лицензий и особенностей их применения (в том числе в России), который я умудрился не найти при подготовке статьи. Исправляюсь. Спасибо sensboston за ссылку.
Авторское правоДля начала коротко о том, что вообще такое авторское право и лицензии.
Meanwhile in RussiaЕсли вы в качестве результата интеллектуальной деятельности создали некое произведение (например, программу), то в этом случае вы — его автор(ы). Вы обладаете имущественными и неимущественными правами на это произведение. Имущественные права на это произведение вы можете передать и кому-то другому, но передать неимущественные, в том числе авторство, у вас уже не получится. Быть автором — это ваше неотчуждаемое и непередаваемое право.
Даже если вы при создании произведения работали «на дядю», то и в этом случае автор вовсе не некое абстрактное ООО. Возможно, когда вы устраивались на работу, то подписывали в том числе и пункт про «отчуждение исключительных прав на результаты вашей интеллектуальной деятельности в пользу работодателя» в договоре или что-то подобное. Возможно, нет (в этом случае гуглите "Служебное произведение"). В обоих случаях автор — вы. И обладаете некоторыми правами.
ЛицензииДругой способ передачи прав на произведение — лицензия. В этом случае права не отчуждаются, они передаются в соответствии с тем, что прописано в лицензионном договоре между пользователем и правообладателем. Да, лицензия — это именно договор! Все лицензии на ПО, как коммерческие, так и свободные, представляют из себя такой договор. В нем прописано, что вы можете и что не можете делать с ПО, и как далеко вас может послать правообладатель в случае претензий. Например, лицензия может дать вам право устанавливать программу, но ограничивать это право только одним компьютером, иначе к вам приедут дяди в масках и все отберут.
Обратите внимание на важный момент: если у вас достаточно прав на произведение, то вы можете распространять его под разными лицензиями (в том числе, одновременно). Например, на вашем сайте вы можете распространять программу бесплатно под свободной лицензией, а в каком-либо магазине приложений она может продаваться за деньги под их стандартной лицензией.
Также Вы можете сменить лицензию в любое время: например, сегодня у вас на сайте программа была бесплатной под свободной лицензией, а завтра она платная и с закрытыми исходниками. Но в этом случае вы не можете заставить пользователей, скачавших программу ранее, следовать нормам новой лицензии. Это логично, ведь они получили программу по другому договору.
В мире Свободные лицензии Определяем определениеСвободной лицензией является лицензия, которая соответствует неким критериям свободного ПО. Обычно используют либо определение свободного ПО, данное Ричардом Столлманом, либо критерии Debian по определению свободного программного обеспечения, сформулированные Брюсом Перенсом. Соответственно, те лицензии, которые не являются свободными — несвободные.
На мой личный взгляд, заморачиваться с конкретными определениями нет никакого смысла, мы ведь не политики (ну, по крайней мере, я). А с практической точки зрения, основная разница между свободными и несвободными лицензиями — в целях. Несвободные лицензии применяются с целью заработать и не дать на этом заработать конкурентам, свободные — с целью предоставить возможность безвозмездно пользоваться плодами вашего труда.
CopyleftПеред тем как приступить к описанию лицензий, нужно разобраться, что такое копилефтные и разрешительные (пермиссивные, permissive) лицензии. Копилефтными считаются свободные лицензии, требующие распространять производные продукты под такой же лицензией. То есть, если вы использовали в своей программе библиотеку под копилефтной лицензией, то вам придется распространять вашу программу под ней же. Задача же разрешительных лицензий, напротив, разрешить любое возможное использование продукта.
Основные свободные лицензии GPLv3 (GNU General Public License Version 3) GPLv2 (GNU General Public License Version 2)Кроме того, стоит заметить, что большинство программ, выпущенных, под GNU GPLv2, позволяют использование на условиях более поздней версии лицензии.
LGPLv3 (GNU Lesser General Public License Version 3, в девичестве GNU Library General Public License) GNU AGPLv3 (GNU Affero, GNU Affero General Public License Version 3)Как применять лицензии GNU со своими программами Спасибо coh и lorus за то, что о ней вспомнили. Это копилефтная лицензия.
MPL v2.0 (Mozilla Public License Version 2.0)В случае, если проект под GNU GPL, то необходимо сделать используемый в нем код под MPL 2.0 доступным сразу под обеими лицензиями.
Для использования этой лицензии в вашем проекте нужно добавить текст из Exhibit A лицензии в качестве шапки в каждый файл исходного кода. Лицензия не требует указывать copyright в каждом файле, но и не запрещает этого. Также не забудьте добавить в проект файл LICENSE с текстом лицензии.
EPL-1.0 (Eclipse Public License Version 1.0)По просьбе kidar2 добавляю лицензию EPL. Это копилефтная лицензия, но она не совместима с GNU GPL.
При распространении в форме исходного кода программа должна быть доступна под лицензией EPL.
Автору разрешается распространять программу в форме объектного кода под собственной лицензией, при условии, что: эта лицензия соблюдает условия EPL, явно отказывается от любых гарантий и ответственности от лица всех авторов, указывает, что исходные коды программы доступны у этого автора и объясняет, как их получить.
Применение к своему проекту: копия лицензии должна быть включена во все копии программы
Ms-PL (Microsoft Public License)Про лицензию напомнил sensboston. Копилефтная лицензия, несовместимая с GPL. По смыслу схожа с EPL, но написана гораздо, гораздо более человеческм языком. Самая короткая из присутствующих в этой статье копилефтных лицензий.
Обладает даже более слабым копилефтом, чем EPL: если вы распространяете исходные коды проекта, содержащие код под Ms-PL, то все исходные коды проекта должны распространяться под Ms-PL. При этом, распространение в форме объектного кода или бинарной форме позволяется под любой лицензией, не нарушающей Ms-PL. Кроме того, вы обязаны сохранять все копирайты, патенты, торговые марки и указания авторства оригинального кода. Да, лицензия регулирует патентные отношения.
Для применения к своему проекту: скопируйте текст лицензии в ваш проект (например, в файл LICENSE) и распространяйте его вместе с ним.
MITСуществует миф, что лицензия MIT существует. Дело в том, что MIT (Massachusetts Institute of Technology) использовал много разных лицензий. Тот текст, который сейчас называют лицензией MIT, в оригинале являлся лицензией Expat, а еще ранее составлял большую часть лицензии X11. Эта лицензия — разрешительная, без копилефта. Она разрешает использование и изменение кода практически любым образом, при условии, что текст самой лицензии и указание авторства никуда не исчезнут, даже если вы разобьете изначальный проект на части. Также неоспоримое достоинство этой лицензии — небольшой размер. В качестве недостатка отмечают отсутствие регулирования патентных отношений. Из-за этого вместо нее GNU рекомендуют использовать другую разрешительную лицензию — Apache 2.0, а MIT предлагают использовать лишь для небольших проектов. Тем не менее, из разрешительных лицензий эта, пожалуй, самая известная.
Для ее применения к своему проекту создайте текстовый файл LICENSE и поместите текст лицензии туда, а также не забудьте заменить данные в строке с копирайтом на верные. Многие дополнительно указывают полный текст лицензии в шапке каждого файла исходного кода.
Apache 2.0Наиболее современная и сбалансированная из разрешительных лицензий. Написана человеческим языком, но с оглядкой на современное правоприменение, в частности, упомянутые выше патентные отношения (пункт 3 лицензии). GNU советуют применять именно эту лицензию, когда вам необходима разрешительная лицензия.
Для применения лицензии Apache 2.0 к вашему проекту, нужно добавить в него файл LICENSE, содержащий текст лицензии. Кроме того, в APPENDIX лицензии нам предлагают добавлять в качестве шапки в каждый файл исходного кода следующий текст:
Но при этом сама лицензия выдвигает следующие требования:
copyright notice — это как раз строка, указывающая правообладателя. А «made available under the License, as indicated» означает, что еще должна быть явно указана лицензия. То есть, допустимо что-то вида:
Причем, совсем необязательно в исходном коде — Apache 2.0 позволяет для этого использовать файл NOTICE («or attached to the work»).
И еще о файле NOTICE: если в вашей работе вы используете чужой проект под лицензией Apache 2.0, содержащий свой файл NOTICE, то в этом случае вы обязаны копировать в производную работу содержимое файла NOTICE, в одно из трех мест: либо в аналогичный файл NOTICE, либо в исходные коды или документацию, распространяемую вместе с производной работой, либо в вывод производной работы (например в about-диалог); все согласно пункту 4 (d) лицензии. Заметьте, что, вопреки расхожему мнению, обязательного наличия файла NOTICE лицензия не требует.
При распространении в бинарной форме, вы, кроме того, должны предоставлять копию лицензии вместе с программой.
BSDЭто разрешительная лицензия, схожая по смыслу с лицензией MIT. Оригинальная лицензия BSD состояла из 4-х пунктов, но, впоследствии, 3-й пункт, требовавший включать уведомление об авторстве во все рекламные материалы, был исключен. Кроме того, существует и двухпунктовая лицензия BSD, о которой напомнил Athari, в ней удален третий пункт, и эта версия практически совпадает по функциональности с лицензией MIT. GNU советуют вместо лицензии BSD использовать MIT, чтобы исключить путаницу с тем, какая именно версия лицензии BSD используется.
Для ее применения к своему проекту создайте текстовый файл LICENSE и поместите текст лицензии туда. Не забудьте добавить строку с копирайтом. Также, дополнительно можно указать полный текст лицензии в шапке каждого файла исходного кода.
При распространении в бинарной форме лицензия и копирайт должны быть представлены в документации и/или других материалах, распространяемых вместе с бинарником.
WTFPL Version 2Как оказалось, весьма популярная на Хабре лицензия (спасибо Komzpa, Stasik0 и плюсовавшим). Кроме того, она присутствует в списке лицензий GNU, хотя они и постеснялись разместить ее текст на своем сайте.
GNU классифицируют ее как разрешительную некопилефтную лицензию и не рекомендуют ее использовать без каких-либо объяснений. Вместо нее предлагаются MIT или Apache 2.0.
- во-первых, лицензия содержит лексику, которая может считаться ненормативной (и я не уверен, что в таком случае лицензию будут принимать в расчет, скажем, в суде),
- во-вторых, в лицензии никак не прописан отказ от ответственности,
- в-третьих, у меня есть подозрение, что разрешение пользователю делать с кодом все что угодно тоже может быть оспорено юристами.
Еще одна лицензия, набравшая плюсов в комменатриях (спасибо JDima и плюсовавшим). Это тоже разрешительная лицензия, которая пытается разрешить все (ключевое слово «пытается») и содержит необязательное условие поставить автору пива (в других версиях, выпить в честь автора) при встрече, если вам понравился его проект.
Как известно, «чрезмерное употребление пива вредит вашему здоровью». Но беда этой лицензии не в пиве. Обратите внимание на фразу
Общественное достояние (Public Domain) CC0 (Creative Commons CC0)Creative Commons CC0 — лицензия, которая пытается перевести проект в общественное достояние в максимальной форме, разрешенной законом. А если закон не позволяет это совершить, автоматически применяет положения разрешительной лицензии. GNU рекомендует применять CC0 в том случае, если вы хотите перевести вашу работу в общественное достояние.
Про применение CC0 к проекту можно прочитать в этой статье.
UnlicenseПро лицензию напомнил Athari. Эта лицензия появилась путем копипасты текста о передаче в общественное достояние и отказа от прав (waiver) проекта SQLite и отказа от гарантий из лицензии MIT. Аналогично лицензии CC0, Unlicense пытается перевести работу в общественное достояние и послужить в виде лицензионного договора на случай, если этого не произошло. Однако, эта лицензия менее проработана, чем CC0, из-за чего может являться нелегальной. Вот в этом вопросе на stackexchange подробнее. Вкратце, там указано, что лицензия явно нелегальна, например, в Германии, так как там, похоже, нет понятия общественного достояния. А Unlicense, в отличие от CC0, не отказывается от перевода в общественное достояние для случая, когда это противоречит закону. Кроме того лицензия как минимум нелогична (или даже противоречива), так как передача в общественное достояние, заявленная в первой строке, в случае успеха делает невалидными параграфы, следующие за ней.
Для применения Unlicense нужно добавить файл с текстом лицензии к вашему проекту. Авторы лицензии рекомендуют назвать файл UNLICENSE.
Copyright в исходникахНаверное, вы заметили, что многие лицензии предлагают размещать определенный текст в виде комментария в шапке файла? Если это является обязательным требованием, то тогда ему нужно следовать. Но насколько необходим подобный текст, если явного требования лицензия не предъявляет?
Хорошие новости: в таком случае лицензию и даже копирайт совершенно не обязательно указывать в шапке файла. Ваша работа и так ваша, для подтверждения этого указывать копирайт нет необходимости. Подтверждать авторство или обладание правами вам все равно придется другими способами, а текст лицензии может находиться в отдельном файле.
- Он четко показывает, что права на код кому-то принадлежат. Отмазки вида «я не знал, там не написано, не смог найти, не заметил» уже не прокатят. Иначе говоря, наличие такого заголовка предотвращает случайное неправомерное использование кода, а также может увеличить ответственность за намеренное.
- Дает возможность идентифицировать владельца прав на код, чтобы связаться с ним в том числе и по вопросам правомерности использования этого кода.
- Copyright — так как в некоторых странах одного символа копирайта недостаточно для юридической значимости уведомления.
- © — символ копирайта, в большинстве стран он необходим и достаточен для придания юридической значимости уведомлению. Простой буквы c в скобках ( c ) для этого может быть недостаточно. Используйте уже Unicode!
- 2007, 2009, 2010 – 2012 — «годы жизни» кода, первое число — год, когда продукт был впервые опубликован, далее — годы, когда код обновлялся. Если годы, когда код в файле правился, идут не подряд, то их нужно указывать через запятую.
- John Doe — имя владельца авторских прав. Не автора, это могут быть разные лица! Может быть именем человека, названием компании, или именами нескольких человек. Правда, в последнем случае лучше сделать отдельную строчку на каждого человека.
- All rights reserved — «все права защищены», означает, что указанные лица обладают всеми правами на код. Дополнительное усиление уведомления копирайта, в случае обладания исключительными правами.
- Если возможно, то дать ссылку на лицензионный договор или указание, где его искать.
- Указать контактные данные.
Ну и, на всякий случай, примеры
ЗаключениеРазместить ваш проект в интернете и написать «пользуйтесь все!» еще недостаточно для того, чтобы им действительно начали пользоваться. И речь не о рекламе или полезности конкретного проекта. Часто необходимо четкое понимание, как можно и как нельзя использовать проект, особенно, если цели использования — коммерческие. В том числе, слова «пользуйтесь все» вряд ли удастся представить договором с правообладателем в случае каких-либо проблем.
При выборе лицензии задумайтесь, в первую очередь, о том, что лицензию вы пишете в большей степени не для себя, а для тех, кто вашим кодом будет пользоваться. Она регулирует ваши отношения с ними. Кто будет использовать ваш код? Как они будут его использовать? Какая из лицензий будет им удобнее? Какие проблемы из-за лицензии могут возникнуть у них? А у вас? Ответив на подобные вопросы, можно подобрать наилучшую лицензию.
В свою очередь, если вы используете чужой проект в своих целях, то нужно понять ограничения, накладываемые на вас его лицензией. Подходят ли они вам, сможете ли вы выполнить эти требования?
Лицензия, даже свободная, является договором между правообладателем и пользователем. Старайтесь рассматривать это именно так.