Guias · 05

Identificadores SPDX e cabeçalhos de arquivo

Como escrever os cabeçalhos SPDX-License-Identifier e SPDX-FileCopyrightText, identificadores obsoletos (GPL-2.0→GPL-2.0-only), o campo license dos metadados de pacotes e a especificação REUSE.

Última verificação: 2026-09-23

O que é SPDX

O SPDX (Software Package Data Exchange) é um projeto da Linux Foundation e um padrão para representar, de forma legível por máquina, os componentes de um software e suas informações de licença. Em 2021 tornou-se o padrão internacional ISO/IEC 5962:2021. A parte mais usada são os identificadores curtos da SPDX License List. É a convenção de escrever apenas MIT, em vez de nomes variados como 'MIT License', 'The MIT license' ou 'licença MIT'.

As duas linhas do cabeçalho

Colocando as duas linhas abaixo como comentário no topo do arquivo-fonte, pessoas e ferramentas identificam na hora o titular e a licença daquele arquivo.

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

A aba Cabeçalho de arquivo do gerador cria essas duas linhas em 7 estilos de comentário.

Cuidado com identificadores obsoletos

A partir da SPDX License List 3.0 (dezembro de 2017), passou-se a explicitar no identificador a cláusula de versão das licenças GNU.

Identificador obsoletoIdentificador atual
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

Isso porque, escrevendo só GPL-3.0, não se sabe se é 'only' ou 'or later'. A diferença entre as duas formas está em only vs or-later.

Metadados de pacote

A maioria dos gerenciadores de pacotes aceita identificadores ou expressões SPDX.

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

O UNLICENSED do npm tem um sentido totalmente diferente de 'Unlicense': indica um pacote privado cujo uso não é permitido. Como a grafia é parecida, o erro é frequente.

REUSE: todo o repositório legível por máquina

A especificação REUSE da Free Software Foundation Europe (FSFE) define como aplicar cabeçalhos SPDX de forma consistente em todo o repositório.

  1. Coloque todos os textos de licença na pasta LICENSES/ com o nome identificadorSPDX.txt (por exemplo, LICENSES/MIT.txt).
  2. Inclua SPDX-FileCopyrightText e SPDX-License-Identifier em cada arquivo.
  3. Para arquivos que não aceitam comentários (imagens, JSON etc.), registre as informações em um arquivo ao lado nomedoarquivo.license ou no REUSE.toml na raiz do repositório.
  4. Verifique com a ferramenta reuse lint se nenhum arquivo ficou de fora.

Dicas práticas

Este texto é informação geral e não constitui aconselhamento jurídico. Para decisões importantes, consulte um profissional.

Fontes