En VPN-grænseflade, en GPL-motor og et installationsprogram: hvad udleveres?
Kortlæg, hvad der distribueres, hvad der er ændret, og hvordan delene taler sammen, før du afgør, hvordan GPL- og OpenSSL-vilkår gælder for din VPN-grænsefladepakke.
Spørgsmålet kommer som et licensspørgsmål, men svaret begynder med en fortegnelse. En VPN-grænseflade, den OpenVPN-motor den styrer, et TLS-bibliotek og et installationsprogram kan have fire forskellige sæt vilkår, og produktets udseende siger intet om, hvilken fil der hører til hvilket sæt. Gå artefakterne igennem i den rækkefølge, de udleveres i, og det juridiske spørgsmål bliver meget snævrere, når du overdrager det til nogen, der er kvalificeret til at besvare det. Hvert trin indsnævrer det yderligere: hvad der distribueres, hvad der er ændret, og hvordan delene kommunikerer.
Begynd med det, installationsprogrammet lægger på disken
Tag installationsprogrammet eller pakken som udgivet, ikke en udviklingskopi, og list hver fil, den placerer på en ren maskine. Registrer versioner for grænsefladen, motoren og TLS-biblioteket, og noter, om motoren er en separat eksekverbar fil eller et bibliotek, der indlæses i samme proces.
Den sidste kendsgerning former alt det følgende. En separat eksekverbar fil, der startes over en socket, rejser et andet sæt spørgsmål end kode kompileret til én binær fil, og et installationsprogram, der blot placerer begge side om side, afgør ikke sagen i nogen retning. Bundling er en pakningsbeslutning, mens forholdet mellem programmerne er en arkitektonisk beslutning.
Skriv listen ned med versioner vedhæftet, fordi vilkårene er forskellige mellem hovedudgivelser.
dpkg -L openvpn | head -n 40
openssl version -aAdskil grænsefladen fra motoren
OpenVPNs kopieringsfil angiver GPL version 2 og dokumenterer en linking-undtagelse for OpenSSL, som er en specifik tilladelse med et afgrænset omfang og ikke en generel licens til at blande vilkår.
Fang den licenstekst, der udleveres med dit build, ikke den på projektets websted i dag. En udgivelse, der fastlåste en ældre gren, bærer den grens dokument. Skærmbilleder af en repositorieside er ikke en erstatning, fordi den fil, du har brug for, er den inde i artefakten. Gem den ved siden af installationsprogrammet, så pakken er komplet.
Beskriv derefter integrationen ærligt: starter grænsefladen motoren som en underordnet proces og taler en tekstprotokol, eller linker den et bibliotek og udveksler interne strukturer? Det andet arrangement er tæt forbundet på en måde, det første ikke er, og den forskel er det, en anmelder først vil spørge om.
Noter, hvilke filer du har ændret
Ændret kildekode ændrer analysen mere end nogen pakningsdetalje. Hvis du har patchet motoren, er patchen selv afledt arbejde, og forpligtelsen påhviler den, der distribuerer resultatet.
Registrer hver patch, dens formål og om den blev sendt opstrøms, fordi en patch, der aldrig forlod dit repository, stadig er en del af det, du udleverer, hvis du udleverer den binære fil.
Konfigurationsfiler, temaer og oversættelser lever normalt sammen med grænsefladen, men en oversættelse, der indlejrer motorens kildestrenge, er en lille påmindelse om, at grænsen går fil for fil og ikke mappe for mappe. Hold en diff mellem opstrømsudgivelsen og dit build, så svaret er tilgængeligt på anmodning i stedet for at blive rekonstrueret senere. Den diff er også den mest nyttige artefakt, når en revisor spørger, hvad der blev ændret.
Kontroller OpenSSL-versionen for sig
OpenSSL 3.0 og senere distribueres under Apache License 2.0, mens ældre udgivelser bærer OpenSSL/SSLeay-vilkårene. Det er forskellige dokumenter med forskellige forpligtelser, og en bundtet motor kan linke til hvilket som helst af dem, som dit build-system fandt.
Bekræft den version, der faktisk udleveres, i stedet for den, der nævnes i et build-script.
En OpenVPN-afhængighed gør ikke enhver OpenSSL-ændring til GPL-kode, og linking-undtagelsen fjerner ikke de andre forpligtelser, der følger med videredistribution af biblioteket. Behandl undtagelsen som én klausul i en større analyse, og registrer TLS-bibliotekets egne meddelelser sammen med alt andet.
Saml evidenspakken
Pakken har fire dele: filfortegnelsen med versioner, beskrivelsen af integrationen, listen over ændringer med diffs og licensteksterne som udleveret. Tilføj den meddelelsesfil, du distribuerer, og det sted, hvor kildekoden tilbydes, hvis dine forpligtelser kræver et tilbud.
Hold pakken under én ejer, så en udgivelse ikke kan slippe ud uden den.
Intet af dette afgør et juridisk spørgsmål, og det er pointen: det giver en kvalificeret anmelder fakta i stedet for et resumé, nogen har samlet fra hukommelsen. En leverandørs marketingbeskrivelse er ikke bevis for deres arkitektur, og dit eget gæt på den er heller ikke bevis.