Являясь инженерами-программистами или архитекторами, мы часто отдаем приоритет эффективности во время разработки. Когда мы видим мощный open-source пакет на GitHub с множеством звезд и отличной документацией, наши пальцы часто инстинктивно печатают pnpm add или npm install.
Но задумывались ли вы когда-нибудь, что эти кажущиеся “бесплатными” и “свободными” инструменты могут скрывать бомбу замедленного действия, способную ввергнуть вашу компанию в риски нарушения патентов?
В разработке коммерческого ПО, помимо технических возможностей, как нам следует понимать нюансы, скрывающиеся за этими open-source протоколами (Лицензиями)?
Понимание границы “Коммерчески выгодного”
В мире open-source не все “бесплатное” одинаково. Обычно мы делим распространенные лицензии на два основных лагеря:
1. В высшей степени коммерчески выгодные (Permissive Licenses)
Основной дух такого типа лицензии заключается в следующем: “Берите и пользуйтесь, только не забудьте сказать, что это написал я, и не приходите ко мне, если что-то пойдет не так”. Для компаний, разрабатывающих продукты на продажу, они подобны “бесплатным листовкам”, раздаваемым на улице; вы можете использовать их в качестве подставки под коробку для завтрака, складывать из них бумажные самолетики или даже переупаковать их в свои изысканные продукты.
| Лицензия | Описание |
|---|---|
| MIT | Самая простая, максимальная свобода (например, React, Vue). |
| BSD (2/3-Clause) | Подобна младшему брату MIT, но делает больший упор на освобождение от правовой ответственности. |
| Apache 2.0 | Основной выбор для бизнеса, так как включает дополнительную защиту “патентной лицензии”. |
2. Коммерческое использование требует осторожности (Copyleft Licenses)
Эти лицензии обладают “виральностью”. Самая известная из них – серия GPL.
Это похоже на вступление в “кровавую клятву”. Пока вы ссылаетесь на этот тип кода или изменяете его в своей кодовой базе, согласно правилам, весь ваш продукт, возможно, должен будет принять их “фамилию”, что означает принуждение к открытию (open-source) исходного кода.
“Патентная ловушка” минималистичных лицензий: Почему MIT и BSD недостаточно безопасны?
Многие люди думают: “MIT такая либеральная; она, безусловно, должна быть абсолютно безопасна для коммерческого использования, так ведь?” Однако,
“Авторское право (Copyright)” не равно “Патент (Patent)”.
Лицензии MIT и BSD очень кратки. В первую очередь они предоставляют вам разрешение на копирование текстового кода. Но в правовом вакууме первоначальный автор на самом деле мог бы заявить:
“Я разрешил вам скопировать текст кода, но я не говорил, что вы можете свободно использовать технические патенты, содержащиеся в коде!”
Напротив, Apache 2.0 поставляется с “подарком в виде соглашения о перемирии”. У нее есть две самые сильные встроенные защиты:
| Пункт | Содержание |
|---|---|
| Явное предоставление патента | Когда первоначальный автор выпускает код, он подписывает и обещает, что его технические патенты также предоставляются вам. |
| Положение о патентном возмездии (Ядерное сдерживание) | Если кто-то использует этот код для того, чтобы подать в суд на первоначального автора за нарушение патентных прав, он автоматически теряет все патентные гранты на это программное обеспечение. Это устанавливает негласное “патентное прекращение огня” между всеми участниками, и крупные компании (такие как Google, Amazon) отдают этому особое предпочтение. |
Когда облачные гиганты сталкиваются с создателями Open-Source
Возможно, вы слышали новости о том, что MongoDB или Elasticsearch меняют свои лицензии. Это потому, что облачные гиганты (например, AWS) слишком хорошо умели “пользоваться бесплатно”.
Эти гиганты берут open-source пакеты для создания сервисов хостинга и зарабатывают целое состояние, но при этом почти ничего не возвращают изначальным авторам. Таким образом, авторы нанесли ответный удар с помощью таких пунктов, как SSPL:
Вы можете использовать его, но если вы хотите продавать мое программное обеспечение как услугу (SaaS) другим, вы также должны открыть исходный код всей вашей облачной инфраструктуры.
Это эффективно предотвратило прямую перепродажу новейших функций гигантами и вынудило пользователей перейти на профессиональный SaaS от создателей.
Стратегия защиты архитектора: Создание “Файрвола”
Как архитектор, что вы должны делать, если требования вынуждают вас использовать пакет с высоким уровнем риска или пакет с патентными спорами?
Мы должны не только знать, как выбирать, но и как строить “файрвол”. Самый классический подход — это использование “Паттерна Адаптер (Adapter Pattern)”.
Попросту говоря, не вызывайте этот пакет напрямую в вашей бизнес-логике. Сначала определите интерфейс абстрактного слоя. Это похоже на вырезание отверстия для розетки в стене; поступает ли энергия за розеткой из национальной сети (Пакет A) или от генератора (Пакет B), это остается прозрачным для вашего оборудования, потребляющего энергию (бизнес-логика).
Используя инверсию зависимостей (Dependency Иnversion) для отделения бизнес-логики от open-source зависимостей, если в будущем возникнут проблемы с лицензированием или провалятся ценовые переговоры, вам просто нужно будет повторно реализовать слой адаптера (Adapter), чтобы быстро заменить пакеты, обеспечив себе способность к “быстрому побегу”.
Заключение: Для строительства небоскреба требуется фундамент
Выбор правильной open-source лицензии подобен закладке правильного фундамента; только с прочным фундаментом вы сможете спокойно строить высотное здание.
В следующий раз, прежде чем внедрять незнакомый пакет, не забудьте сделать паузу, взглянуть на файл LICENSE, проверить его тип и оценить скрытые патентные риски. Только развивая это защитное сознание и стратегию разделения, которыми должен обладать “архитектор программного обеспечения”, мы сможем продвигаться увереннее и дальше по пути быстро итеративной разработки ПО.
Reference
- Apache License, Version 2.0 | Apache Software Foundation
- Frequently Answered Questions - Open Source Initiative
- Licenses - Open Source Initiative
- Apache License, Version 2.0 - Open Source Initiative
- The MIT License - Open Source Initiative
- ISC License - Open Source Initiative
- The 3-Clause BSD License - Open Source Initiative
- The 2-Clause BSD License - Open Source Initiative
- GNU General Public License version 2 - Open Source Initiative
- GNU General Public License version 3 - Open Source Initiative