Некоторое время назад я обнаружил набор скриптов, помогающих собирать операционную систему 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, Евгений Симоненко

Комментарии (31)


  1. andreymal
    25.05.2026 19:19

    Даже если лицензия указана в README, LICENSE, COPYING в корне каталоге, вы всё-равно не можете заимствовать эти файлы в свои программные проекты.

    Вы, судя по профилю, не юрист, а есть какой-нибудь комментарий юриста или судебный прецедент, подтверждающий правильность именно такой трактовки?


    1. easimonenko Автор
      25.05.2026 19:19

      Верно, не юрист, как собственно и пишу об этом в лиде к статье. Я тоже надеюсь, что найдётся здесь юрист, которые оставит свой комментарий по этому и другим вопросам. В своём утверждении я основываюсь на здравом смысле. Как вы можете заимствовать файл, в котором не указана лицензия? Вы же не можете вместо автора вписать в файл лицензию, пусть и означенную автором где-то ещё? То же самое можно отметить и про копирайт.


      1. andreymal
        25.05.2026 19:19

        В лицензии написано «this software», что скорее всего охватывает все файлы в репозитории, если не указано иное

        А что делать с бинарниками и прочими файлами, в которых технически невозможно прописать лицензию?


        1. easimonenko Автор
          25.05.2026 19:19

          В лицензии написано «this software», что скорее всего охватывает все файлы в репозитории, если не указано иное

          Специально открыл архивы с исходниками NetBSD. Лицензия указывается в каждом файле. Кроме документации, где просто указывается принадлежность файла NetBSD. Это хорошая практика, хотя не помешало бы и в документацию вставлять лицензию.

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

          А что делать с бинарниками и прочими файлами, в которых технически невозможно прописать лицензию?

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


          1. andreymal
            25.05.2026 19:19

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

            Она указана в файле LICENSE, который охватывает весь «this software», и копирайт берём оттуда же, этого достаточно

            По крайней мере до тех пор, пока какой-нибудь юрист мне не докажет, что такая трактовка неверна

            Как правило это проприетарная лицензия

            У изображений в свободном ПО разумеется нет


            1. easimonenko Автор
              25.05.2026 19:19

              Предположим, что вы разрабатываете и публикуете программу под лицензией BSD 3-Clause. В чужом проекте вы обнаружили полезный исходник под лицензией MIT, указанной в LICENSE, но не указанной в самом файле. Вы его копируете себе в дерево исходников. Под какой лицензией он распространяется?


              1. andreymal
                25.05.2026 19:19

                Под любой, в том числе BSD, потому что лицензия MIT не запрещает перелицензирование. Единственное требование — не забыть скопировать и файл LICENSE тоже


                1. easimonenko Автор
                  25.05.2026 19:19

                  Перелицензирование допускается при явном указании такого права, MIT такого права не даёт.

                  Копирование файла LICENSE не поможет, так как в нём не указано, к какому файлу он относится. Более того, файл с таким именем уже может присутствовать, но с текстом лицензии BSD.


                  1. andreymal
                    25.05.2026 19:19

                    MIT такого права не даёт

                    Фраза «without restriction» прямым текстом даёт разрешение на перелицензирование

                    не указано, к какому файлу он относится

                    И здесь снова нужен юрист, который подтвердит или опровергнет вашу трактовку

                    файл с таким именем уже может присутствовать

                    Поэтому никто не запрещает встроить текст файла LICENSE прямо внутрь взятого исходника


                    1. easimonenko Автор
                      25.05.2026 19:19

                      Фраза «without restriction» прямым текстом даёт разрешение на перелицензирование

                      Фраза ниже:

                      The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.

                      говорит о том, что текст лицензии фактически должен быть сохранён в неизменном виде.

                      Поэтому никто не запрещает встроить текст файла LICENSE прямо внутрь взятого исходника

                      Возможно разрешение на sublicense это позволяет, но я не юрист, поэтому не берусь утверждать однозначно.


                      1. andreymal
                        25.05.2026 19:19

                        текст лицензии фактически должен быть сохранён в неизменном виде.

                        И не содержит никакого запрета на перелицензирование

                        Поэтому MIT-код активно используется в проприетарных программах: текст лицензии сохранён в каком-нибудь NOTICE.txt, но при этом права на «copy, modify, merge, publish, distribute, sublicense» у вас успешно отбирают, потому что программа проприетарная

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


                      1. easimonenko Автор
                        25.05.2026 19:19

                        Причина не во фразе without restrictions. А в том, что большинство лицензий, включая MIT, не содержат требования предоставления исходных текстов. И линковаться код может с кодом под любой лицензией. А вот GNU GPL здесь в исключительной позиции.