Лицензии ПО (MIT, GPL, Apache, CC)

Материал из llmdocs — справочник разработчика
Портал: Основы CS
Лицензии ПО (MIT, GPL, Apache, CC)
Темалицензирование программ и контента
РазрешительныеMIT, BSD, Apache 2.0, ISC
КопилефтGPL, LGPL, AGPL, MPL 2.0
Для контентаCreative Commons (CC BY, CC BY-SA, CC0), GFDL
ОпределенияOpen Source Definition (OSI), Free Software Definition (FSF)
ИдентификаторыSPDX

Лицензия на программное обеспечение — документ, в котором правообладатель определяет, что другим разрешено делать с программой или текстом: использовать, изменять, распространять и на каких условиях. Без лицензии действует авторское право по умолчанию, и опубликованный код формально нельзя ни копировать, ни менять. Открытые лицензии дают эти права всем, различаясь главным образом тем, требуют ли они сохранять открытость производных работ. Статья носит справочный характер и не является юридической консультацией.

Свободное и открытое ПО

Два близких определения задают рамки:

  • Свободное ПО (Фонд свободного ПО, FSF, Ричард Столлман, 1980-е) — программа, дающая пользователю четыре свободы: запускать для любых целей, изучать и менять, распространять копии, распространять изменённые версии.[2]
  • Открытое ПО (Open Source Initiative, OSI, 1998) — определение из десяти критериев, включая свободное распространение, доступность исходного кода и отсутствие дискриминации по сферам применения.[1]

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

Разрешительные лицензии

Разрешительные (пермиссивные) лицензии позволяют почти всё, включая включение кода в закрытые продукты, при условии сохранения уведомления об авторских правах и текста лицензии.

Лицензия Особенности Примеры проектов
MIT очень короткая, минимум условий Node.js, React, Rails
BSD 2/3-Clause как MIT; вариант 3-Clause запрещает использовать имя автора для рекламы FreeBSD, многие научные библиотеки
Apache 2.0 явная лицензия на патенты, прекращение прав при патентном иске, требование отмечать изменения и сохранять файл NOTICE[4] Kubernetes, Android (большая часть), TensorFlow
ISC эквивалент MIT в упрощённой формулировке OpenBSD, npm-пакеты

Копилефтные лицензии

Копилефт требует, чтобы производные работы распространялись на тех же условиях с открытым исходным кодом.

  • GPL (GNU General Public License): версия 1 — 1989, версия 2 — 1991, версия 3 — 2007.[5] Распространяя программу, включающую GPL-код, нужно открыть исходники всей производной работы. Под GPLv2 выпускается ядро Linux.
  • LGPL — «ослабленная» GPL для библиотек: их можно подключать из закрытых программ, но изменения самой библиотеки нужно открывать.
  • AGPL — GPL с дополнительным условием: если изменённая программа доступна пользователям по сети (как веб-сервис), исходный код нужно предоставить и им.
  • MPL 2.0 (Mozilla) — копилефт на уровне файлов: изменённые файлы остаются открытыми, а остальной код проекта может быть любым.

Совместимость

Код под разными лицензиями можно объединять не всегда. Разрешительный код (MIT, BSD) можно включать в GPL-проекты. Apache 2.0 совместима с GPLv3, но не с GPLv2 из-за патентных условий. Две разные копилефтные лицензии обычно несовместимы между собой.

Лицензии для документации и контента

Creative Commons (организация основана в 2001 году, первые лицензии — 2002) предлагает конструктор из условий:[6]

  • BY — указывать автора;
  • SA (ShareAlike) — производные работы под той же лицензией (копилефт для контента);
  • NC — только некоммерческое использование;
  • ND — без изменений.

Свободными считаются только CC BY, CC BY-SA и CC0 (отказ от прав, передача в общественное достояние). Под CC BY-SA публикуется Википедия, под CC BY-SA 2.5 — справочник MDN, под CC BY 4.0 — шпаргалки tldr-pages. Сама Creative Commons не рекомендует свои лицензии для программного кода.[7] Для документации также применяется GFDL (GNU Free Documentation License), например в ArchWiki.

Практика

  • Указывайте лицензию в файле LICENSE в корне репозитория и коротким идентификатором SPDX (MIT, Apache-2.0, GPL-3.0-or-later) в метаданных пакета, например в pyproject.toml.[3]
  • Используя чужой код или текст, сохраняйте уведомления об авторских правах и ссылку на оригинал — этого требует почти любая открытая лицензия.
  • Подбирать лицензию для своего проекта помогает сайт choosealicense.com.[8]

См. также

Источники

  1. The Open Source Definition — OSI
  2. What is Free Software? — GNU Project
  3. SPDX License List
  4. Apache License, Version 2.0
  5. GNU General Public License v3
  6. Creative Commons — About the Licenses
  7. Creative Commons FAQ: Can I apply a CC license to software?
  8. choosealicense.com