Una interfície VPN, un motor GPL i un instal·lador: què es distribueix?
Dibuixeu què es distribueix, què s'ha modificat i com parlen les peces abans de decidir com s'apliquen les condicions de GPL i OpenSSL al vostre paquet d'interfície VPN.
La pregunta arriba com una qüestió de llicència, però la resposta comença amb un inventari. Una interfície VPN, el motor OpenVPN que mou, una biblioteca TLS i un instal·lador poden tenir quatre conjunts diferents de condicions, i l'aparença del producte no us diu res sobre quin fitxer pertany a quin conjunt. Recorreu els artefactes en l'ordre en què es distribueixen, i la qüestió legal es torna molt més estreta quan la passeu a algú qualificat per respondre-la. Cada pas l'estreny més: què es distribueix, què s'ha canviat i com es comuniquen les peces.
Comenceu pel que l'instal·lador posa al disc
Agafeu l'instal·lador o el paquet publicat, no una còpia de desenvolupament, i llisteu cada fitxer que col·loca en una màquina neta. Anoteu les versions de la interfície, del motor i de la biblioteca TLS, i indiqueu si el motor és un executable separat o una biblioteca carregada dins del mateix procés.
Aquest darrer fet dona forma a tot el que segueix. Un executable separat llançat per un sòcol planteja un conjunt de preguntes diferent del codi compilat en un sol binari, i un instal·lador que només posa tots dos costat a costat no decideix la qüestió en cap sentit. L'empaquetament és una decisió de distribució, mentre que la relació entre els programes és una decisió arquitectònica.
Escriviu la llista amb les versions adjuntes, perquè les condicions difereixen entre versions principals.
dpkg -L openvpn | head -n 40
openssl version -aSepareu la interfície del motor
El fitxer de còpia d'OpenVPN indica la versió 2 de la GPL i documenta una excepció d'enllaç per a OpenSSL, que és un permís específic amb un abast definit i no una llicència general per barrejar condicions.
Captureu el text de la llicència que es distribueix amb la vostra compilació, no el que hi ha avui al lloc web del projecte. Una publicació que va fixar una branca antiga porta el document d'aquella branca. Les captures de pantalla d'una pàgina de repositori no són un substitut, perquè el fitxer que necessiteu és el que hi ha dins de l'artefacte. Emmagatzemeu-lo al costat de l'instal·lador perquè el paquet sigui complet.
Després descriviu la integració amb franquesa: la interfície engega el motor com a procés fill i parla un protocol de text, o enllaça una biblioteca i intercanvia estructures internes? La segona disposició és íntima d'una manera que la primera no ho és, i aquesta distinció és el primer que preguntarà un revisor.
Anoteu quins fitxers heu canviat
El codi font modificat canvia l'anàlisi més que qualsevol detall d'empaquetament. Si heu pedaçat el motor, el pedaç mateix és obra derivada, i l'obligació recau sobre qui distribueix el resultat.
Registreu cada pedaç, la seva finalitat i si es va enviar als desenvolupadors originals, perquè un pedaç que mai no ha sortit del vostre repositori continua formant part del que distribuïu si distribuïu el binari.
Els fitxers de configuració, els temes i les traduccions solen viure amb la interfície, però una traducció que incrusta cadenes del codi del motor és un petit recordatori que la frontera és per fitxer i no per directori. Mantingueu una diferència entre la publicació original i la vostra compilació perquè la resposta estigui disponible a petició en lloc de reconstruir-se després. Aquesta diferència és també l'artefacte més útil quan un auditor pregunta què ha canviat.
Comproveu la versió d'OpenSSL per separat
OpenSSL 3.0 i posteriors es distribueixen sota la llicència Apache 2.0, mentre que les versions antigues porten les condicions OpenSSL/SSLeay. Són documents diferents amb obligacions diferents, i un motor empaquetat pot enllaçar el que el vostre sistema de compilació hagi trobat.
Confirmeu la versió realment distribuïda i no la indicada en un script de compilació.
Una dependència d'OpenVPN no converteix cada modificació d'OpenSSL en codi GPL, i l'excepció d'enllaç no elimina les altres obligacions que comporta redistribuir la biblioteca. Tracteu l'excepció com una clàusula dins d'una anàlisi més àmplia, i anoteu els avisos propis de la biblioteca TLS al costat de tota la resta.
Aplegueu el paquet d'evidències
El paquet té quatre parts: l'inventari de fitxers amb versions, la descripció de la integració, la llista de modificacions amb les diferències i els textos de llicència tal com es distribueixen. Afegiu el fitxer d'avisos que distribuïu i el lloc on s'ofereix el codi font, si les vostres obligacions exigeixen una oferta.
Mantingueu el paquet sota un sol responsable perquè cap publicació no pugui sortir sense ell.
Res d'això no decideix una qüestió legal, i aquest és el punt: dona a un revisor qualificat els fets en lloc d'un resum que algú ha muntat de memòria. La descripció de màrqueting d'un proveïdor no és una prova de la seva arquitectura, i la vostra pròpia conjectura sobre això tampoc no és una prova.