Найти тему

Зачем нужна лицензия в проекте Github?

Оглавление

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

Лицензия на программное обеспечение — это правовой инструмент, определяющий использование и распространение программного обеспечения, защищённого авторским правом.

© Wikipedia Лицензия на программное обеспечение

После такого определения появляется больше вопросов. Если проще говоря, это некий свод правил для распространения и использование вашего кода или программы. И возможно у вас возникал вопрос:
"Что если в проекте не будет лицензии?" или "Что будет если использовать код, у которого нет лицензии?". Но давайте лучше поговорим про лицензии в целом, потом вернёмся к нашим вопросам.

Есть куча статей, в которых объясняются все виды лицензий, к примеру как GNU General Public License, Apache 2.0, MIT, BSD, поэтому я не буду в данной статье объяснять в чём между ними разница.
Мы поговорим о других вещах. К примеру о проблемах данных лицензий, из-за которых страдают как и пользователи, так и программисты. Почему нельзя просто взять и поменять лицензию на своём проекте и почему лицензия важна.

Совместимость лицензий

Допустим вы программист. После года изучения языка программирования, вы поняли что пора... И придумали крутой проект. Вы второпях заходите в Github, нажимаете создать репозиторий вводите название своего проекта, описание. Тут появляется первая проблема на пути. Выбор лицензии. Так как статья не про выбор, то давайте сделаем вид, что мы осознанно выбрали лицензию MIT, который за мир во всём мире.
Ваш проект обрастает кодом, звёздочками, огромным количеством issue и pull request. В процессе создания программы, вы, в проект добавили чужой код не узнав её лицензии и к вам приходит автор. Пишет: "Вы использовали мой код и он под лицензией GNU GPL, а это не совместимо с лицензией MIT. Меняйте лицензию или я запрещу вам использовать мой код". Вы в панике, не понимаете в чём дело и как это произошло.

Давайте разберём эти ситуацию. Есть такая вещь как "Совместимость лицензий".

Совместимость лицензий (англ. License compatibility ) — проблема совместимости лицензий на программное обеспечение , текст которых может содержать противоречивые требования, что делает невозможным объединить исходный код из таких пакетов в целях создания новых пакетов программного обеспечения.

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


Почему от этой проблемы страдают программисты вполне понятно. Но почему пользователи также страдают?
За примерами далеко ходить не нужно. Один из примеров это файловая система ZFS, который, по причинам несовместимости лицензий не мог внедриться в ядро Linux. Подробней можно
прочитать тут. Из-за чего многим проходилось ставить FreeBSD на свой сервер, ради ZFS.

Немного про GNU GPL

Иногда ситуации обстоят немного хуже. Допустим вы написали программу, добавили пакеты других программ и не хотите выкладывать свой код в общий доступ, например по причинам того, что проект корпоративный. Программа нарастает популярностью и в какой-то момент, пользователь обращает внимание, что в вашем коде используется чужой код, который в свою очередь распространяется под лицензией GNU GPL. Если вы сидите в крупной компании, то такая новость будет большим скандалом. GNU GPL требует, что бы ваш код был открытым.

Такое произошло с установочными флешками Windows 7. Когда вскрылось что внутри программы Windows 7 USB/DVD Download Tool используется код под лицензией GPL. Microsoft извинилась, и в последствии открыла исходный код своей программы.

Нельзя просто взять и поменять...

Допустим, вы решили для использования кода с лицензией GPL поменять свою лицензию. Юридически это возможно, однако для этого есть 2 пути. Первый путь это форк своего проекта уже с изменённой лицензии. Второй это договориться со всеми своими контрибьютерами и получить согласие на это, после чего поменять лицензию и удалить старые версии программы, которые были под старой лицензией.
Первый вариант самый простой, но не все это одобрят. К примеру ваш проект был с лицензией MIT. Люди приходили в ваш проект, исправляли баги, добавляли фитчи. В целом их мотивом было улучшением библиотеки и использование внутри своего кода. Но они просыпаются на утро и видят, что проект находится в архиве, а форк уже под новой лицензией GPL.
Звучит обидно, да?
Поэтому второй путь будет правильнее и не особо. Смена лицензии это частый случай. Возможно
недавняя новость вам о много скажет. Даже если и получится договорится со всеми контрибьютерами, то это не отменяет того, что некоторые программисты могут использовать
ваш код, регулярно обновлять версию библиотеки и не подозревать, что у библиотеки неожиданно сменилась лицензия.

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

И теперь о главном

Что если создать проект и не выбрать лицензию или использовать код у которой её нет? Всё просто. Код без лицензии будет рассматриваться в рамках закона. На ваш и чужой код автоматически накладывается авторское право. А в рамках закона запрещено распространять такой код. И использовать такой код я крайне не рекомендую.

Итого

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

На этом всё. Спасибо что прочитали данную статью. Задавайте вопросы и делитесь мнением в комментариях.