[devel] I: license tag
Alexey Gladkov
legion на altlinux.ru
Вт Ноя 19 23:05:16 MSK 2019
Привет!
Некоторое время назад я пробовал проанализировать наши пакеты на предмет
свободности. По сути задача та же самая как и дистрибутивостроителей,
которые должны отфильтровать пакеты не предназначенные для коммерческого
использования. Иных данных о лицензиях содержимого пакета, кроме тега
License у нас нет.
Выяснилась интереснейшая вещь. В наших пакетах этот тег может содержать
всё, что угодно. Там оказывается как откровенный мусор, так и
двусмысленные названия лицензий или же вообще несуществующие лицензии
(например, мантейнер vorbisgain указывает, что лицензия "GPL 2.1", но
такой версии GPL ещё нет).
Чтобы это хоть как-то решить в сизиф отправлен sisyphus_check, который
выдаёт предупреждения относительно содержимого тега License т.к. масштаб
разрушений у нас просто огромный.
За основу была взята полиси OpenSUSE[1].
Новая проверка требует (пока не жёстко) чтобы:
* Лицензии должны быть объявлены в формате коротких имен SPDX[2] и
присутствовать в пакете common-licenses. Пробелы в имени лицензии не
допускается.
* Для указания совокупности лицензий в пакете используется оператор `and`.
* Альтернативные лицензии должны быть разделены оператором `or`.
* Лицензии могут быть сгруппированы. Для этого используются скобки. Такое,
например, необходимо, если документация имеет лицензию и код
поставляется под двойной лицензией:
License: (GPL-2.0 or Artistic-1.0-Perl) and CC0-1.0
Группы внутри групп не допускаются. Скобки должны быть сбалансированы.
* Исключения из лицензий тоже должны быть отдельно описаны и находится в
пакете common-licenses. Исключения указываются после название лицензии
через оператор `with`. Пробелы в имени исключения не допускаются.
License: LGPL-2.1-or-later and LGPL-2.1-or-later with GCC-exception-2.0 and GPL-2.0-or-later
* Операторы `and`, `or`, `with` не могут быть указаны один за другим,
начинать или заканчивать строку с перечислением лицензий.
Все операторы `and`, `or`, `with` могут быть указаны в любом регистре.
Проверка
--------
Проверка sisyphus_check сейчас всё-таки считает некоторые конструкции
ошибочными:
* Какие либо операторы указаны подряд или вначале или конце строки.
* Группы в группах.
* Несбаллансированные скобки.
Вот небольшая статистика по тому сколько бинарнах пакетов это затронет:
# must not follow another keyword: 7
# groups within groups are not allowed: 0
# closing bracket without opening bracket: 0
# unbalanced brackets: 152
FAQ
---
Q: Почему было взято именно полиси OpenSUSE, если исторически в наш
репозиторий пакеты портируются из Fedora ?
A: Посили Fedora[3] содержит жёсткий коротких список имён[4], который
поддерживется legal team. Короткие имена, используемые в fedora, проще, но
вместе с тем они теряют часть информации о лицензии, которую трудно
восстановить автоматически. Например, все ниже перечисленные лицензии
имеют короткое имя `BSD`:
- BSD License (no advertising)
- BSD License (two clause)
- Creative Commons BSD
- Cryptix General License
- Eclipse Distribution License 1.0
- Metasploit Framework License (post 2006)
Или `GPLv3+ with exceptions`:
- GNU General Public License v3.0 or later, with Classpath exception
- GNU General Public License v3.0 or later, with font embedding exception
Также короткие имена не стандартизованы. Поэтому такой список лицензий
сложно поддерживать. Такой формат записи сложно прверять автоматически.
Q: Как мне поправить свой пакет ?
A: Если вы не уверены как правильно указывается лицензия вы можете
посмотреть, как описывается этот тэг в OpenSUSE. Если же вашего пакета нет
в их репозитории, то пишите в devel на .
Q: Лицензии, которая используется в проекте нет в пакете common-licenses.
Что делать ?
A: Повесьте багу на пакет common-licenses и приложите текст лицензии.
Очень важно, чтобы у нас были тексты лицензий, иначе невозможно проверить
правовую информацию. Так у нас есть пакеты с лицензией `distributable not
for profit`, `Free for non-commercial use`, `no modification permitted`,
`non-military use` и т.д. Часть же лицензий не могут использоваться в
репозитории. Например, в fedora есть целый список несвободных лицензий[5].
Q: Я не знаю какая лицензия у проекта. Что делать ?
A: Пишите на legal@ или в devel на . Лицензия должна быть известна.
[1] https://en.opensuse.org/openSUSE:Packaging_guidelines#Licensing
[2] https://spdx.org/licenses/
[3] https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
[4] https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses
[5] https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Bad_Licenses
--
Rgrds, legion
Подробная информация о списке рассылки Devel