El Intercambio de Datos de Paquetes de Sistemas ( SPDX , anteriormente Intercambio de Datos de Paquetes de Software ) es un estándar abierto capaz de representar sistemas con componentes digitales como listas de materiales (BOM). [ 2 ] Diseñado inicialmente para describir componentes de software, SPDX puede describir los componentes de sistemas de software, modelos de IA, compilaciones de software, datos de seguridad y otros paquetes de datos. SPDX permite la expresión de componentes, licencias , derechos de autor, referencias de seguridad y otros metadatos relacionados con los sistemas. [ 3 ]
El propósito original de SPDX era mejorar el cumplimiento de las licencias, [ 4 ] y desde entonces se ha ampliado para facilitar casos de uso adicionales como la transparencia y la seguridad de la cadena de suministro. [ 5 ] SPDX es desarrollado 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 Linux Foundation .
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 según ISO/IEC 5962:2021. A partir de agosto de 2025. , la última versión del estándar ha sido la 3.0.1. [ 1 ]
Estructura
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í puede expresarse en múltiples formatos, incluyendo JSON, YAML, RDF/XML, etiquetas-valor y hojas 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 ]
Versión 3.0
SPDX 3.0 permite a los usuarios comunicar información con un nivel de detalle mucho mayor, sin necesidad de empaquetarla como datos de "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 diversos casos de uso de intercambio y análisis de contenido, y facilita la comunicación de elementos individuales de interés. La estructura de relaciones también se ha actualizado para ser más expresiva y 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 Marco de Descripción de Recursos (RDF). Los datos pueden serializarse en diversos formatos para su almacenamiento y transmisión, incluidos los definidos en RDF 1.1, como JSON-LD, Turtle (lenguaje de triples RDF conciso), N-Triples y RDF/XML.
Perfiles SPDX 3.0
La especificación 3.0 introdujo perfiles para admitir la expansión de casos de uso más allá del software, sin aumentar la complejidad general. Los perfiles permiten a los usuarios definir datos para los casos de uso que necesitan, al tiempo que aumentan la cantidad de información que se puede recopilar directamente de los datos SPDX. SPDX 3.0 define ocho perfiles:
- Conceptos básicos: conceptos fundamentales comunes a todos los perfiles.
- Software : conceptos relacionados con los artefactos de software
- Seguridad: metadatos relacionados con la seguridad específicos de un programa informático.
- Compilación: información necesaria para describir una instancia de una compilación de software.
- IA : conceptos y elementos de datos relacionados con un sistema y modelo de IA.
- Conjunto de datos : conceptos relacionados con un conjunto de datos, incluyendo el proceso de preparación, las características y los métodos de acceso.
- Licencias : información de licencia necesaria para el cumplimiento de los casos de uso típicos de licencias.
- Lite : subconjunto de la especificación SPDX destinado a equilibrar el estándar SPDX y los flujos de trabajo reales en algunas industrias.
Historial de versiones
La primera versión de la especificación SPDX tenía como objetivo facilitar el cumplimiento de las licencias de software , [ 4 ] pero las versiones posteriores añadieron funcionalidades destinadas a otros casos de uso, como la posibilidad de incluir referencias a vulnerabilidades de software conocidas . [ 14 ] Las versiones recientes de SPDX cumplen con los "Elementos mínimos para una lista de materiales de software" de la NTIA . [ 18 ]
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. [ 11 ] [ 19 ]
Identificador de licencia SPDX
Sintaxis
Cada licencia se identifica mediante un nombre completo, como "Mozilla Public License 2.0", y un identificador corto, en este caso "MPL-2.0". Las licencias se pueden combinar mediante 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 existe el operador "+" que, al aplicarse a una licencia, significa que las versiones futuras de la misma también se aplicarán. Por ejemplo, Apache-1.1+significa que Apache-1.1y Apache-2.0pueden aplicarse (y las 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 las licencias con términos similares a la Licencia BSD como "similares a BSD". [ 20 ]
En 2020, la Comisión Europea publicó su Asistente de Licencias Joinup, [ 21 ] que permite la selección y comparación de más de 50 licencias, con acceso a su identificador SPDX y 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 "GPL versión 2.0 o cualquier versión posterior". [ 22 ] Por lo tanto, desde la versión 3.0 de la Lista de Licencias SPDX, la familia de licencias GNU recibió nuevos nombres. [ 23 ]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 obtener la licencia
El identificador de licencia SPDX se puede agregar al principio de los archivos de código fuente como una cadena corta que declara inequívocamente la licencia utilizada. La SPDX-License-Identifiersintaxis, desarrollada por Das U-Boot en 2013, se incorporó a SPDX en la versión 2.1. En 2017, la FSFE lanzó REUSE , que proporciona herramientas para validar el comentario y extraer de forma eficiente la información de derechos de autor. [ 24 ]
El identificador de licencia SPDX también se utiliza en varios gestores de paquetes como npm , [ 25 ] Python, [ 26 ] y Rust cargo. [ 27 ] Las expresiones de licencia SPDX se utilizan en los metadatos de los paquetes RPM en Fedora Linux , reemplazando el uso anterior del sistema Callaway. [ 28 ] Debian utiliza una especificación de licencia ligeramente diferente. [ 29 ]
Véase también
Referencias
- 1 2 3 spdx. "Release Patch release 3.0.1 · spdx/spdx-3-model" . GitHub . Consultado el 2 de septiembre de 2025 .
- ↑ 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" . Linux Foundation . Consultado el 13 de agosto de 2021 .
- ↑ "Encuesta sobre formatos y estándares de 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 .
- 1 2 3 Bridgwater, Adrian (19 de agosto de 2011). "La Fundación Linux alivia los problemas de licencias de código abierto" . Open Source Insider . Computer Weekly . Archivado del original el 20 de agosto de 2021. Recuperado el 13 de agosto de 2021 .
- ↑ Rushgrove, Gareth (16 de junio de 2021). "Avances en los estándares SBOM: Snyk y SPDX" . Snyk . Consultado el 14 de agosto de 2021 .
- ↑ Winslow, Steve (2023-04-06). "SPDX y NTIA Elementos mínimos para SBOM HOWTO" . spdx.github.io .
- ↑ spdx. "Release Patch release 3.0.1 · spdx/spdx-spec" . GitHub . Consultado el 2 de septiembre de 2025 .
- ↑ goneall (9 de octubre de 2023). "Entendiendo los perfiles SPDX" . SPDX . Consultado el 19 de mayo de 2024 .
- ↑ goneall (2 de noviembre de 2022). "Versión v2.3" . spdx/spdx-spec . GitHub . Consultado el 22 de noviembre de 2022 .
- ↑ kestewart (27 de abril de 2022). "Versión v2.2.2" . spdx/spdx-spec . GitHub . Consultado el 11 de junio de 2022 .
- 1 2 "ISO/IEC 5962:2021 Tecnología de la información — Especificación SPDX® V2.2.1" . ISO . Agosto de 2021. Recuperado el 1 de diciembre de 2021 .
- ↑ Stewart, Kate (7 de mayo de 2020). "Se publica la especificación SPDX 2.2" . Linux Foundation . Consultado el 1 de diciembre de 2021 .
- ↑ "Asamblea General/Actas/2016-11-03" . SPDX Wiki . 3 de noviembre de 2016. Consultado el 1 de diciembre de 2021 .
- 1 2 "La iniciativa de cumplimiento abierto de la Fundación Linux publica una nueva especificación SPDX" . Fundación Linux. 4 de octubre de 2016. Consultado el 1 de diciembre de 2021 .
- ↑ "Novedades de SPDX 2.0" . LWN.net . 20 de mayo de 2015. Consultado el 1 de diciembre de 2021 .
- ↑ "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 .
- ↑ "El grupo de trabajo SPDX de la Fundación Linux publica 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 .
- ↑ "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 .
- ↑ Bernard, Allen (9 de septiembre de 2021). "SPDX se convierte en un estándar reconocido internacionalmente" . TechRepublic . Consultado el 1 de diciembre de 2021 .
- ↑ Odence, Phil (23 de junio de 2010). "El formato de intercambio de datos de paquetes de software (SPDX)" . Dr. Dobb's . Recuperado el 31 de agosto de 2012 .
- ↑ "Joinup Licensing Assistant" . Consultado el 31 de marzo de 2020 .
- ↑ Richard Stallman. "Por favor, para mayor claridad, no diga "Licenciado bajo GNU GPL 2"!" . GNU . Consultado el 24 de mayo de 2018 .
- ↑ Jilayne Lovejoy (5 de enero de 2018). "¡Lista de licencias 3.0 publicada!" . spdx.dev . Archivado del original el 5 de enero de 2018 . Consultado el 2 de septiembre de 2021 .
- ↑ "Resolviendo el cumplimiento de licencias en el origen: agregando identificadores de licencia SPDX - Linux Foundation" . www.linuxfoundation.org .
- ↑ "package.json | npm Docs" . docs.npmjs.com .
- ↑ "PEP 639 – Mejorando la claridad de las licencias con mejores metadatos de paquetes" . peps.python.org .
- ↑ "El formato del manifiesto - El libro de carga" . doc.rust-lang.org .
- ↑ "Licencia: campo en el archivo de especificaciones" . Documentación legal de Fedora . Consultado el 30 de julio de 2023 .
- ↑ "Archivo debian/copyright legible por máquina" . www.debian.org .
Enlaces externos
- Sitio web oficial
- SPDX en GitHub
- Nathan Willis: Un estudio de caso de SPDX LWN.net
- Estándares informáticos
- Proyectos de la Fundación Linux
- normas ISO
- Normas IEC