Guías · 05

Identificadores SPDX y cabeceras de archivo

Cómo escribir las cabeceras SPDX-License-Identifier y SPDX-FileCopyrightText, identificadores obsoletos (GPL-2.0→GPL-2.0-only), el campo license de los metadatos de paquetes y la especificación REUSE.

Última revisión: 2026-09-23

Qué es SPDX

SPDX (Software Package Data Exchange) es un proyecto de la Linux Foundation y un estándar para expresar de forma legible por máquina los componentes de un software y su información de licencia. En 2021 se convirtió en el estándar internacional ISO/IEC 5962:2021. Lo más usado de él son los identificadores cortos de la lista de licencias SPDX: un acuerdo para escribir simplemente MIT en lugar de nombres dispares como 'MIT License', 'The MIT license' o 'licencia MIT'.

Las dos líneas de cabecera

Si pones estas dos líneas como comentario al principio de un archivo fuente, tanto personas como herramientas sabrán al instante el titular y la licencia de ese archivo.

// SPDX-FileCopyrightText: 2026 Jane Doe <jane@example.com>
// SPDX-License-Identifier: MIT

La pestaña Cabecera de archivo del generador crea estas dos líneas en 7 formatos de comentario.

Cuidado con los identificadores obsoletos

Desde la lista de licencias SPDX 3.0 (diciembre de 2017), la cláusula de versión de las licencias GNU se refleja en el identificador.

Identificador obsoletoIdentificador actual
GPL-2.0GPL-2.0-only
GPL-2.0+GPL-2.0-or-later
GPL-3.0GPL-3.0-only
LGPL-2.1LGPL-2.1-only
AGPL-3.0AGPL-3.0-only

El motivo es que, si solo se escribe GPL-3.0, no se sabe si es 'only' u 'or later'. La diferencia entre ambas está explicada en only vs or-later.

Metadatos de paquetes

La mayoría de los gestores de paquetes aceptan identificadores o expresiones SPDX.

EcosistemaArchivoEjemplo
npmpackage.json"license": "MIT" · para privados, "UNLICENSED"
RustCargo.tomllicense = "MIT OR Apache-2.0"
Pythonpyproject.tomllicense = "Apache-2.0" (PEP 639)
Mavenpom.xmlNombre y URL dentro de <licenses>

El UNLICENSED de npm significa algo completamente distinto de 'Unlicense': indica un paquete privado cuyo uso no está permitido. Como se escriben parecido, los errores son frecuentes.

REUSE: que todo el repositorio sea legible por máquina

La especificación REUSE de la Free Software Foundation Europe (FSFE) define cómo aplicar las cabeceras SPDX de forma coherente en todo el repositorio.

  1. Pon los textos de todas las licencias en la carpeta LICENSES/ con el nombre IdentificadorSPDX.txt (p. ej., LICENSES/MIT.txt).
  2. Añade SPDX-FileCopyrightText y SPDX-License-Identifier a cada archivo.
  3. Para los archivos que no admiten comentarios (imágenes, JSON, etc.), indica la información en un archivo adjunto nombre.license o en REUSE.toml en la raíz del repositorio.
  4. Comprueba con la herramienta reuse lint que no falte ningún archivo.

Consejos prácticos

Este artículo es información general y no constituye asesoramiento jurídico. Para decisiones importantes, consulta con un profesional.

Fuentes