Юридические аспекты: Виды лицензий и легальное использование

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

Apache 2.0 License

Apache 2.0 — это популярная разрешительная (permissive) открытая лицензия, созданная Apache Software Foundation. Она позволяет свободно использовать, модифицировать и распространять программное обеспечение с минимальными ограничениями.

Данная лицензия используется в:

Основные положения Apache 2.0

Что разрешает лицензия:

  • Свободное использование — Можно применять в коммерческих и некоммерческих проектах.
  • Модификация кода — Разрешено изменять исходный код и создавать производные работы.
  • Распространение — Можно распространять исходный код и бинарные версии.
  • Патентные права — Лицензия явно предоставляет патентные права от всех участников проекта.
  • Использование в проприетарном ПО — Можно включать код в закрытые коммерческие продукты.

Что требует лицензия:

  • Сохранение уведомления об авторских правах — В коде или документации должна быть копия LICENSE и NOTICE (если есть).
  • Указание изменений — Если модифицируете код, нужно отметить это в файлах изменений.
  • Запрет на использование товарных знаков — Нельзя использовать названия проектов (Apache, OpenCV) для продвижения без разрешения.

Чего не требует Apache 2.0:

  • Раскрывать исходный код производных проектов (в отличие от GPL).
  • Платить за использование.

Пример использования Apache 2.0

Если вы используете библиотеку под Apache 2.0 (например, OpenCV):

  • Включите файл LICENSE в свой проект.
  • Сохраните уведомление об авторских правах.
  • Укажите изменения (если модифицировали код).

Пример NOTICE:

text
This product includes software developed by the Apache Software Foundation (http://www.apache.org/).
Portions of this code are derived from OpenCV (https://opencv.org/).

MIT Lincense

Что разрешает MIT License?

  • Бесплатное использование (личное и коммерческое).
  • Модификация кода (можно изменять под свои нужды).
  • Распространение (включая проприетарное ПО).

Особенности лицензии:

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

Данная лицензия используется в:

На примере pypdf, можно:

  • Использовать в коммерческих проектах.
  • Модифицировать код.
  • Распространять в закрытом ПО.

Требования:

  • Включить оригинальное уведомление MIT License в ваш проект (обычно файл LICENSE).
  • Указать авторство (например, в документации или интерфейсе программы):
This software includes PyPDF2 (https://github.com/py-pdf/pypdf), licensed under MIT.

HPND (Pillow)

HPND (Historical Permission Notice and Disclaimer) — это лицензия, под которой распространяется библиотека Pillow (форк PIL — Python Imaging Library).

Ссылка на лицензию: LICENSE

Pillow (HPND) можно свободно использовать в Python-проектах, включая коммерческие, при сохранении уведомления об авторских правах.

Лицензия HPND является разрешительной (permissive) и позволяет:

  1. Свободное использование — можно использовать Pillow в любых проектах, включая коммерческие, без ограничений.

  2. Модификация кода — разрешает изменять исходный код Pillow.

  3. Распространение — можно распространять оригинальную или изменённую версию библиотеки.

  4. Использование в проприетарном ПО — можно включать Pillow в закрытые (проприетарные) проекты.

При использовании Pillow под HPND нужно учитывать:

  • Авторское право (Copyright Notice) — в коде или документации должна быть указана исходная лицензия и авторство.
  • Отказ от гарантий (Disclaimer) — библиотека поставляется "как есть", без гарантий работоспособности.

Пример использования в Python

Если вы используете Pillow в своём проекте, достаточно указать лицензию и авторство, например, в файле LICENSE или README.md:

This project uses Pillow (PIL Fork), which is licensed under the HPND License.
Copyright © [год] by [авторы Pillow].

Сравнение с другими лицензиями

HPND похожа на MIT и BSD, но с более старым формулированием. Она не требует явного упоминания в каждом файле исходного кода (в отличие от GPL).

Python License (PSF License)

Python Software Foundation License (PSF License) — это разрешительная (permissive) лицензия, под которой распространяется официальная реализация Python (CPython) и некоторые связанные проекты. Эта лицензия позволяет свободно использовать, модифицировать и распространять Python, но с некоторыми условиями.

PSF ближе к MIT/BSD, но с особыми правилами насчёт торговых марок ("Python" нельзя использовать в названиях без разрешения).

Ссылка на лицензию: license

Разрешения:

  • Свободное использование — можно применять Python в любых целях, включая коммерческие.
  • Модификация кода — разрешается изменять исходный код Python.
  • Распространение — можно распространять оригинальный или изменённый Python.
  • Использование в проприетарном ПО — можно включать Python в закрытые (коммерческие) проекты.

Ограничения и условия:

  • Авторское уведомление — при распространении Python (или его модифицированных версий) нужно сохранять:
    • копию лицензии (LICENSE),
    • уведомление об авторских правах (copyright notice).
  • Название "Python" — нельзя использовать название "Python" и логотип PSF без разрешения Python Software Foundation.
  • Отказ от гарантий (как и в MIT/BSD):
    • Python предоставляется "как есть", без каких-либо гарантий.

Что нужно при использовании Python?

Если вы просто используете Python в своём проекте:

  • Можно не указывать лицензию (если не распространяете сам Python).
  • Но если распространяете модифицированный Python, нужно сохранить копию PSF License.

Если вы разрабатываете ПО на Python:

  • Можно делать проприетарные программы.
  • Нельзя называть свой продукт "Python" без разрешения PSF.

GPL (GNU General Public License)

Рассмотрим на примере pdf2image (Poppler (pdftoppm)):

  • GPL (GNU General Public License) — это «копилефт»-лицензия.
  • Её философия: «Если ты используешь наш открытый код, то и твой код должен быть открытым».
  • Цель — предотвратить использование open-source в закрытых коммерческих продуктах без отдачи.

Как избежать требования открыть код:

  • Используйте динамическую линковку (например, через CLI или API).
    • pdf2image делает именно это — вызывает pdftoppm как внешнюю утилиту.
  • Выберите альтернативу с MIT/Apache-лицензией:
    • Для PDF → pdfium (Google, BSD-лицензия).
    • Для OCR → tesseract (Apache 2.0).
  • Купите коммерческую лицензию (если нужен статический бинарник).

Что будет, если нарушить GPL:

  • Авторы Poppler могут потребовать открыть код вашего ПО.
  • В худшем случае — судебный иск (редко, но бывает, например, как с VMware).

Вывод:

  • Можно: Использовать Poppler как отдельную программу (например, через pdf2image).
  • Нельзя: Встраивать его код напрямую в своё закрытое ПО.
  • Проверяйте лицензии всех зависимостей, если делаете коммерческий продукт.

Если нужна полная свобода, лучше выбрать библиотеки под MIT/Apache 2.0 (например, pdf.js для JS или pdfium для C++).

Динамическая и статическая линковка

Когда программа использует внешнюю библиотеку (например, Poppler), есть два способа подключить её к своему коду:

  • Динамическая линковка
  • Статическая линковка

Динамическая линковка (без GPL-ограничений)

Библиотека (pdftoppm, libpoppler.so) лежит отдельно от вашей программы.

Ваше ПО запускает её как внешний процесс (например, через subprocess в Python или system() в C).

Можно использовать в закрытом ПО (если сам Poppler установлен отдельно).

Статическая линковка (требует открыть код по GPL)

Код библиотеки (Poppler) встраивается прямо в вашу программу (например, компилируется в .exe).

Ваше ПО и Popler становятся единым целым.

Если Poppler под GPL, то ваше ПО тоже должно быть открытым (распространяться под GPL).

Общие принципы размещения лицензий

В случае использования описанных ранее лицензий необходимо в установочном комплекте хранить:

 

  • Модели и дополнительные файлы;
  • Скрипты кода питона;
    В коде питона необходимо прописывать используемые лицензии библиотек, моделей и ollama:
    # Licensed under the MIT License. See LICENSE for details.
  • Файл «readme.txt», в котором необходимо разместить используемые лицензии. В тексте указывать на файл с соответствующей лицензией:
    # Название вашего проекта
    Краткое описание вашего проекта.
    ## Лицензия
    Этот проект распространяется под лицензией MIT. Подробности смотрите в файле [LICENSE](LICENSE).
  • Зафиксировать файлы под каждую лицензию, например в «license_mit.txt» указать текст:
    MIT License
    
    Copyright (c) [Год] [Ваше имя или название вашей организации]
    
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.

Примеры используемых лицензий для readme файла:

# Third-Party Licenses
This project uses:
- [PyPDF2](https://github.com/py-pdf/pypdf) (MIT License)
- [pdf2image](https://github.com/Belval/pdf2image) (MIT License)
- [Poppler](https://poppler.freedesktop.org) (GPL v2+)