В этом посте я дам метаинформацию об авторском праве и свободных лицензиях. Т. е. то, что должен знать каждый, кто пишет свободное ПО. Я не буду останавливаться на конкретных примерах таких лицензий, это вы сможете найти где-нибудь ещё в интернете. Также, я немного поговорю о GPL. Сразу скажу, что я не юрист, и мог где-то ошибиться. Весь этот пост применим почти ко всем развитым странам, в том числе к России и Америке (правда, к сожалению, авторизированного перевода GPL на русский язык нет, а потому она недействительна в России). Везде, где я говорю про GPL, я имею в виду GPL третьей версии, хотя почти вся эта информация применима и к GPL 2, и, скорее всего, будет применима к последующим версиям.
Авторское право
Любой продукт интеллектуального труда автоматически становится объектом авторского права. Всевозможные «Copyright», «All right reserved», «©» и т. д. не обязательны. Регистрация авторского права не нужна, однако, она может пригодиться, чтобы потом доказать, что вы действительно являетесь владельцем авторских прав, например, в суде. Т. е. если вы, например, написали программу, выложили её в интернет, не подписались, не написали «Copyright» и т. д., то вы всё равно являетесь владельцем авторских прав на неё. Но вот далеко не факт, что у вас получится, в случае чего, это доказать.
Что значит авторское право? Кто-то может подумать, что это право брать денежные отчисления за использование произведения. Да, это так, но авторское право включает в себя не только это. Авторского права — это право устанавливать любые ограничения и условия (т. е., собственно, лицензию) на использование произведения, в том числе право требовать отчисления. Например, какой-нибудь программист может потребовать, чтобы его программу использовали только стоя на одной ноге. И он будет прав. И любой, кто не подчинится этому условию, будет нарушать закон.
Если автор не уточняет, каковы условия использования продукта, т. е. не устанавливает лицензию, то автоматически всё становится запрещено. Т. е. любое использование становится запрещённым без согласования с автором. Вот так вот. Например, если вы выкладываете что-то в интернет, не указывая условий использования, то даже если вы не подписываетесь и не ставите копирайтов, вы, оказывается, запрещаете любое использование произведения. Вы можете спросить: «А разве факт выкладывания в интернет не говорит, что я разрешаю делать с продуктам всё что угодно, ну или хотя бы хоть что-то?» Нет, не говорит.
Ну, может быть, какое-то минимальное использование всё-таки разрешается. Например, если вы выложили в интернет фотографию, то, пожалуй, людям можно на неё смотреть. Но вот передавать её друг другу люди права не имеют.
Впрочем, тут есть приятная мелочь. В некоторых странах есть фиксированный список вещей, которые разрешены в любом случае, и которые автор не в силах запретить. В Америке это так называемое «добросовестное использование», в России — «свободное использование произведения», см. подробности в Википедии.
Срок авторского права ограничен. Когда он заканчивается, контент переходит в так называемое общественное достояние. Когда контент находится в общественном достоянии, за его автором всё равно остаются так называемые неимущественные авторские права. В основном это право на имя, т. е. никто не имеет права называть это произведение своим.
По Бернской конвенции авторские права сохраняются в течение всей жизни автора и в течение 50 лет после его смерти. Некоторые страны продлевают этот срок, в России он равен 70 годам. Если автор неизвестен, то срок отсчитывается с момента публикации произведения.
Автор может сам передать свой материал в общественное достояние. Но, к сожалению, не существует стандартного легального способа это сделать, поэтому для этого лучше воспользоваться специальным юридическим инструментом: CC0.
Итак, произведения делятся на те, которые являются объектом авторского права (их уже можно поделить по используемой лицензии: GPL, BSD и т. д.), и те, которые не являются, т. е. общественное достояние.
Таким образом, если вы выкладываете что-то в интернет для общего пользования, нужно обязательно указывать лицензию, либо указывать, что это общественное достояние, иначе по умолчанию всё запрещено.
Свободные лицензии
А теперь давайте подробнее поговорим про свободные лицензии (GPL, BSD и т. д.).
Свободное, открытое, бесплатное, некоммерческое. Свободное ПО (free software) — это ПО, распространяемое на условиях свободной лицензии (либо находящееся в общественном достоянии), а свободная лицензия — это та, которая даёт пользователю право:
- Использовать программу
- Изменять её исходный код
- Распространять программу
- Распространять изменённые версии
Более точно, свободная лицензия — это та, которая удовлетворяет Free Software Definition. FSF ведёт список лицензий, которые он считает свободными.
Как бы это странно не звучало, но если человек написал программу и никому её не даёт, то это свободное ПО. Т. к. у этого ПО один пользователь и он имеет упомянутые выше 4 права. Столлман подтверждает: «If the operator developed them and uses them without distributing copies, they are free in a trivial sense since every user (there's only one) has the four freedoms».
Открытое ПО (open source software) — это ПО, распространяемое на условиях открытой лицензии (либо находящееся в общественном достоянии), а открытая лицензия — это удовлетворяющая Open Source Definition. OSI ведёт список лицензий, которые он считает открытыми.
По сути Open Source Definition не отличается от Free Software Definition, поэтому можно считать, что «свободный» и «открытый» — это синонимы, хотя бывают исключения. OSI признал Artistic License 1.0 открытой лицензией, в то время как FSF не признал её свободной.
Свободное и открытое ПО — это совсем не то же самое, что бесплатное. Red Hat Enterprise Linux — это свободное ПО, и при этом платное. Skype — это бесплатное ПО, и при этом несвободное.
Свободное и открытое ПО — это не то же самое, что некоммерческое. Практически все сколько-нибудь крупные свободные проекты (Linux, gcc, glibc, Gnome, FreeBSD, clang и многие другие) являются коммерческими в том смысле, что есть фирмы, заинтересованные в существовании этих проектов, которые разными способами помогают этим проектам (передают этим проектам деньги, нанимают разработчиков этих проектов, вносят код). И разумеется, есть полно некоммерческого и при этом несвободного софта, например, маленькая софтина, выложенная в интернет без исходных текстов.
При публикации материала на условиях свободной лицензии рекомендуется указывать:
- Слово «Copyright» на английском языке и знак копирайта © (это необязательно, но всё же желательно)
- Год публикации произведения (для использования при подсчёте срока окончания авторских прав)
- Имя автора (без автора нет авторского права, а без него — лицензии)
- Собственно, саму лицензию
Авторское право первично, а лицензия вторична. Это значит, что лицензии без авторского права быть не может. Когда истекает срок авторских прав, лицензия тоже перестаёт действовать. Если, скажем, кто-нибудь выложил в интернет программу под лицензией GPL, то в определённый момент авторские права истекут, программа станет общественным достоянием, а значит, истечёт и срок действия GPL.
Когда вы публикуете материал на условиях свободной лицензии, вы не отказываетесь от авторских прав (разве что можно сказать, что вы отказываетесь от части авторских прав). Наоборот, вы сохраняете авторское право за собой и именно это даёт вам право установить на ваш контент эту свободную лицензию. Лицензия — это договор между автором и пользователем. Лишь автор своим правом автора может устанавливать лицензию и менять её. Выкладывание контента в интернет ничем принципиально не отличается от других способов распространения, от передачи каждому пользователю лично. Если вы выкладываете материал в интернет, то можно сказать, что вы даёте его каждому пользователю в отдельности, заключая с ним договор, т. е. лицензию.
Свободные лицензии неотзывные, если в них не указано противное. Поясню на примере. Предположим, что автор выложил программу в интернет, и какие-то пользователи её скачали. Затем он поменял лицензию, указанную в интернете (как я уже сказал, он имеет на это право как автор). Тогда новые пользователи скачают эту программу на условиях новой лицензии. Но старые пользователи сохранят право использовать эту программу на условиях старой лицензии.
Каждая новая версия программы — это новый копирайт. Сроки авторских прав разных версий программы могут истекать независимо друг от друга. Если ядро Linux будет существовать тысячу лет, то по прошествии этого срока актуальная на тот момент версия ядра всё равно будет объектом авторского права, т. к. каждый новый патч — это новый копирайт. А вот срок действия авторских прав для старых версий ядра к тому моменту запросто может истечь.
Копилефт — это частный случай копирайта, а ни в коем случае не его противополжность. Копилефтные лицензии, например, GPL, работают за счёт того, что авторы сохраняют авторское право (копирайт) за собой. Поэтому при публикации контента на условиях GPL или любой другой лицензии надо писать именно «Copyright», а не «Copyleft» и не что-нибудь ещё.
Free Software Foundation (FSF) — обычная организация, как и любая другая. Он ничем не выделен юридически. Я читал где-то в интернете, что «Вы можете опубликовать программу под GPL двумя способами: оставив авторские права за собой, либо передав их FSF». Ну да, как и любой другой организации. Вот только передавать права FSF, даже не предупредив его об этом — это глупо. Передавать права FSF нужно в единственном случае — если вы делаете contribution (вклад) в официальный пакет GNU (и даже в этом случае это верно не для всех пакетов GNU). В этом случае нужно будет подписать и отправить специальный документ в FSF.
Более того, я читал в интернете, что публикуя контент под GPL, вы тем самым автоматически передаёте авторские права FSF, или даже Столлману лично. Я думаю, не нужно пояснять, что это не так. Да, в тексте GPL (возмём, например, GPL 3) написано «Copyright © 2007 Free Software Foundation», но этот копирайт относится к тексту самой лицензии, а не к вашему произведению.
Все запреты в тексте лицензии не являются абсолютными. Если что-то запрещено, это всего лишь означает, что это разрешено лишь при согласии автора. Автор может по своему желанию разрешить всё что угодно кому посчитает нужным, и вообще раздавать свой контент разным людям на условиях разных лицензий. Сам автор вообще может использовать свой материал как хочет и не может быть скован своими же лицензиями. Например, лицензии, запрещающие коммерческое использование (такие как CC BY-NC) рекомендуется использовать лишь в одном случае: когда вы собираетесь коммерчески использовать произведение самостоятельно либо когда вы собираетесь разрешить отдельным людям (или организациям) коммерческое использование за деньги. Если же вы публикуете под CC BY-NC и при этом не зарабатываете на этом материале сами, то поступаете подло (ни себе — ни людям).
Или возмём такой пример: некоторые компании, например, Digia, владелец Qt, зарабатывают на так называемых исключениях из GPL. Это значит, что они публикуют код на условиях GPL, но при этом могут за деньги дать вам код на условиях другой, менее ограничительной лицензии.
На сайте Qt было написано следующее очень удачное сравнение, которое я сейчас не могу найти. Можно сказать, что у автора находится бесконечное количество экземпляров его произведения. Каждый раз, когда он даёт кому-то контент, он в этот момент выбирает, на каких именно условиях он его даёт (и по умолчанию пользователь получает право распоряжаться этим контентом на этих условиях до окончания авторских прав, и автор не сможет этого отменить, ну а после окончания авторских прав пользователь вообще может делать с этим контентом всё, что угодно). Но после этого у автора остаётся ещё бесконечность экземпляров произведения, и он может давать их кому хочет на каких хочет условиях.
Ну а передача самих авторских прав — это передача самой этой бесконечной охапки. Т. е. передача самого права решать, кому и как использовать. При этом у изначального автора его авторских прав уже не остаётся (кроме неимущественных).
Двойное лицензирование — это (если не указано противного) две лицензии, соединённые союзом «или» (то же самое относится к тройному лицензированию и т. д.). Т. е. пользователь может выбрать, на условиях какой из этих лицензий он будет пользоваться материалом. Вернёмся к аналогии с бесконечностью экземпляров: автор даёт пользователю сразу два экземпляра произведения, каждый из них на условиях своей лицензии. Пользователь может выбрать любой из этих экземпляров. Ну а если обе лицензии разрешают дальнейшее распространение, то пользователь может распространять продукт под двойным лицензированием дальше (т. е. распространять оба экземпляра).
При таком двойном лицензировании (в отличие от двойного лицензирования с союзом «и», о котором пойдёт речь дальше) любая лицензия совместима с любой другой. Т. е. нельзя сказать: «Двойное лицензирование под лицензией „A или B“ невозможно, т. к., скажем, лицензия A запрещает это». Потому что при двойном лицензировании автор фактически просто распространяет материал по одной лицензии, и кроме этого распространяет ещё и по условиям другой. И, ясное дело, первая лицензия не может запретить вторую.
Также, существует двойное лицензирование с союзом «и». Т. е. когда автор передаёт пользователю произведение, требуя соблюдения обеих лицензий сразу. И вот тут уже возникает понятие совместимости лицензий. Например, лицензия BSD не запрещает такое совместное распространение с другими лицензиями. И поэтому распространие по лицензии BSD и какой-то ещё возможно (при условии, что это не запрещено второй лицензией). А вот GPL запрещает накладывание существенных дополнительных ограничений сверх GPL (какие именно ограничения считаются существенными — см. GPL). Поэтому лицензия «GPL и BSD» возможна (BSD не накладывает существенных ограничений сверх GPL), а вот лицензия «GPL 2 и GPL 3» (в отличие от «GPL 2 или GPL 3») — невозможна, т. к. GPL 3 накладывает существенные ограничения сверх GPL 2 и наоборот.
Поэтому, когда вы пишите, что программа распространяется на «условиях GPL версии 3 или выше», убедитесь, что вы пишите именно «или», а не «и».
Можно ли менять лицензию чужого произведения? Разумеется, нет. Но вы имеете право наложить дополнительные ограничения (они будут соединены с изначальной лицензией союзом «и») и распространять произведение дальше (с изменениями либо без) при условии, что начальная лицензия это разрешает. Все свободные лицензии разрешают внесение изменений и дальнейшее распространение (на то они и свободные). И при этом, как я уже сказал, некоторые из них (BSD) разрешают навешивание любых дополнительных ограничений, а некоторые (GPL) — лишь некоторых. Это значит, что если есть произведение под лицензией BSD, то вы можете распространять его дальше под лицензией «BSD и GPL» (что эффективно будет эквивалентно просто GPL, т. е. получится, что вы эффективно сменили лицензию). Но сменить таким образом лицензию с GPL на BSD, разумеется, нельзя.
Смешение в одном проекте кода под разными лицензиями. Некоторые лицензии (BSD) не накладывают никаких ограничений на совместное использование с другими. Т. е. если один файл (или один фрагмент кода) в вашем проекте имеет лицензию BSD, то это никак не ограничивает лицензии другого кода (при условии, что эти лицензии допускают использование с BSD). Но GPL требует, чтобы весь код, которые статически или динамически линкуются с GPL-кодом, тоже имел лицензию GPL. Ну а если этот другой код изначально имел лицензию, отличную от GPL, то эта лицензия соединяется с GPL союзом «и», при условии, что это возможно. Если же это невозможно, то распространять такой проект нельзя.
Например, наш проект состоит из двух файлов: под лицензией BSD и под лицензией GPL, и эти файлы линкуются. Тогда весь проект приобретает лицензию GPL. Тот файл, который был под BSD, становится «BSD и GPL», т. е. по сути GPL (но уведомление о лицензии BSD из него всё равно убирать нельзя, т. к. это уведомление это запрещает).
Другой пример: проект состоит из двух файлов: под лицензией GPL 2 («GPL 2 only», т. е. «no later version») и GPL 3 (то же самое), и они линкуются. Тогда GPL 2 «заражает» второй файл, и он приобретает лицензию GPL 2, и становится «GPL 2 и GPL 3». То же самое происходит и в обратном направлении. Но мы с вами знаем, что лицензия «GPL 2 и GPL 3» невозможна. Значит, распространение такого проекта запрещено из-за несовместимости лицензий.
Распространённая практика в свободных проектах. У любого свободного проекта фиксирована лицензия, по которой он распространяется. Также, проекты бывают двух видов: те, в которых права на весь код передаются какой-то одной организации, и те, в которых все участники оставляют права за собой. Первый случай можно условно разбить ещё на два:
- Это пакет GNU, и все права на код передаются FSF (напомню, что не во всех пакетах GNU принята передача прав FSF). Права передаются для того, чтобы гарантировать, что пакет всегда будет оставаться свободным, т. е. не дать участникам выбрать для пакета какую-нибудь другую лицензию, отличную от GPL, или раздавать исключения из GPL
- Это проект коммерческой фирмы, и она собирает авторские права себе специально для того, чтобы продавать исключения из лицензии или чтобы оставить за собой возможность сменить лицензию
Сразу хочу заметить, что коммерческие проекты не несут в себе ничего плохого сами по себе. Как я уже писал выше, многие свободные проекты коммерческие. И далеко не во всех коммерческих проектах принята передача прав на код одной организации. Но к тем проектам, где принята такая передача, отношение в сообществе свободного ПО отрицательное (если это не FSF). Например, в спорах sysvinit vs upstart vs systemd одним из важных аргументов против upstart было то, что в этом проекте принята передача прав компании Canonical, что неприемлемо для сообщества свободного ПО.
Когда кто-либо делает вклад в проект, в котором не принята передача прав, то он оставляет авторские права за собой и передаёт код на условиях той лицензии, которая принята в проекте. И это подразумевается по умолчанию, т. е. это будет верно, даже если участник передал свой код без всяких комментариев.
Например, практически все, кто делали вклад в ядро Linux (в этом проекте не принята передача прав одной организации), оставили права со собой (т. к. это предполагается по умолчанию), даже если они не вписали копирайт со своим именем в начало какого-нибудь файла. И все они передали свой код проекту на условиях лицензии GPL 2. Теперь, чтобы сменить эту лицензию, потребуется согласие всех участников, а это огромное число человек. Если какая-нибудь компания захочет купить исключение из GPL, ей придётся подкупить всех этих людей, и при этом отдельную проблему будет представлять собой даже всех их найти. Таким образом, «покупка ядра» практически невозможна. Подробнее можете почитать об этом в статье Buying the kernel.
Если кто-либо делает вклад в проект, в котором принята передача прав некой организации, то обычно он подписывает специальный документ и отправляет его в эту организацию. После этого его код становится доступен в рамках этого проекта на условиях лицензии проекта, но организация может в дальнейшем эту лицензию поменять.
Также, возможны проекты, где участники сохраняют права за собой, но при этом всё равно подписывают и отправляют документы, подтверждающие то, что они действительно владеют правами на передаваемый код. Отсылая эти документы, они подтверждают, что, например, не украли где-нибудь этот код.
Про тех, кто пишет свободный код, и при этом работает в фирме. Если сотрудник пишет код по заданию своего работодателя, то в подавляющем большинстве случаев авторские права на полученный код принадлежат последнему. Кому принадлежат права на код, наприсанный на работе, но не по заданию, либо в свободное от работы время, зависит от трудового договора. В частности, у меня в трудовом договоре было написано, что работодателю принадлежат права на код, написанный с использованием рабочего места (ещё там было написано, что я не имею права разглашать условия договора, но мне по фиг :)). Ну а поскольку в случае чего (например, на суде) будет довольно трудно выяснить, писал сотрудник код на рабочем месте и в рабочее время или нет, то весь код, написанный этим сотрудником, подозрителен на предмет принадлежности этой фирме.
Поэтому, в тех проектах, где принята передача прав одной организации, в документах, подтверждающих эту передачу, требуется подпись не только самого автора кода, но и его работодателя, если он есть. А если этот автор учится или работает в вузе, то подпись представителя этого вуза.
GPL
Кратко суть GPL можно выразить так: эта лицензия разрешает всё что угодно, но при этом:
- При дальнейшем распространении лицензия должна сохраняться
- Вместе с бинарниками должны распространяться исходные тексты (либо должно распространяться обещание предоставить их по требованию, далее я не буду это упоминать)
- Всё, что линкуется (статически или динамически) с кодом под GPL, тоже подпадает под действие GPL
По сути, единственное ограничение, накладываемое GPL — это то, что при распространении бинарников нужно распространять и исходники тоже. Никаких других ограничений, можно сказать, нет. Не требуется публикация исходников или бинарников в интернете или где-либо ещё. Не требуется предоставление исходников и бинарников кому-либо по требованию (разве что требуется предоставление исходников тому, кто уже получил бинарники). Не требуется, чтобы программа распространялась бесплатно. Обо всём об этом будет рассказано подробнее дальше.
Так кому адресована GPL? Предположим, что Алиса написала программу и передала её на условиях лицензии GPL Бобу. Тогда Боб в соответствии с этой лицензией получает право дальнейшего распространения. Допустим, он решил передать программу Кэролу. Тогда он обязан передать её только на условиях GPL. И если он передаёт бинарники, он обязан передать и исходники тоже. Обратите внимание, что эти обязательства возникают лишь при второй передаче (от Боба к Кэролу), а не при первой (от Алисы к Бобу). Почему? Да потому что Алиса — автор. И как автор она может делать вообще всё, что угодно, и никому ничего не обязана. Автор всегда может нарушить свою же лицензию, я уже писал об этом выше. В частности, автор может объявить, что распространяет некую программу на условиях GPL и при этом не распространять исходных текстов, и он не будет нарушать при этом закон. А вот те, кто будут распространять эти бинарники дальше — будут.
Например, однажды произошёл случай, который иначе как facepalm не назовёшь: обнаружено нарушение GPL в GNU Emacs. Выяснилось, что в течение долгого времени с Emacs распространялись сгенерированные компьютером файлы без исходных кодов. Подробнее можете прочитать здесь: В GNU Emacs обнаружен факт нарушения лицензии GPL. Я здесь хочу заметить вот что: сами авторы Emacs и FSF, которому принадлежат права на Emacs, не нарушили тем самым GPL. Потому что владельцам авторских прав можно всё. А вот те, кто распространяли Emacs дальше (например, дистрибутивы GNU/Linux) — нарушили. Это подтвердил и Столлман, в своём письме: «Anyone redistributing those versions is violating the GPL». Затем Столлман издал специальный документ, разрешающий распространение тех версий Emacs без полных исходников.
Таким образом, ограничения, накладываемые GPL, да и вообще, реальное действие лицензии возникают лишь начиная со второй передачи кода. Т. е. лицензия начинает действовать лишь тогда, когда возникают как минимум три действующих лица: автор (Алиса), передающий (Боб) и получающий (Кэрол).
Давайте ещё раз разберёмся, кто есть кто, кому обращена лицензия, кто подразумевается под словом «you» в лицензии и т. д. Предположим, Алиса написала программу, установила на неё лицензию GPL и передала программу Бобу. Затем Боб начал читать лицензию, она обращена именно к нему, и «you» в тексте лицензии означает его, Боба. Лицензия сообщает Бобу, какие у него есть права (например, запускать программу) и обязанности (например, распространять бинарники только вместе с исходниками). Права и обязанности начинаются только с этого места. Сама Алиса имеет вообще все права, какие можно, и никаких обязанностей. Лицензия даёт Бобу право передать программу Кэролу. И если Боб передаст Кэролу программу без исходников, он нарушит лицензию. Вообще, нарушение лицензии осуществимо лишь при наличии как минимум трёх человек. И единственный из этих трёх (Алиса, Боб и Кэрол), кто может нарушить GPL — это Боб («может» здесь значит не «имеет право», разумеется, а «технически может»).
И разумеется, в реальности всё может быть сложнее, чем в этом примере: у проекта может быть много авторов, цепочка распространения может быть длинее, некоторые люди в цепочке могут вносить свои изменения и так далее.
GPL не требует публикации ни исходников, ни бинарников ни в интернете, ни где-либо ещё. В тексте GPL нет слова «internet». GPL не требует предоставления ни исходников, ни бинарников по требованию. Т. е. человек, получивший код на условиях GPL и, возможно, внёсший в него какие-то изменения, может давать свой изменённый код тому, кому посчитает нужным. Единственное требование — он обязан дать исходники тому, кому уже дал бинарники.
Я слышал, что какая-то секретная служба России создала свой дистрибутив GNU/Linux для внутреннего пользования и не публикует его. Если это так, то это не является нарушением GPL. Т. к. они не обязаны никому этот дистрибутив давать. Но вот если этот дистрибутив утечёт за пределы службы в любом виде, то человек, получивший его, будет иметь право потребовать исходные тексты дистрибутива, а затем распространять эти исходные тексты дальше на условиях GPL (я сейчас говорю о тех частях дистрибутива, которые имеют лицензию GPL).
Не требуется, чтобы программа (в бинарном или исходном виде) распространялась бесплатно. Единственное требование — если вы даёте бинарники (платно или бесплатно), то вы обязаны дать исходники вместе с ними, либо пообещать, что дадите исходники по первому требованию бесплатно или по цене доставки и физического носителя.
Согласие пользователя с лицензией не обязательно для использования софта. Оно становится обязательным лишь при его распространении. Это значит, что установщик софта не должен выдавать сообщение «Согласны ли вы с этой лицензией?» в процессе установки, в отличие от распространённой практики несвободного софта.
P. S. Я рассказал о GPL далеко не всё. За остальными подробностями см. саму GPL.
Автор: safinaskar