[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