stringtranslate.com

Intercambio de datos de paquetes de software

System Package Data Exchange ( SPDX ) es un estándar abierto capaz de representar sistemas con componentes de software como listas de materiales de software (SBOM) [1] y otras referencias de seguridad, datos e inteligencia artificial que respaldan una variedad de casos de uso de gestión de riesgos. SPDX permite la expresión de componentes, licencias , derechos de autor, referencias de seguridad y otros metadatos relacionados con el software. [2] Su propósito original era mejorar el cumplimiento de las licencias, [3] y desde entonces se ha ampliado para facilitar casos de uso adicionales, como la transparencia y la seguridad de la cadena de suministro. [4] SPDX es escrito por el Proyecto SPDX impulsado por la comunidad que involucra a expertos clave de la industria, organizaciones y entusiastas del código abierto bajo los auspicios de la Fundación Linux .

La especificación SPDX está reconocida como el estándar abierto internacional para seguridad, cumplimiento de licencias y otros artefactos de la cadena de suministro de software como ISO/IEC 5962:2021. La versión actual del estándar es 3.0. [5]

Estructura

SPDX Especificaciones Versión 2.x

El estándar SPDX 2.x define un documento SBOM, que contiene metadatos SPDX sobre el software. El documento en sí se puede expresar en varios formatos, incluidos JSON, YAML, RDF/XML, valor de etiqueta y hoja de cálculo. Cada documento SPDX describe uno o más elementos, que pueden ser un paquete de software, un archivo específico o un fragmento de un archivo. A cada elemento se le asigna un identificador único y los metadatos de un elemento pueden hacer referencia a otros elementos. [6]

SPDX Especificaciones Versión 3.0

SPDX 3.0 permite a los usuarios comunicar información a un nivel mucho más granular sin tener que empaquetarla como datos "sobre". Un principio de diseño clave en SPDX 3.0 es que todos los elementos pueden expresarse y referenciarse independientemente de cualquier otro elemento. Esta independencia es necesaria para admitir una variedad de casos de uso de análisis e intercambio de contenido y facilita la comunicación de elementos individuales de interés. La estructura de relaciones también se ha actualizado para que sea más expresiva y más fácil de entender en comparación con versiones anteriores de la especificación.

El modelo de datos SPDX 3.0 se basa en el modelo de datos de representación de conocimiento extensible del Marco de descripción de recursos (RDF), que proporciona una forma flexible y extensible de representar e intercambiar información. Los datos pueden serializarse en una variedad de formatos para almacenamiento y transmisión, incluidos, entre otros: - formato JSON-LD según se define en JSON-LD 1.1; - Formato Turtle (Terse RDF Triple Language) tal como se define en RDF 1.1 Turtle; - Formato N-Triples tal como se define en RDF 1.1 N-Triples; y - formato RDF/XML tal como se define en la sintaxis XML de RDF 1.1.

Perfiles SPDX 3.0

La especificación 3.0 introdujo el concepto de perfiles, diseñados para admitir varias áreas nuevas de casos de uso (por ejemplo, compilación, seguridad, inteligencia artificial, datos) sin aumentar la complejidad general. Los perfiles permiten a los usuarios llevar solo los casos de uso que les interesan sin la sobrecarga de los casos de uso que no les interesan y, al mismo tiempo, aumentan la cantidad de información que se puede recopilar directamente de los datos SPDX. Actualmente hay ocho perfiles disponibles para implementar en SPDX 3.0:

Historial de versiones

La primera versión de la especificación SPDX tenía como objetivo facilitar el cumplimiento de las licencias de software , [3] pero las versiones posteriores de la especificación agregaron capacidades destinadas a otros casos de uso, como la capacidad de contener referencias a vulnerabilidades de software conocidas . [13] Las versiones recientes de SPDX cumplen con los 'Elementos mínimos para una lista de materiales de software' de la NTIA . [17]

SPDX 2.2.1 se presentó a la Organización Internacional de Normalización (ISO) en octubre de 2020 y se publicó como ISO/IEC 5962:2021 Tecnología de la información — Especificación SPDX® V2.2.1 en agosto de 2021. [10] [18]

Identificador de licencia SPDX

Sintaxis

Cada licencia se identifica con un nombre completo, como "Mozilla Public License 2.0" y un identificador corto, aquí "MPL-2.0". Las licencias se pueden combinar por operadores ANDy OR, y agrupando (,.)

Por ejemplo, (Apache-2.0 OR MIT)significa que se puede elegir entre Apache-2.0( licencia Apache ) o MIT( licencia MIT ). Por otro lado, (Apache-2.0 AND MIT)significa que se aplican ambas licencias.

También hay un operador "+" que, cuando se aplica a una licencia, significa que también se aplican las versiones futuras de la licencia. Por ejemplo, Apache-1.1+significa que Apache-1.1puede Apache-2.0aplicarse (y versiones futuras, si las hubiera).

SPDX describe los términos exactos bajo los cuales se licencia un software. No intenta categorizar las licencias por tipo, por ejemplo describiendo licencias con términos similares a la Licencia BSD como "similares a BSD". [19]

En 2020, la Comisión Europea publicó su Joinup Licensing Assistant, [20] que permite seleccionar y comparar más de 50 licencias, con acceso a su identificador SPDX y al texto completo.

Identificadores de licencia obsoletos

La familia de licencias GNU (por ejemplo, la Licencia Pública General GNU versión 2 ) tiene la opción de elegir una versión posterior de la licencia incorporada. A veces, no estaba claro si la expresión SPDX GPL-2.0significaba "exactamente GPL versión 2.0" o "versión GPL". 2.0 o cualquier versión posterior". [21] Así, desde la versión 3.0 de la Lista de licencias SPDX, la familia de licencias GNU recibió nuevos nombres. [22] GPL-2.0-only significa "exactamente versión 2.0" y GPL-2.0-or-latersignifica "versión 2.0 o cualquier versión posterior".

Adopción

Para licencia

El identificador de licencia SPDX se puede agregar en la parte superior de los archivos de código fuente como una cadena corta que declara inequívocamente la licencia utilizada. La SPDX-License-Identifiersintaxis, iniciada por Das U-Boot en 2013, pasó a formar parte de SPDX en la versión 2.1. En 2017, la FSFE lanzó REUSE, que proporciona herramientas para validar el comentario y extraer de manera eficiente información de derechos de autor. [23]

El identificador de licencia SPDX también se utiliza en varios administradores de paquetes como npm , [24] Python, [25] y Rust cargo. [26] Las expresiones de licencia SPDX se utilizan en los metadatos del paquete RPM en Fedora Linux , reemplazando el uso anterior del sistema Callaway. [27] Debian utiliza una especificación de licencia ligeramente diferente. [28]

Ver también

Referencias

  1. ^ Stewart, Kate (25 de mayo de 2021). "SPDX: ya se utiliza para la lista de materiales de software global (SBOM) y la seguridad de la cadena de suministro". Fundación Linux . Consultado el 13 de agosto de 2021 .
  2. ^ "Encuesta de formatos y estándares SBOM existentes" (PDF) . Administración Nacional de Telecomunicaciones e Información . 25 de octubre de 2019. pág. 9 . Consultado el 13 de agosto de 2021 .
  3. ^ abc Bridgwater, Adrian (19 de agosto de 2011). "La Fundación Linux alivia los problemas de licencias de código abierto". Computadora Semanal . Consultado el 13 de agosto de 2021 .
  4. ^ Rushgrove, Gareth (16 de junio de 2021). "Avanzando en los estándares SBOM: Snyk y SPDX" . Consultado el 14 de agosto de 2021 .
  5. ^ "SPDX versión actual". spdx.dev . Consultado el 22 de noviembre de 2022 .
  6. ^ "Elementos mínimos de SPDX y NTIA para SBOM HOWTO". spdx.github.io .
  7. ^ desaparecido. "Comprensión de los perfiles SPDX: SPDX" . Consultado el 19 de mayo de 2024 .
  8. ^ "Lanzamiento v2.3". github.com/spdx . Consultado el 22 de noviembre de 2022 .
  9. ^ "Versión v2.2.2". github.com/spdx . Consultado el 11 de junio de 2022 .
  10. ^ ab "ISO/IEC 5962:2021 Tecnología de la información - Especificación SPDX® V2.2.1". iso.org . Consultado el 1 de diciembre de 2021 .
  11. ^ "Lanzada la especificación SPDX 2.2". Fundación Linux. 7 de mayo de 2020 . Consultado el 1 de diciembre de 2021 .
  12. ^ "Junta General/Acta/03-11-2016". wiki.spdx.org . 3 de noviembre de 2016 . Consultado el 1 de diciembre de 2021 .
  13. ^ ab "La Iniciativa de Cumplimiento Abierto de la Fundación Linux lanza una nueva especificación SPDX". Fundación Linux. 4 de octubre de 2016 . Consultado el 1 de diciembre de 2021 .
  14. ^ "Novedades de SPDX 2.0". LWN.net . 20 de mayo de 2015 . Consultado el 1 de diciembre de 2021 .
  15. ^ "El grupo de trabajo SPDX de la Fundación Linux lanza una nueva versión del estándar de intercambio de datos de paquetes de software". Fundación Linux. 22 de octubre de 2013 . Consultado el 1 de diciembre de 2021 .
  16. ^ "El grupo de trabajo SPDX de la Fundación Linux lanza una nueva versión del estándar de intercambio de datos de paquetes de software". Fundación Linux. 30 de agosto de 2012 . Consultado el 1 de diciembre de 2021 .
  17. ^ "Los elementos mínimos para una lista de materiales de software (SBOM)" (PDF) . Administración Nacional de Telecomunicaciones e Información . Consultado el 1 de diciembre de 2021 .
  18. ^ Bernard, Allen (9 de septiembre de 2021). "SPDX se convierte en un estándar reconocido internacionalmente". República Tecnológica . Consultado el 1 de diciembre de 2021 .
  19. ^ Odence, Phil (23 de junio de 2010). "El formato de intercambio de datos del paquete de software (SPDX)". Dr. Dobb . Consultado el 31 de agosto de 2012 .
  20. ^ "Asistente de licencias para unirse" . Consultado el 31 de marzo de 2020 .
  21. ^ Richard Stallman. "¡En aras de la claridad, no diga" Con licencia GNU GPL 2 "!". GNU . Consultado el 24 de mayo de 2018 .
  22. ^ Jilayne Lovejoy (5 de enero de 2018). "¡Lanzada la lista de licencias 3.0!". spdx.dev . Archivado desde el original el 5 de enero de 2018 . Consultado el 2 de septiembre de 2021 .
  23. ^ "Resolver el cumplimiento de licencias en el origen: agregar ID de licencia SPDX - Fundación Linux". www.linuxfoundation.org .
  24. ^ "paquete.json | Documentos npm". docs.npmjs.com .
  25. ^ "PEP 639: mejora de la claridad de la licencia con mejores metadatos del paquete". peps.python.org .
  26. ^ "El formato del manifiesto: el libro de carga". doc.rust-lang.org .
  27. ^ "Licencia: campo en archivo de especificaciones". Documentación Legal de Fedora . Consultado el 30 de julio de 2023 .
  28. ^ "Archivo Debian/copyright legible por máquina". www.debian.org .

enlaces externos