Главная / О компании / Новости / Совместимость open source лицензий

Новости

« Назад

Совместимость open source лицензий  18.11.2020 11:17

Свободно используемые компоненты с открытым исходным кодом стали основными «строительными блоками» современных программных продуктов, помогая разработчикам создавать и поставлять инновационные продукты быстрее, чем когда-либо прежде. Однако многие разработчики склонны забывать, что хотя лицензии open source позволяют свободно использовать такие компоненты, они все же предполагают обязательное выполнение ряда условий. Open source лицензии и их совместимость - это то, на что должен обращать внимание каждый, кто использует компоненты с открытым исходным кодом для создания своих продуктов.

Почему важно проверять совместимость лицензий open source? 

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

Хотя сообщество open source поощряет использование open source компонентов как отдельными разработчиками, так и компаниями, сочетание нескольких лицензий может стать проблемой, так как разрешения, требования и условия различных лицензий могут конфликтовать друг с другом. Разработчик может объединить в один проект несколько компонентов с разными лицензиями, содержащие прямые или транзитивные зависимости. В этих случаях возникает вопрос, совместимы ли такие лицензии.

В чем сложность совместимости лицензий open source?

Сегодня существует свыше 70 open source лицензий, одобренных международной некоммерческой организацией Open Source Initiative (OSI), которая была создана для продвижения open source. В каждой лицензии используется уникальный набор ограничений, условий и разрешений. Обычно лицензии отвечают на следующие вопросы:  

  • Какое признание получает создатель кода?
  • Какие разрешения получают пользователи проекта?
  • Как распространять исходный код и делать его доступным для других разработчиков?
  • Существуют ли условия, при которых пользователи не обязаны распространять исходный код?
  • На каких условиях пользователи могут коммерчески распространять свое ПО?

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

Основы совместимости лицензий: разрешительные лицензии и копилефтные 

Различия в лицензиях open source основаны на обязанностям пользователей и предоставляемых разрешениях. На основе этих параметров лицензии делятся на два основных типа: разрешительные (permissive) и копилефтные (copyleft).   

Копилефтная лицензия позволяет использовать, модифицировать и распространять произведение (программный компонент) при условии соблюдения принципа взаимности. Если вы используете компонент с копилефтной лицензией, то должны также сделать свой код открытым для других пользователей.

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

  87654

Источник: David A. Wheeler https://dwheeler.com/essays/floss-license-slide.html

Совместимость разрешительных лицензий open source

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

В большинстве случаев разрешительные лицензии совместимы также с копилефтными. Есть два исключения из этого правила: лицензия Apache 2.0 и оригинальная лицензия BSD, состоящая из 4 пунктов. Партнерские права лицензии Apache 2.0 делают ее несовместимой с лицензией GPL v2, но она совместима с GPL v3. Условие оригинальной лицензии BSD, касающееся упоминания университета Беркли и всех помогавших лиц в рекламных материалах, делает ее несовместимой со всеми копилефтными лицензиями. Модифицированная BSD лицензия, содержащая 3 пункта, не содержит этого условия, поэтому она совместима с лицензиями GPL. 

Совместимость копилефтных лицензий и GPL

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

Как объясняет Ричард Столлман, основатель лицензии GNU GPL: «Если лицензия А гласит, что разрабатываемая программа должна выпускаться под лицензией А, а лицензия Б говорит, что разрабатываемая программа должна выпускаться под лицензией Б, то возникает непреодолимое противоречие - лицензия продукта, в котором использованы компоненты с лицензиями А и Б, одновременно должна быть А и Б».

Совместимость лицензий - ключ к лицензионной чистоте open source

Компоненты с открытым исходным кодом составляют 60%-80% всей кодовой базы проекта. Это касается как проприетарного ПО, так и open source проектов. Компоненты с открытым исходным кодом стали неотъемлемым элементом разработки ПО, поэтому контроль за соответствием лицензионным требованиям должен стать частью процесса разработки.

Очевидно, что нельзя ожидать, что разработчики будут знать все нюансы условий лицензий с открытым исходным кодом и проверять их совместимость при использовании open source компонентов. Лучший способ управления совместимостью лицензий - использовать инструмент DevOps, который автоматически отслеживает лицензии, ограничивая несовместимые.

Совместимость open source лицензий - это сложный вопрос. По мере того, как организации, разрабатывающие программное обеспечение, совершенствуют свои практики DevOps, важно внедрять инструменты, которые могут также помогать в решении правовых вопросов использования open source. Автоматизированные инструменты могут помочь компаниям исключить вопросы совместимости лицензий из списка проблемных задач.

Источник ►