Некоторое время назад я обнаружил набор скриптов, помогающих собирать операционную систему GNU из исходников. К моему сожалению, в исходниках не содержалось указание на лицензию, под которой они распространяются. Я написал их автору, что отсутствие указания лицензии делает скрипты проприетарными, а это противоречит духу проекта GNU. Ответа я не получил…
Не опускайте лицензию и копирайт в своих исходных текстах, если, конечно, вы их кому-то предоставляете. Я регулярно заглядываю в открытые исходники и часто вижу, как их авторы допускают ошибки, касающиеся авторских прав и лицензирования. И хотя я не юрист, а лишь осведомлённый дилетант, позволю себе здесь рассказать о часто встречающихся проблемах с лицензиями на исходные тексты программ. Моя цель не руководство к действию дать, а поднять наболевшую проблему наверх. Это важно, если мы хотим оставаться в рамках закона и при этом быть защищены. Это нужно, чтобы открытые исходники и свободные программы не были лишь набором слов, а реальным инструментом в достижении наших целей.
Введение
Ещё двадцать лет назад понятия свободного программного обеспечения и открытых исходных текстов были неведомы чуть менее чем всем пользователям компьютеров, да что там говорить, самим программистам. Linux, BSD, OpenOffice, Gimp были диковинкой и вызывали удивление. Но Мир изменился. Опубликованным исходникам нет счёта, и мало кому из, по крайней мере, программистам, нужно объяснять, что это такое. Мир изменился, но люди нет. Невежество и чванство никуда не делись. Изучая чужие разработки в исходниках, не перестаю замечать, как много проектов игнорируют необходимость указания лицензии и копирайта.
Почему указание лицензии важно? Лицензия даём нам, как пользователям программ, так и программистам, изучающим чужие исходные тексты и использующим их в своих программах, чётко обозначенные права (разрешения) и ограничения (запреты). Отсутствие же лицензии означает одно: вам не предоставлено никаких прав, вообще.
Лицензии бывают разные. Часть из них являются лицензиями свободных программ, часть нет. Некоторые из них совместимы между собой, некоторые нет. Я очень рекомендую вам прочитать указанное руководство от проекта GNU.
Свобода программы подразумевает следующие четыре свободы:
-
Свобода использования.
-
Свобода изучения и изменения.
-
Свобода распространения копии.
-
Свобода распространения изменённой версии.
Некоторые думают, что отсутствие лицензии означает передачу в общественное достояние (Public Domain). И что вы можете делать с исходниками всё, что вам заблагорассудится. Это совсем не так. Для вас это означает абсолютно противоположные вещи.
Если лицензия не указана, то ни одна из свобод вам не предоставлена. Вам вообще не предоставлено никаких прав. Представьте себе, свободный доступ к исходникам не означает, что вы можете с ними что-либо делать. Даже изучать! Тем более вы не можете их копировать, использовать как-либо, например, компилировать и запускать полученный код, заимствовать из них исходный текст в свои разработки, передавать кому-то ещё.
Передача в Public Domain осуществляется явно посредством специальной лицензии, например, Unlicense, CC0.
Если лицензия указана, вы обязаны её изучить, так как благодаря ей вы получаете определённые права на программный код. Обычно текст лицензии содержит перечисление того, что вы можете делать с данной программой, например, использовать, изменять, распространять, продавать. Большинство таких лицензий относятся к категории свободных.
Однако в лицензии могут быть указаны запреты, например, нельзя изменять, нельзя распространять изменённую версию, нельзя продавать, нельзя использовать с определёнными целями. Большинство программ с такими лицензиями не являются свободными. И нужно быть с ними очень осторожными.
Итак, будьте осведомлены и не будьте невеждами.
Давайте разберём типовые ошибки авторов программ, и поджидающие у их пользователей проблемы.
Тотальное отсутствие указания лицензии
Одна из встречающихся проблем – полное отсутствие указания лицензии. Вы не находите её нигде: в корне каталога с исходниками, в README, в самих исходниках. Держитесь от таких программ подальше, ибо вам не предоставлено никаких прав ни на весь набор файлов, ни на какую-либо его часть. Всё, что вы можете сделать, это удалить эти исходники со своего компьютера.
Я не знаю, почему некоторые авторы игнорируют необходимость указания лицензии. Возможно из-за лени, возможно от невежества. Возможно они считают, что так передают все исходники в общественное достояние. Или, наоборот, понимают, что предоставленный им код проприетарен и просто дразнят им других и тешат своё самолюбие. Возможно в этом присутствует и злой умысел, кто знает.
Отсутствие указания лицензии в README
README это то, с чем ознакамливаются в первую очередь, и где ожидают получить основную информацию. Если в README нет указаний на лицензию, то это как-минимум создаёт неудобство и вынуждает искать информацию о лицензии где-то ещё.
Самыми подходящими местами, где можно проинформировать о лицензии, являются начало README, в котором автор даёт краткое описание программы, или специальный раздел в конце README. Текст лицензии может быть вставлен в README непосредственно, или в README указывается название лицензии и даётся ссылка на файл с полным текстом лицензии. Имейте ввиду, что в описании лицензии в README должно быть указано, что это лицензия на весь исходный текст программы. В противном случае это будет лицензия на сам файл README!
Отсутствие указания лицензии в файлах исходных текстов
Файлы с исходным текстом это, пожалуй, самая ценная часть любой открытой и свободной программы. К сожалению, я часто встречаю исходники, в которых отсутствует указание на лицензию. И это очень плохо. Это означает, что у вас нет никаких прав на эти файлы с исходниками! Даже если лицензия указана в README, LICENSE, COPYING в корне каталоге, вы всё-равно не можете заимствовать эти файлы в свои программные проекты. Вы не можете вписать лицензию в эти файлы, потому что это должен был сделать автор этих файлов. Вы можете пользоваться такой программной в целом, как есть, но не получаете нужных вам свобод.
Каждый файл дерева каталогов исходных текстов должен содержать указание, под какой лицензией он распространяется.
Отсутствие указания копирайта в файлах исходных текстов
Не менее важная проблема – отсутствие указания копирайта в файлах исходных текстов. Копирайт это строка, в которой указывается дата создания файла и его автор. В некоторых странах, распространение файла без копирайта незаконно. Без копирайта невозможно установить, кто дал вам права на использование этого файла. Если вы включите этот файл в свой проект, то это может быть расценено как нарушение авторского права.
Есть лицензии, позволяющие не указывать или удалять копирайт. Это не решение проблемы, и таких лицензий стоит избегать. Или, по крайней мере, не удалять копирайт, если он присутствует. Если вы получили файл с такой лицензией и внесли в него изменения, то вы не сможете указать своё авторство, так как места для этого нет. А если добавите, то получится, что вы и есть автор файла, что не так и незаконно.
Указание вместо лицензии её краткого названия
Часто авторы программ указывают сокращённое название лицензии: MIT, GNU GPL, BSD, Apache. Здесь кроется несколько проблем. Указание на название лицензии не является самой лицензией. Многие такие лицензии не имеют каноничного теста и источника, например, MIT. Другие же имеют несколько вариантов или версий, как например, BSD, GNU GPL, Apache. Отсутствие полного текста лицензии фактически лишает пользователя самой лицензии.
Полный текст лицензии должен либо, если он краток, находится в исходных текстах непосредственно, либо, если он пространен, в отдельном файле, а исходники должны содержать краткое описание лицензии и ссылаться на полный текст.
Отсылка к тексту лицензии, находящемуся в другом файле
Некоторые авторы вместо описания или текста лицензии непосредственно в исходных файлах дают ссылку на другой файл с лицензией. Это очень неприятная проблема. Потому что вы, если заимствуете файл с таким указанием, должны будете сохранить это указание и сам файл лицензии. Это как минимум неудобно. Но есть и более сложная проблема: перелицензирование. Сегодня вы получили этот исходник под одной лицензией, а завтра авторы внесут изменения в текст лицензии, сменят её на другую, но в исходнике остаётся лишь ссылка на файл лицензии. Как вы докажете, что используемый вами исходник получен под той, а не этой лицензией?
Если лицензия распространённая, как MIT или BSD 3-Clause, или стандартная, как GNU GPL v3 или Apache 2.0, то лучшим решением является указание в исходнике на название лицензии и её краткое описание как в случае с GNU GPL или её полный текст, если лицензия короткая как в случае с MIT.
Другие проблемы с открытыми исходниками
Ошибки с указанием лицензии на исходные тексты программ лишь часть поджидающих нас проблем с открытыми программами. Не менее коварными являются проблемы с торговыми марками, патентами и блобами.
Несвободные лицензии
Одной из причин, по которой я избегаю использования термина открытые исходные тексты, является то, что не все они распространяются под лицензиями на свободные программы, такие как GNU GPL, MIT, BSD. Я не испытываю восторга от новостей про то, что некая компания открыла исходники своего продукта. Я сначала смотрю на лицензию. Затем я смотрю на зависимости этой программы. Знаете, часто обнаруживаю, что лицензия проприетарная, или есть проблемы с торговой маркой, патентами и блобами. А для запуска или сборки программы нужны несвободные программы.
Проблемы с торговыми марками
Как ни странно, в общем виде указание лицензии на свободную программу не делает программу свободной. Одним из неприятных препятствий являются торговые марки. Есть масса популярных программ, которые мы считаем свободными, но они таковыми не являются. Не стану приводиться здесь примеры.
Часто получается обойти эту проблему заимствованием свободных исходных текстов без использования торговой марки исходной программы. Это неудобно, но как-правило работает. Однако, в некоторых случаях это неудобно настолько, что делает практически невозможным создание полностью свободного варианта такой программы.
Проблемы с патентами
Ещё один случай, когда указание свободной лицензии, не делает программу свободной, – программы, реализующие патентованные технологии, либо как-то с ними работающие.
Использовать или не использовать такие программы решать вам. Но лучше создавать программы, не основанные на патентах и не работающие с закрытыми форматами и API.
Проблемы с блобами
Блобы бывают разными. Я подразумеваю под ними файлы, которые нельзя отнести к категории исходных тестов. Эти файлы не предназначены для чтения и редактирования человеком. Или же для этого необходим специальный инструментарий, зачастую проприетарный. Как-правило, блобы лицензируются под проприетарными лицензиями, не предоставляющими нужных нам свобод. Мы можем их использовать, но не имеем права на их изменение, заимствование или распространение. Зачастую мы не знаем, как они устроены и как их редактировать.
Хорошо, если блобов нет совсем. Если есть возможность, то лучшим решением является предоставление исходников, из которых был получен блоб. Например, изображения в векторном формате, бинарники в HEX0-формате.
Резюме
Не будем наивными. Мы живём в мире, где строгость закона никто не отменял. А за нарушение так называемых авторских прав полагается жёсткое наказание. И не все открытые исходные тексты свободны, и не на все нам предоставлены какие-либо права. Поэтому будем внимательны. Лицензии и копирайт важны!
© 2026, Евгений Симоненко
ссылка на оригинал статьи https://habr.com/ru/articles/1039276/