A pergunta chega como uma questão de licenciamento, mas a resposta começa com um inventário. Uma interface VPN, o motor OpenVPN que ela aciona, uma biblioteca TLS e um instalador podem ter quatro conjuntos diferentes de termos, e a aparência do produto não lhe diz nada sobre qual arquivo pertence a qual conjunto. Percorra os artefatos na ordem em que são distribuídos, e a questão legal fica muito mais estreita quando você a entrega a alguém qualificado para responder. Cada passo a estreita mais: o que é distribuído, o que foi alterado e como as partes comunicam.

Comece pelo que o instalador coloca no disco

Pegue o instalador ou pacote lançado, não uma cópia de desenvolvimento, e liste todos os arquivos que ele coloca numa máquina limpa. Registre as versões da interface, do motor e da biblioteca TLS, e anote se o motor é um executável separado ou uma biblioteca carregada no mesmo processo.

Esse último fato molda tudo o que vem a seguir. Um executável separado iniciado por um socket levanta um conjunto de perguntas diferente do código compilado num único binário, e um instalador que apenas coloca os dois lado a lado não decide a questão em nenhuma direção. O empacotamento é uma decisão de distribuição, enquanto a relação entre os programas é arquitetural.

Escreva a lista com as versões anexadas, porque os termos diferem entre versões principais.

dpkg -L openvpn | head -n 40
openssl version -a

Separe a interface do motor

O arquivo de cópia do OpenVPN indica a versão 2 da GPL e documenta uma exceção de ligação para o OpenSSL, que é uma permissão específica com escopo definido e não uma licença geral para misturar termos.

Capture o texto da licença que acompanha a sua compilação, não o que está hoje no site do projeto. Um lançamento que fixou um ramo mais antigo carrega o documento desse ramo. Capturas de tela de uma página de repositório não são um substituto, porque o arquivo de que você precisa é o que está dentro do artefato. Guarde-o ao lado do instalador para que o pacote fique completo.

Depois descreva a integração com honestidade: a interface inicia o motor como processo filho e fala um protocolo de texto, ou liga uma biblioteca e troca estruturas internas? A segunda disposição é íntima de uma forma que a primeira não é, e essa distinção é a primeira coisa que um revisor vai perguntar.

Anote quais arquivos você alterou

O código-fonte modificado muda a análise mais do que qualquer detalhe de empacotamento. Se você aplicou um patch ao motor, o patch em si é obra derivada, e a obrigação recai sobre quem distribui o resultado.

Registre cada patch, o seu propósito e se foi enviado ao projeto original, porque um patch que nunca saiu do seu repositório continua a fazer parte do que você distribui se distribuir o binário.

Arquivos de configuração, temas e traduções normalmente vivem com a interface, mas uma tradução que incorpora cadeias do código do motor é um pequeno lembrete de que a fronteira é por arquivo e não por diretório. Mantenha uma diferença entre o lançamento original e a sua compilação para que a resposta esteja disponível a pedido em vez de ser reconstruída depois. Essa diferença é também o artefato mais útil quando um auditor pergunta o que mudou.

Verifique a versão do OpenSSL separadamente

O OpenSSL 3.0 e posteriores são distribuídos sob a Licença Apache 2.0, enquanto as versões anteriores trazem os termos OpenSSL/SSLeay. São documentos diferentes com obrigações diferentes, e um motor empacotado pode ligar o que o seu sistema de compilação encontrou.

Confirme a versão realmente distribuída e não a indicada num script de compilação.

Uma dependência do OpenVPN não converte cada modificação do OpenSSL em código GPL, e a exceção de ligação não remove as outras obrigações que acompanham a redistribuição da biblioteca. Trate a exceção como uma cláusula dentro de uma análise mais ampla, e registre os próprios avisos da biblioteca TLS junto com tudo o resto.

Reúna o pacote de evidências

O pacote tem quatro partes: o inventário de arquivos com versões, a descrição da integração, a lista de modificações com diferenças e os textos de licença tal como são distribuídos. Adicione o arquivo de avisos que distribui e o local onde o código-fonte é oferecido, se as suas obrigações exigirem uma oferta.

Mantenha o pacote sob um único responsável para que nenhum lançamento possa sair sem ele.

Nada disso decide uma questão legal, e é esse o ponto: dá a um revisor qualificado os fatos em vez de um resumo montado de memória. A descrição de marketing de um fornecedor não é prova da sua arquitetura, e a sua própria suposição sobre ela também não é prova.

Artigos relacionados