stringtranslate.com

Обмен данными программного пакета

System Package Data Exchange ( SPDX , ранее Software Package Data Exchange ) — открытый стандарт , способный представлять системы с цифровыми компонентами в виде спецификаций материалов (BOM). [1] Первоначально разработанный для описания компонентов программного обеспечения, SPDX может описывать компоненты систем программного обеспечения, модели ИИ, сборки программного обеспечения, данные безопасности и другие пакеты данных. SPDX позволяет выражать компоненты, лицензии , авторские права, ссылки на безопасность и другие метаданные, относящиеся к системам. [2]

Первоначальной целью SPDX было улучшение соответствия требованиям лицензий [3] , и с тех пор он был расширен для упрощения дополнительных вариантов использования, таких как прозрачность и безопасность цепочки поставок. [4] SPDX создан в рамках проекта SPDX, поддерживаемого сообществом, в котором участвуют ключевые отраслевые эксперты, организации и энтузиасты открытого исходного кода под эгидой Linux Foundation .

Спецификация SPDX признана международным открытым стандартом безопасности, соответствия лицензиям и других артефактов цепочки поставок программного обеспечения как ISO/IEC 5962:2021. Текущая версия стандарта — 3.0. [5]

Структура

Версия 2.х

Стандарт SPDX 2.x определяет документ SBOM, который содержит метаданные SPDX о программном обеспечении. Сам документ может быть выражен в нескольких форматах, включая JSON, YAML, RDF/XML, тег-значение и электронную таблицу. Каждый документ SPDX описывает один или несколько элементов, которые могут быть пакетом программного обеспечения, определенным файлом или фрагментом файла. Каждому элементу присваивается уникальный идентификатор, а метаданные для элемента могут ссылаться на другие элементы. [6]

Версия 3.0

SPDX 3.0 позволяет пользователям передавать информацию на гораздо более детальном уровне без необходимости упаковывать ее как данные «конверта». Ключевой принцип проектирования в SPDX 3.0 заключается в том, что все элементы могут быть выражены и ссылаться на них независимо от любого другого элемента. Эта независимость необходима для поддержки различных вариантов использования обмена и анализа контента и упрощает передачу отдельных элементов, представляющих интерес. Структура отношений также была обновлена, чтобы стать более выразительной и более понятной по сравнению со старыми версиями спецификации.

Модель данных SPDX 3.0 основана на Resource Description Framework (RDF). Данные могут быть сериализованы в различных форматах для хранения и передачи, включая форматы, определенные в RDF 1.1, такие как JSON-LD, Turtle (Terse RDF Triple Language), N-Triples и RDF/XML.

Профили SPDX 3.0

Спецификация 3.0 представила профили для поддержки расширения вариантов использования за пределы программного обеспечения без увеличения общей сложности. Профили позволяют пользователям определять данные для нужных им вариантов использования, а также увеличивают объем информации, которую можно собрать непосредственно из данных SPDX. SPDX 3.0 определяет восемь профилей:

История версий

Первая версия спецификации SPDX была предназначена для упрощения соответствия лицензиям на программное обеспечение , [3] но последующие версии спецификации добавили возможности, предназначенные для других вариантов использования, такие как возможность содержать ссылки на известные уязвимости программного обеспечения . [13] Последние версии SPDX соответствуют «Минимальным элементам для спецификации программного обеспечения» NTIA . [17]

SPDX 2.2.1 был представлен в Международную организацию по стандартизации (ISO) в октябре 2020 года и опубликован как ISO/IEC 5962:2021 Информационные технологии — Спецификация SPDX® V2.2.1 в августе 2021 года. [10] [18]

SPDX-Идентификатор лицензии

Синтаксис

Каждая лицензия идентифицируется полным именем, например "Mozilla Public License 2.0" и коротким идентификатором, здесь "MPL-2.0". Лицензии можно объединять с помощью операторов ANDи OR, а также группировать (, ).

Например, (Apache-2.0 OR MIT)означает, что можно выбрать между Apache-2.0( Apache License ) или MIT( MIT license ). С другой стороны, (Apache-2.0 AND MIT)означает, что применяются обе лицензии.

Также есть оператор "+", который при применении к лицензии означает, что применяются и будущие версии лицензии. Например, Apache-1.1+означает, что Apache-1.1и Apache-2.0могут применяться (и будущие версии, если таковые имеются).

SPDX описывает точные условия, на которых лицензируется часть программного обеспечения. Он не пытается классифицировать лицензии по типу, например, описывая лицензии с условиями, похожими на лицензию BSD, как «BSD-подобные». [19]

В 2020 году Европейская комиссия опубликовала свой Joinup Licensing Assistant [20] , который позволяет выбирать и сравнивать более 50 лицензий с доступом к их идентификатору SPDX и полному тексту.

Устаревшие идентификаторы лицензий

Семейство лицензий GNU (например, GNU General Public License версии 2 ) имеет встроенную возможность выбора более поздней версии лицензии. Иногда было неясно, GPL-2.0означает ли выражение SPDX «точно GPL версии 2.0» или «GPL версии 2.0 или любой более поздней версии». [21] Таким образом, начиная с версии 3.0 Списка лицензий SPDX, семейство лицензий GNU получило новые названия. [22] GPL-2.0-only означает «точно версия 2.0» и GPL-2.0-or-laterозначает «версия 2.0 или любая более поздняя версия».

Принятие

Для лицензирования

Идентификатор лицензии SPDX может быть добавлен в начало файлов исходного кода в виде короткой строки, однозначно указывающей на используемую лицензию. SPDX-License-IdentifierСинтаксис, впервые предложенный Das U-Boot в 2013 году, стал частью SPDX в версии 2.1. В 2017 году FSFE запустил REUSE, который предоставляет инструменты для проверки комментариев и эффективного извлечения информации об авторских правах. [23]

Идентификатор лицензии SPDX также используется в ряде менеджеров пакетов, таких как npm , [24] Python, [25] и Rust cargo. [26] Выражения лицензии SPDX используются в метаданных пакета RPM в Fedora Linux , заменяя более раннее использование системы Callaway. [27] Debian использует немного другую спецификацию лицензии. [28]

Смотрите также

Ссылки

  1. ^ Стюарт, Кейт (25 мая 2021 г.). «SPDX: он уже используется для глобальной спецификации программного обеспечения (SBOM) и безопасности цепочки поставок». Linux Foundation . Получено 13 августа 2021 г.
  2. ^ "Обзор существующих форматов и стандартов SBOM" (PDF) . Национальное управление по телекоммуникациям и информации . 25 октября 2019 г. стр. 9. Получено 13 августа 2021 г.
  3. ^ abc Бриджуотер, Адриан (19 августа 2011 г.). «Linux Foundation облегчает проблемы лицензирования открытого исходного кода». Computer Weekly . Получено 13 августа 2021 г.
  4. ^ Рашгроув, Гарет (16 июня 2021 г.). «Развитие стандартов SBOM: Snyk и SPDX» . Получено 14 августа 2021 г.
  5. ^ "Текущая версия SPDX". spdx.dev . Получено 2022-11-22 .
  6. ^ "SPDX и NTIA Минимальные элементы для SBOM HOWTO". spdx.github.io .
  7. ^ goneall. "Понимание профилей SPDX – SPDX" . Получено 2024-05-19 .
  8. ^ "Release v2.3". github.com/spdx . Получено 2022-11-22 .
  9. ^ "Release v2.2.2". github.com/spdx . Получено 2022-06-11 .
  10. ^ ab "ISO/IEC 5962:2021 Информационные технологии — Спецификация SPDX® V2.2.1". iso.org . Получено 01.12.2021 .
  11. ^ "SPDX 2.2 Specification Released". Linux Foundation. 7 мая 2020 г. Получено 01.12.2021 г.
  12. ^ "General Meeting/Minutes/2016-11-03". wiki.spdx.org . 3 ноября 2016 г. Получено 2021-12-01 .
  13. ^ ab "Linux Foundation's Open Compliance Initiative Releases New SPDX Specification". Linux Foundation. 4 октября 2016 г. Получено 01.12.2021 г.
  14. ^ "Что нового в SPDX 2.0". LWN.net . 20 мая 2015 г. Получено 01.12.2021 г.
  15. ^ "Рабочая группа SPDX Linux Foundation выпускает новую версию стандарта обмена данными о программных пакетах". Linux Foundation. 22 октября 2013 г. Получено 01.12.2021 г.
  16. ^ "Рабочая группа SPDX Linux Foundation выпускает новую версию стандарта обмена данными о программных пакетах". Linux Foundation. 30 августа 2012 г. Получено 01.12.2021 г.
  17. ^ "Минимальные элементы для спецификации программного обеспечения (SBOM)" (PDF) . Национальное управление по телекоммуникациям и информации . Получено 2021-12-01 .
  18. ^ Бернард, Аллен (9 сентября 2021 г.). «SPDX становится международно признанным стандартом». TechRepublic . Получено 01.12.2021 .
  19. ^ Оденс, Фил (2010-06-23). ​​"Формат обмена данными программного пакета (SPDX)". Dr Dobb's . Получено 2012-08-31 .
  20. ^ "Joinup Licensing Assistant" . Получено 31 марта 2020 г. .
  21. ^ Ричард Столлман. «Для ясности, пожалуйста, не говорите «Лицензировано по GNU GPL 2»!». GNU . Получено 24.05.2018 .
  22. ^ Джилейн Лавджой (5 января 2018 г.). "License List 3.0 Released!". spdx.dev . Архивировано из оригинала 2018-01-05 . Получено 2021-09-02 .
  23. ^ «Решение проблемы соответствия лицензии у источника: добавление идентификаторов лицензий SPDX — Linux Foundation». www.linuxfoundation.org .
  24. ^ "package.json | Документация npm". docs.npmjs.com .
  25. ^ «PEP 639 – Улучшение ясности лицензии с помощью лучших метаданных пакета». peps.python.org .
  26. ^ "Формат манифеста - Грузовая книга". doc.rust-lang.org .
  27. ^ "Лицензия: поле в файле спецификации". Юридическая документация Fedora . Получено 30 июля 2023 г.
  28. ^ "Машиночитаемый файл Debian/Copyright". www.debian.org .

Внешние ссылки