Resumo

  • Uma expressão SPDX válida representa informação de licença, não um resultado de conformidade, permissão, lançamento ou implantação.
  • Declaração do autor, informação observada em arquivo e conclusão do criador de um documento são registros distintos, mesmo quando usam a mesma expressão.
  • Um recibo que conserva origem, escopo, divergência e decisão separada evita que um identificador receba autoridade que não possui.

A facilidade de uma linha

Uma linha como MIT, Apache-2.0 AND MIT ou uma expressão com WITH resolve um problema real de intercâmbio. Pessoas e ferramentas podem reconhecer a mesma forma sem reconstituir cada cabeçalho em linguagem natural. A utilidade, porém, cria uma tentação: deixar que a última célula de uma planilha pareça responder a todas as perguntas anteriores e posteriores.

A especificação SPDX define a gramática de expressões de licença. Ela trata de identificadores, referências, exceções e operadores como AND, OR, WITH e +. Isso responde se a representação é válida nessa gramática. Não responde se todos os arquivos relevantes foram considerados, se uma obrigação foi satisfeita, se uma política interna se aplica ou se um responsável aprovou uma ação concreta.

O próprio SPDX apresenta uma fronteira clara: coleta e comunica fatos e não faz interpretações jurídicas de licenças ou de conformidade com licenças. A fronteira não torna a expressão fraca. Ela impede que um formato comum finja criar uma decisão comum entre organizações que podem ter políticas, contratos, riscos e responsabilidades operacionais diferentes.

Registros que não têm o mesmo dono

No nível do pacote, a licença declarada registra as licenças declaradas pelos autores. A especificação 2.3 diz que informação vinda de um repositório de terceiros não deve ser inserida nesse campo. A origem importa: o campo responde ao que os autores apresentaram, não ao que uma pessoa descobriu mais tarde em outra fonte.

Esse estado pode conter uma expressão, NONE, NOASSERTION ou estar ausente, e cada alternativa possui significado informacional dentro do formato. Nenhuma delas estabelece, sem outro ato, que não existe licença, que não há obrigação ou que o destinatário está autorizado a prosseguir. Transformar uma lacuna de informação em um selo de aprovação torna a próxima correção menos inteligível.

A licença concluída tem outra função. Ela registra o que o criador de um documento SPDX concluiu que rege o pacote, ou um valor alternativo quando não consegue determinar isso. A conclusão pode organizar uma análise importante, mas seu autor não se torna autor do pacote e sua conclusão não se torna regra para todos os destinatários. Quando a conclusão diverge da declaração, a especificação pede uma explicação escrita nos comentários de licença.

O mesmo padrão aparece no nível do arquivo. Informação efetivamente encontrada no arquivo e licença concluída são campos diferentes. A diferença é uma pista sobre observação, escopo ou raciocínio, não uma inconsistência que deva ser apagada. Um arquivo pode mudar; uma observação pode ser refeita; uma conclusão pode ser corrigida e apontar o que motivou a correção. Essa trilha evita a ficção de que todos sempre concordaram.

O que a expressão não decide

Depois de registrar as informações, uma organização pode precisar decidir sobre revisão adicional, uma regra de distribuição, uma exceção ou uma implantação. As fontes SPDX deste artigo não decidem nenhuma dessas questões para um pacote, arquivo, produto ou transação específico. Tampouco selecionam jurisdição, proprietário de política, condição comercial ou remédio.

O uso disciplinado não despreza a expressão por ela não decidir tudo. Uma expressão pode tornar uma declaração auditável, revelar que duas equipes falam de registros diferentes e permitir que outra pessoa repita o começo de uma avaliação. O que ela não deve fazer é ser apresentada como se a avaliação e a decisão já estivessem contidas na sua sintaxe.

Recibo de expressão e decisão

Um recibo complementar pode preservar a fronteira sem alterar o SPDX. Primeiro, identifica arquivo, pacote, artefato ou versão e, quando houver, uma referência estável. Depois, identifica o tipo de registro: declaração de autor, informação observada em arquivo ou conclusão de criador de documento. A expressão literal e sua fonte devem permanecer visíveis.

Se conclusão e declaração ou observação forem diferentes, o motivo deve continuar no registro. A parte decisória só deve existir quando uma decisão real existe: proprietário, versão de política, escopo e data. Sem decisão, não avaliado é mais honesto que um identificador limpo lido como autorização implícita.

Autores, observadores, criadores de documento e responsáveis por política continuam então em seus próprios limites. A gramática compartilhada não transfere poder de uma função para outra.

Sources

  1. SPDX — Overview
  2. SPDX Specification 2.3 — Package Information
  3. SPDX Specification 2.2.2 — File Information
  4. SPDX Specification 3.0.1 — License Expressions