Когда разработчики создают программное обеспечение, они практически всегда повторно используют чей-то код. Это могут быть фрагменты кода, готовые библиотеки, подключаемые модули, функции и даже целые приложения. Но все эти сторонние компоненты контролируются лицензией, и их использование накладывает определенные обязательства — даже код, скопированный из ответов на Stack Overflow, не исключение.
Если компания использует сторонний код без соблюдения лицензионных обязательств, правообладатель может подать в суд и, например, добиться запрета на дальнейшее распространение продуктов, которые содержат неправильно используемые компоненты.
Чтобы быть «чистыми» в использовании стороннего программного обеспечения и защитить свою кодовую базу, вам необходимо соблюдать правила лицензии, регулирующие использование любого кода, включая библиотеки и фреймворки, которые вы использовали в разработке. Для начала разберемся, какие ограничения накладывают те или иные типы лицензий.
Типы лицензий ПО
В основном, лицензии делятся на свободные (бесплатные) и проприетарные (коммерческие). Всего существует более сотни разновидностей моделей, отличающихся по масштабу ограничений, назначению, авторским правам и т.д.
Юрист, а также первый генеральный директор компании Red Hat Марк Уэббинк впервые выделил 6 основных типов лицензий программного обеспечения:
- Общественное достояние;
- Разрешающая лицензия (BSD);
- Авторское лево или копилефт (GPL);
- Условно-бесплатное ПО;
- Собственная лицензия (проприетарное ПО);
- Коммерческая тайна.
Это самые распространенные модели лицензирования, которые отличаются по степени ограничений со стороны авторского права. Разберем их детальнее.
Общественное достояние
Как правило, любое ПО защищено авторским правом, что означает, что для его использования любым способом требуется разрешение создателя или правообладателя, т. е. лицензия. Однако авторское право не распространяется на произведения, находящиеся в общественном достоянии. Это означает, что любой может модифицировать и использовать такое ПО без каких-либо ограничений. Но вы должны знать, что общедоступный код встречается редко и его определение различается в зависимости от юрисдикции.
Примером такой лицензии является WTFPL(Do What The Fuck You Want To Public License). Это крайне пермиссивная версия ПО, то есть она никак не ограничивает действия пользователей и разработчиков, которые хотят использовать исходный код.
Код, не имеющий явной лицензии, де-факто не является общественным достоянием. По-умолчанию для любого программного обеспечения нужно разрешение на его использование. Поэтому, если компания не может связать используемое ею ПО с конкретной лицензией, она скорее всего нарушает закон об авторском праве.
Разрешающая лицензия (BSD)
Разрешающая, иногда также называемая BSD-подобной лицензией, содержит лишь минимальные ограничения на то, как программное обеспечение может использоваться, модифицироваться и распространяться.
BSD также известна как лицензия «с указанием авторства», поскольку обычно требует, чтобы информация об авторских правах сохранялась только в файле уведомлений при распространении программного обеспечения. В частности, туда включена информация о том, что обладатель авторских прав не несет никакой ответственности и гарантии за продукты, разработанные с помощью его кода. Больше никаких ограничений нет.
Разрешающее ПО является наиболее популярным типом лицензии с открытым исходным кодом. Самыми распространенными примерами являются:
- GNU;
- MIT;
- Все разновидности BSD;
- Apple Public Source (APSL);
- Apache.
Такие лицензии могут использоваться как для частной разработки, так и для коммерческих продуктов. Они очень хорошо совместимы с проприетарными и предоставляют больше возможностей по сравнению с лицензиями с авторским левом.
Авторское лево или копилефт (GPL)
Лицензии с авторским левом также известны как взаимные или ограничительные. Наиболее известным представителем этого семейства является GNU General Public License (GPL).
Основной принцип — полная кодовая открытость. То есть если вы использовали чей-то открытый код в разработке, то и результат ваших работ должен быть выложен в открытый доступ.
Сила лицензии с авторским левом, регулирующей работу, определяется степенью, в которой ее положения могут применяться ко всем видам производных работ. Таким образом, термин «слабое авторское лево» относится к лицензиям, в которых не все производные работы наследуют это разрешение.
Лицензия на ПО, включающее код GPL, требует его дальнейшего распространения. Конечно же, раскрытие исходников пользователям или конкурентам не интересно компаниям с коммерческой точки зрения. Но этом заключается суть авторского лева или копилефта.
Концепция авторского лева была описана её основателем Ричардом Столлманом в «Манифесте GNU» в 1985 году:
GNU не является общественным достоянием. Каждому будет разрешено модифицировать и распространять GNU, но ни одному дистрибьютору не будет позволено ограничивать его дальнейшее распространение. То есть не будут разрешены проприетарные модификации. Я хочу убедиться, что все версии GNU остаются бесплатными.
Авторское лево может быть более сильным или более слабым по силе разрешений, регулирующих работу. Оно определяется степенью ограничений для производных работ. Термин «слабое авторское лево» относится к тому типу, в котором не все производные работы наследуют исходную лицензию. К ним относится GNU Lesser General Public License (LGPL). Со строгим авторским левом считаются GPL и AGPL. Они обязательно требуют публикации исходников.
Копилефт является отличительной чертой бесплатных лицензий, так как другие типы не требуют от лицензиата распространять производные работы под тем же разрешением. До сих пор продолжаются споры о том, какой класс лицензии обеспечивает большую степень свободы: GPL или BSD. GPL ограничивает коммерческие компании, зато дает свободу для дальнейшего использования кодовой базы. А BSD дает гибкость, но созданные с его помощью коммерческие продукты блокируют дальнейшее распространение наработок.
Условно-бесплатное ПО
Условно-бесплатное программное обеспечение — это тип проприетарного ПО, которое изначально предоставляется владельцем для пробного использования за небольшую плату или бесплатно. Чаще всего бесплатная версия имеет ограниченную функциональность, пока пользователь не внесет оплату за дополнительные возможности.
В отличие от бесплатного ПО с открытым исходным кодом, условно-бесплатное программное обеспечение распространяется без предоставления исходников.
Хотя владельцы могут не требовать первоначального авансового платежа, почти все продукты с такой лицензией так или иначе предназначены для получения дохода. Поэтому у условно-бесплатного ПО существуют различные бизнес-модели, например, demoware (предоставление пробной версии), freemium (базовый продукт бесплатный, но берется плата за дополнительные услуги) или crippleware (когда жизненно важные функции отключены до приобретения полной версии продукта).
Проприетарное ПО
Проприетарное программное обеспечение — это любой софт, защищенный авторским правом и имеющий ограничения на использование, распространение и модификацию, установленные его издателем, поставщиком или разработчиком. Запатентованное ПО остается собственностью его владельца/создателя и используется конечными пользователями или организациями на заранее определенных условиях.
Проприетарное ПО также называется программным обеспечением с закрытым исходным кодом или коммерческим ПО. Как правило, проприетарное ПО не предоставляет конечным пользователям или подписчикам доступ к исходному коду. Его можно приобрести или лицензировать за плату, но повторное лицензирование, распространение или копирование запрещено.
Большая часть проприетарного ПО производится независимым поставщиком программного обеспечения (ISV). Это общее обозначение компаний, которые занимаются созданием и продажей коммерческого ПО для массового рынка или для специализированных предприятий.
Ограничения или условия, налагаемые поставщиком/разработчиком на проприетарное программное обеспечение, уточняются в пользовательском соглашении (EULA), соглашении об условиях обслуживания (TOS) или других соответствующих соглашениях об использовании. Пользователь или организация должны принять соглашение перед установкой или использованием такого ПО. За нарушение EULA или TOS издатель может подать на конечного потребителя в суд.
Коммерческая тайна
Коммерческая тайна — это практика или процесс внутри компании, который обычно не известен за ее пределами. Информация, считающаяся коммерческой тайной, дает компании конкурентное преимущество и часто является результатом внутренних исследований и разработок.
Чтобы коммерческая тайна считалась таковой по закону, компания должна приложить усилия для сокрытия информации от общественности. Секрет должен быть известен только ограниченному кругу лиц и имеет экономическую ценность.
Коммерческие секреты являются частью интеллектуальной собственности компании . В отличие от патента коммерческая тайна не является общеизвестной.
Примером коммерческой тайны является алгоритм поиска Google, который существует как интеллектуальная собственность в коде и регулярно обновляется для улучшения и защиты его операций.
Таблица сравнения типов ПО
Бесплатное ПО с открытым исходным кодом | Платное проприетарное ПО | |||||
---|---|---|---|---|---|---|
Тип лицензии | Общественное достояние | Разрешающая | Копилефт | Условно-бесплатное ПО | Собственная | Коммерческая тайна |
Примеры | WTFPL | BSD, GNU, MIT, APSL, Apache | GNU GPL, AGPL, LGPL | Demoware, Freemium, Crippleware | ОС Windows, любое платное ПО | Поисковой движок Google |
Авторские права сохраняются | нет | да | да | да | да | да |
Право на использование | да | да | да | да | да | нет |
Право на показ | да | да | да | да | да | нет |
Право на копирование | да | да | да | только в бесплатной версии | нет | определенно нет |
Право на изменение | да | да | да | нет | нет | нет |
Право на распространение | да | да | да, но по той же лицензии | только в бесплатной версии | нет | нет |
Право на сублицензию | да | да | нет | нет | нет | нет |
Выводы
Перед использованием любой библиотеки, фреймворка или просто копированием открытого кода обязательно изучайте условия, по которым распространяется этот код. Даже опенсорсное ПО может накладывать определенные ограничения, особенно для коммерческого использования.
Если вы не уверены, какое ПО на данный момент используется в вашем продукте, то тут поможет технический аудит. В рамках такого аудита технический специалист составляет полный список компонентов кодовой базы, а также сообщает, какие лицензии применяются в вашем коде, и могут ли у вас возникнуть конфликты между ними. С помощью такого аудита вы можете быстро реагировать на риски безопасности, лицензирования и эксплуатации, связанные с использованием чужого кода.