Многие разработчики и представители бизнеса неправильно понимают термин «открытый исходный код», подразумевая, что он автоматически разрешает как угодно использовать чужое программное обеспечение в своих целях, если оно распространяется бесплатно. Разберемся, почему это не так.
Любое программное обеспечение должно принадлежать к какому-либо типу лицензии. У всех лицензий, за исключением общественного достояния, есть правообладатель. Поэтому, когда вы используете в своем приложении чужое ПО, вы должны соблюдать условия и ограничения, которые предусмотрены лицензией. Это касается библиотек, фреймворков, готовых модулей и даже кода, скопированного со Stack Overflow.
В предыдущей статье мы рассмотрели основные типы как платных, так и бесплатных лицензий. В данном материале речь пойдет про лицензии для программного обеспечения с открытым исходным кодом, отличающиеся по степени ограничений.
Что такое опенсорс?
В отличие от проприетарного программного обеспечения, где поставщики обычно делают невозможным доступ к исходному коду, а также его копирование или изменение, открытый исходный код позволяет использовать, модифицировать и распространять код в других программах или приложениях.
Одним из основных преимуществ опенсорс-кода является его наглядность, что упрощает устранение проблем и лучшее понимание того, что как работает. Особенно это актуально для проектов, где документация либо отсутствует, либо не соответствует действительности.
В зависимости от типа лицензии вам может быть разрешено изменять исходный код, чтобы адаптировать его под ваши потребности или исправить обнаруженные проблемы. Лицензия определяет, возможно ли это и на каких условиях.
Чем отличаются лицензии с открытым исходным кодом?
Существует более 80 вариантов опенсорс-лицензий, но, как правило, они относятся к одной из двух основных категорий: авторское лево или разрешающая.
Лицензия с авторским левом (копилефт) — это тип лицензии, при котором код, полученный от источника с открытым исходным кодом, наследует тип лицензии.
Разрешающая лицензия предоставляет больше свободы для повторного использования, модификации и распространения.
Лицензии с авторским левом
Наиболее популярными лицензиями с авторским левом являются AGPL, GPL, LGPL, EPL и Mozilla.
GPL
Стандартная общественная лицензия GNU (GPL) имеет простой принцип: если вы использовали бесплатный и открытый код для разработки своего приложения, то и ваш модифицированный код должен быть в открытом доступе под такой же лицензией.
Основателем GPL-лицензии является Ричард Столлман. В середине 1980-х он хотел внести незначительные улучшения в проприетарную систему Массачусетского технологического института, но не смог этого сделать по закону. В результате разногласий Столлман разработал альтернативу коммерческой лицензии и назвал ее GPL, или Стандартная общественная лицензия. Он также основал некоммерческий фонд Free Software Foundation (FSF), который поддерживает свободное распространение программного обеспечения.
Когда вы продаете программное обеспечение под лицензией GPL, вы, по сути, продаете копию программного обеспечения вместе с правами и свободами, предоставляемыми лицензией. GPL позволяет вам взимать плату за распространение программного обеспечения, но вы также должны предоставить получателям исходный код и предоставить им те же права и свободы, которые вы получили от исходников.
Примером такой лицензии является Linux. Так как он находится под GPL-лицензией, то любой код, статически связанный с ядром Linux, должен распространяться под этой же лицензией.
GPL — хороший выбор для разработчиков, не планирующих в будущем создание проприетарного продукта. Например, если вы используете код для частной разработки или внутри своей организации, не публикуя его во внешнюю среду.
Как и предполагалось, GPL может представлять собой реальную проблему для тех, кто хочет коммерциализировать программное обеспечение и получать от него прибыль. Поскольку GPL была специально разработана как альтернатива проприетарному ПО. Однако GPL-продукты разрешено использовать в коммерческих целях, продавая различные формы технической поддержки или документацию.
AGPL
Affero GPL (AGPL) —усиленная версия GPL, которая отличается от прародителя только одним пунктом. Поскольку лицензия GPL срабатывает только при распространении ПО, то существует лазейка для ПО, доступного только по сети, так как фактически оно не является распространяемым. Лицензия AGPL закрывает эту лазейку, включая в свои условия положение об удаленном сетевом взаимодействии, которое активирует лицензию GPL для любого программного обеспечения, используемого в сети.
LGPL
Lesser General Public Licence (LGPL) предоставляет менее строгие условия по сравнению с AGPL или GPL. Основное отличие заключается в том, что LGPL не обязана наследовать лицензию на все приложение, а только на те компоненты, которые были под LGPL.
В проприетарном ПО код под LGPL обычно выделяют в виде отдельной библиотеки, чтобы разграничить компоненты. Библиотека публикуется в открытом доступе, а остальное приложение закрыто от общества. Это наиболее щадящая лицензия для коммерческих продуктов.
EPL
Публичная лицензия Eclipse (EPL) обычно используется для программного обеспечения для бизнеса. С помощью EPL программное обеспечение можно комбинировать и сублицензировать, но при условии, что любые не-EPL-элементы находятся обособленно в виде отдельных модулей или объектов. Модификации могут быть сделаны под лицензией EPL, но они должны быть выпущены на тех же условиях.
MPL
Общественная лицензия Mozilla (MPL) является наименее ограничительной лицензией на программное обеспечение с авторским левом. Код, лицензированный в соответствии с MPL, может быть объединен в одном приложении с проприетарными файлами. При этом достаточно только условия, чтобы MPL-код хранился в отдельных файлах. MPL также включает выдачу патентов и обеспечивает сохранение уведомлений об авторских правах.
Разрешающие лицензии
Наиболее популярными разрешительными лицензиями с открытым исходным кодом являются: Apache, MIT, BSD и Unlicense.
Apache
Лицензия Apache дает право использовать ПО для любых целей, модифицировать его и распространять. При этом производные работы могут иметь другие условия лицензирования и не обязаны предоставлять исходный код.
Условие, которое накладывает Apache, одно — вы обязаны проинформировать пользователей о факте использования исходного кода. Для этого в корневую папку приложения нужно поместить 2 файла: Licence с копией текста лицензии и Notice с перечислением всех библиотек, лицензированных под Apache. При внесении изменений в код файлы должны актуализироваться.
MIT
MIT или лицензия Массачусетского технологического института , является одной из самых популярных, коротких и простых для понимания. Она позволяет использовать исходный код в любых целях при условии, что оригинальное уведомление об авторских правах и лицензии включено либо в распространяемый исходный код, либо в само программное обеспечение. Это уведомление снимает с авторов любую ответственность за итоговую продукцию.
BSD
Лицензия Berkeley Source Distribution (BSD) — это еще одна разрешительная лицензия с открытым исходным кодом, которая сохраняет уведомления о лицензии и авторские права, но также позволяет распространять более крупные работы на других условиях.
Текст лицензии может содержать разное количество пунктов. Лицензия BSD с 2 пунктами (также известна как FreeBSD) очень похожа на лицензию MIT, только отличается текстом уведомления. Лицензии BSD из 3 и 4 пунктов добавляют дополнительные требования или ограничения, связанные с повторным использованием и другими условиями
BSD изначально предназначалась для модификации и распространения кода Berkeley Unix. Текст лицензии требовал, чтобы в источнике указывали Калифорнийский университет в Беркли как правообладателя, таким образом производные продукты рекламировали учебное заведение.
В 1999 году университет выпустил новую версию лицензии с удаленным пунктом о рекламе. С тех пор BSD позволяет пользователю фактически делать что угодно с программой или ее исходным кодом, но без гарантий, то есть правообладатель не несет ответственности за продукты, разработанные с помощью его кода.
Сравнение типов опенсорс-лицензий
Копилефт | Разрешающие лицензии | |||||||
---|---|---|---|---|---|---|---|---|
GPL | AGPL | LGPL | EPL | MPL | Apache | MIT | BSD | |
Возможность редактирования и использования кода | есть | есть | есть | есть | есть | есть | есть | есть |
Возможность коммерческого использования | есть | есть | есть | есть | есть | есть | есть | есть |
Уведомление о лицензии и авторских правах | нужно | нужно | нужно | нужно | нужно | нужно | нужно | нужно |
Наследование лицензии | нужно | нужно | в виде библиотеки | нужно | в виде файла | не обязательно | не обязательно | не обязательно |
Гарантии от разработчиков | нет | нет | нет | нет | нет | нет | нет | нет |
Преимущества использования открытого исходного кода
Открытый исходный код позволяет практически без ограничений создавать свое программное обеспечение. В случае с проприетарным ПО это не так. Единичный сбой в исходной программе может привести к ошибкам или даже падению вашей системы по независящим от вас причинам.
Также покупка платного программного обеспечения не является гарантией того, что оно всегда будет доступным и получать обновления, так как текущие рыночные условия могут быстро меняться. Особенно это касается зарубежных программ, которые в разной степени ограничивают доступ для российских пользователей.
Опенсорсное ПО, наоборот, не зависит от выживания одной компании или линейки продуктов. Даже если официальные разработчики прекратят поддержку, продукт может существовать за счет разработок сообщества. Также вы имеете полное право самостоятельно дорабатывать и редактировать исходный код.
Какую лицензию с открытым исходным кодом выбрать?
Выбор типа лицензии с открытым исходным кодом во многом зависит от целей, с которыми разрабатывается программное обеспечение. Вот некоторые соображения, которые следует учитывать при сравнении лицензий:
- Следует соблюдать осторожность при выборе лицензии с авторским левом. Если исходная лицензия очень либеральна, измененный код также не имеет ограничений, что может быть не в пользу автора.
- Лицензии с авторским левом обычно предусматривают больше ограничений, чем разрешающие лицензии.
- Когда цель состоит в том, чтобы сделать код максимально пригодным для повторного и совместного использования, разрешающая лицензия будет лучшим выбором.
- AGPL может быть очень выгодным выбором, если вы разрабатываете ПО, распространяемое по сети. Типичным примером этого являются базы данных с открытым исходным кодом: не лицензируя по AGPL, любая компания (например, крупный поставщик облачных услуг) может улучшить ваш продукт и монетизировать его без необходимости распространять свои модификации.
- Существуют две основные версии лицензии GPL: GPLv2 и GPLv3. Отличия заключаются в том, что в GPLv3 есть пункты, касающиеся патентов. GPLv3 также улучшает совместимость с другими лицензиями с открытым исходным кодом, такими как Apache. Однако обратите внимание, что две версии GPL несовместимы друг с другом.
- Поскольку лицензии MIT широко используются, их преимущество заключается в том, что они хорошо известны и понятны всем. Когда дело доходит до использования программного обеспечения, лицензированного по лицензии MIT, нет никаких ограничений относительно распространения или монетизации, что делает их очень привлекательными для любого вида использования. Код MIT может также использоваться в проектах с другими лицензиями.
Заключение
В отличие от GPL-лицензий, которые предназначены для предотвращения коммерческой коммерциализации кода, разрешающие лицензии, например, MIT или BSD, накладывают минимальные ограничения на поведение в будущем. Это позволяет коду оставаться открытым или интегрироваться в коммерческие решения по мере изменения проекта.
Другими словами, разрешающая лицензия не становится законной бомбой замедленного действия на любом этапе процесса разработки. Поэтому она позволяет разработчикам и компаниям тратить свое время на создание и продвижение хорошего кода, а не беспокоиться о том, нарушает ли этот код правила лицензирования.