Ключевые концепции

Лицензия на ПО

Лицензия на программное обеспечение (англ. software license) — это юридическое соглашение, определяющее условия, на которых программу или её исходный код можно использовать, менять и распространять. Это способ для разработчиков защитить свою интеллектуальную собственность и указать, как именно другие могут использовать их работу.

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

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

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

Обычно файл с лицензией называется LICENSE или LICENSE.txt и лежит в корне репозитория. Существует множество стандартных лицензий, поэтому писать свою собственную не придётся. Самая популярная лицензия — это MIT License, она очень мягкая и позволяет делать с кодом почти всё что угодно. При создании репозитория на GitHub платформа сама предложит выбрать лицензию и создаст нужный файл.

Типы лицензий на ПО

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

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

  • Это те самые длинные лицензионные соглашения с конечным пользователем (EULA), которые нужно принимать при установке программ на компьютер.
  • Примеры ПО с проприетарными лицензиями: Microsoft Windows, Adobe Photoshop, Oracle Database.

Лицензия открытого исходного кода (англ. open-source license): это тип лицензии, который разрешает любому свободно использовать, менять и распространять исходный код. Код открыт для всех, и любой желающий может внести свой вклад в разработку программы.

  • Пермиссивная лицензия (англ. permissive license): это тип лицензии открытого исходного кода, который позволяет использовать, менять и распространять программу с минимальными ограничениями. Такие лицензии очень гибки и разрешают почти всё.

    • Примеры пермиссивных лицензий: MIT License, BSD License, Apache License.
    • Примеры ПО с пермиссивными лицензиями: Python, Node.js, React.
  • Копилефт-лицензия (англ. copyleft license): это тип лицензии открытого исходного кода, который требует, чтобы любые изменённые версии программы выпускались под той же самой лицензией. Это гарантирует, что программа останется с открытым исходным кодом, а все улучшения будут переданы сообществу.

    • Примеры копилефт-лицензий: GNU General Public License (GPL), GNU Lesser General Public License (LGPL).
    • Примеры ПО с копилефт-лицензиями: Git, Linux, WordPress, Blender.

Лицензия Creative Commons: это модульный и гибкий набор лицензий, который позволяет авторам указывать, как их работу можно использовать, менять и распространять. Эти лицензии часто используются для творческих работ, таких как музыка, изображения и видео, но они не содержат специфических условий для распространения исходного кода.

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