Klausimas ateina kaip licencijavimo klausimas, bet atsakymas prasideda nuo inventorizacijos. VPN sąsaja, ją valdantis OpenVPN variklis, TLS biblioteka ir diegimo programa gali turėti keturis skirtingus sąlygų rinkinius, o produkto išvaizda nieko nepasako apie tai, kuris failas priklauso kuriam rinkiniui. Pereikite artefaktus ta tvarka, kuria jie platinami, ir teisinis klausimas taps daug siauresnis, kai perduosite jį kam nors, kas kvalifikuotas atsakyti. Kiekvienas žingsnis jį labiau susiaurina: kas platinama, kas pakeista ir kaip dalys bendrauja.

Pradėkite nuo to, ką diegimo programa įrašo į diską

Paimkite išleidžiamą diegimo programą arba paketą, o ne kūrimo kopiją, ir išvardykite kiekvieną failą, kurį ji įrašo į švarų kompiuterį. Užrašykite sąsajos, variklio ir TLS bibliotekos versijas ir pažymėkite, ar variklis yra atskiras vykdomasis failas, ar biblioteka, įkeliama į tą patį procesą.

Šis paskutinis faktas formuoja viską, kas toliau. Atskiras vykdomasis failas, paleidžiamas per lizdą, kelia kitokius klausimus nei kodas, sukompiliuotas į vieną binarinį failą, o diegimo programa, kuri tiesiog padeda abu greta, klausimo nei viena, nei kita kryptimi neišsprendžia. Sujungimas yra pakavimo sprendimas, o programų tarpusavio santykis yra architektūrinis.

Užsirašykite sąrašą su versijomis, nes sąlygos skiriasi tarp pagrindinių leidimų.

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

Atskirkite sąsają nuo variklio

OpenVPN kopijavimo failas nurodo GPL 2 versiją ir dokumentuoja susiejimo išimtį OpenSSL atžvilgiu, kuri yra konkretus leidimas su apibrėžta apimtimi, o ne bendra licencija maišyti sąlygas.

Užfiksuokite licencijos tekstą, platinamą su jūsų kompiliacija, o ne tą, kuris šiandien yra projekto svetainėje. Leidimas, užfiksavęs senesnę šaką, neša tos šakos dokumentą. Saugyklos puslapio ekrano kopijos nėra pakaitalas, nes failas, kurio jums reikia, yra tas, kuris yra artefakto viduje. Saugokite jį greta diegimo programos, kad paketas būtų išsamus.

Tada sąžiningai apibūdinkite integraciją: ar sąsaja paleidžia variklį kaip antrinį procesą ir kalba teksto protokolu, ar susieja biblioteką ir keičiasi vidinėmis struktūromis? Antroji sankloda yra glaudi taip, kaip pirmoji nėra, ir būtent šį skirtumą recenzentas paklaus pirmiausia.

Pažymėkite, kuriuos failus pakeitėte

Pakeistas pirminis kodas labiau keičia analizę nei bet kokia pakavimo detalė. Jei pataisėte variklį, pati pataisa yra išvestinis kūrinys, o prievolė tenka tam, kas platina rezultatą.

Užrašykite kiekvieną pataisą, jos paskirtį ir ar ji buvo išsiųsta į pradinį projektą, nes pataisa, kuri niekada neišėjo iš jūsų saugyklos, vis tiek yra jūsų platinamo turinio dalis, jei platinote binarinį failą.

Konfigūracijos failai, temos ir vertimai paprastai gyvena su sąsaja, bet vertimas, įterpiantis variklio pirminio kodo eilutes, yra mažas priminimas, kad riba eina pagal failą, o ne pagal katalogą. Išsaugokite skirtumą tarp pradinio projekto leidimo ir jūsų kompiliacijos, kad atsakymas būtų prieinamas paprašius, o ne vėliau atkuriamas. Tas skirtumas taip pat yra naudingiausias artefaktas, kai auditorius klausia, kas pasikeitė.

Patikrinkite OpenSSL versiją atskirai

OpenSSL 3.0 ir naujesnės versijos platinamos pagal Apache License 2.0, o senesni leidimai neša OpenSSL/SSLeay sąlygas. Tai skirtingi dokumentai su skirtingomis prievolėmis, o sujungtas variklis gali susieti bet kurią iš jų, kurią rado jūsų kompiliavimo sistema.

Patvirtinkite faktiškai platinamą versiją, o ne tą, kuri nurodyta kompiliavimo scenarijuje.

OpenVPN priklausomybė nepaverčia kiekvieno OpenSSL pakeitimo GPL kodu, o susiejimo išimtis nepanaikina kitų prievolių, kylančių platinant biblioteką. Traktuokite išimtį kaip vieną sąlygą platesnėje analizėje ir užrašykite pačios TLS bibliotekos pranešimus kartu su visa kita.

Surinkite įrodymų paketą

Paketą sudaro keturios dalys: failų inventorius su versijomis, integracijos aprašymas, pakeitimų sąrašas su skirtumais ir licencijų tekstai tokie, kokie platinami. Pridėkite platinamą pranešimų failą ir vietą, kur siūlomas pirminis kodas, jei jūsų prievolės reikalauja pasiūlymo.

Laikykite paketą vieno savininko rankose, kad nė vienas leidimas negalėtų išeiti be jo.

Niekas iš to neišsprendžia teisinio klausimo, ir tai yra esmė: tai duoda kvalifikuotam recenzentui faktus, o ne iš atminties surinktą santrauką. Tiekėjo rinkodaros aprašymas nėra jo architektūros įrodymas, o jūsų pačių spėjimas apie ją taip pat nėra įrodymas.

Susiję straipsniai