From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.1 Date: Tue, 19 Nov 2019 21:05:16 +0100 From: Alexey Gladkov To: ALT Linux Team development discussions Message-ID: <20191119200516.6xsutqsrg3sijjy3@localhost> Mail-Followup-To: ALT Linux Team development discussions MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Subject: [devel] I: license tag X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Nov 2019 20:05:21 -0000 Archived-At: List-Archive: List-Post: Привет! Некоторое время назад я пробовал проанализировать наши пакеты на предмет свободности. По сути задача та же самая как и дистрибутивостроителей, которые должны отфильтровать пакеты не предназначенные для коммерческого использования. Иных данных о лицензиях содержимого пакета, кроме тега 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