VPN-käyttöliittymä, GPL-moottori ja asennusohjelma: mitä toimitetaan?
Kartoita, mitä jaetaan, mitä muutettiin ja miten osat keskustelevat keskenään, ennen kuin päätät, miten GPL:n ja OpenSSL:n ehdot koskevat VPN-käyttöliittymäpakettiasi.
Kysymys saapuu lisenssikysymyksenä, mutta vastaus alkaa inventaariosta. VPN-käyttöliittymällä, sitä ohjaavalla OpenVPN-moottorilla, TLS-kirjastolla ja asennusohjelmalla voi olla neljä eri ehtokokonaisuutta, eikä tuotteen ulkoasu kerro sinulle mitään siitä, mikä tiedosto kuuluu mihinkin kokonaisuuteen. Käy artefaktit läpi siinä järjestyksessä kuin ne toimitetaan, ja oikeudellinen kysymys kapenee huomattavasti, kun annat sen jonkun pätevän vastattavaksi. Jokainen vaihe kaventaa sitä lisää: mitä jaetaan, mitä muutettiin ja miten osat viestivät.
Aloita siitä, minkä asennusohjelma laittaa levylle
Ota julkaistu asennusohjelma tai -paketti, älä kehityskopiota, ja luettele jokainen tiedosto, jonka se sijoittaa puhtaalle koneelle. Kirjaa käyttöliittymän, moottorin ja TLS-kirjaston versiot ja merkitse, onko moottori erillinen suoritettava tiedosto vai samaan prosessiin ladattava kirjasto.
Tämä viimeinen seikka muovaa kaiken seuraavan. Pistokkeen yli käynnistetty erillinen suoritettava tiedosto nostaa esiin eri kysymyksiä kuin yhdeksi binääriksi käännetty koodi, eikä asennusohjelma, joka vain sijoittaa molemmat vierekkäin, ratkaise asiaa kumpaankaan suuntaan. Yhdistäminen on pakkausratkaisu, kun taas ohjelmien välinen suhde on arkkitehtoninen.
Kirjoita luettelo muistiin versiot liitettyinä, koska ehdot eroavat pääjulkaisujen välillä.
dpkg -L openvpn | head -n 40
openssl version -aErota käyttöliittymä moottorista
OpenVPN:n kopiointitiedosto ilmoittaa GPL-version 2 ja dokumentoi OpenSSL:ää koskevan linkityspoikkeuksen, joka on määritellyn laajuinen erityislupa eikä yleinen lupa sekoittaa ehtoja.
Tallenna lisenssiteksti, joka toimitetaan buildisi mukana, älä sitä, joka on projektin verkkosivulla tänään. Julkaisu, joka kiinnitti vanhemman haaran, kantaa kyseisen haaran asiakirjan. Kuvakaappaukset repositorion sivusta eivät ole korvike, koska tarvitsemasi tiedosto on artefaktin sisällä. Säilytä se asennusohjelman vieressä, jotta paketti on täydellinen.
Kuvaile sitten integraatio rehellisesti: käynnistääkö käyttöliittymä moottorin lapsiprosessina ja puhuu tekstiprotokollaa, vai linkittääkö se kirjaston ja vaihtaa sisäisiä rakenteita? Jälkimmäinen järjestely on läheinen tavalla, jolla ensimmäinen ei ole, ja juuri tämän eron arvioija kysyy ensin.
Merkitse, mitkä tiedostot muutit
Muutettu lähdekoodi muuttaa analyysia enemmän kuin mikään pakkausyksityiskohta. Jos paikkasit moottoria, paikkaus itsessään on johdannaisteos, ja velvoite kuuluu sille, joka jakaa tuloksen.
Kirjaa jokainen paikkaus, sen tarkoitus ja se, lähetettiinkö se ylävirtaan, koska paikkaus, joka ei koskaan poistunut repositoriostasi, on silti osa sitä, mitä toimitat, jos toimitat binäärin.
Asetustiedostot, teemat ja käännökset elävät yleensä käyttöliittymän kanssa, mutta käännös, joka upottaa moottorin lähdekoodin merkkijonoja, on pieni muistutus siitä, että raja on tiedostokohtainen eikä hakemistokohtainen. Pidä ero ylävirran julkaisun ja buildisi välillä, jotta vastaus on saatavilla pyynnöstä eikä sitä tarvitse rakentaa uudelleen myöhemmin. Tämä ero on myös hyödyllisin artefakti, kun auditoija kysyy, mikä muuttui.
Tarkista OpenSSL-version erikseen
OpenSSL 3.0 ja uudemmat jaetaan Apache License 2.0 -lisenssillä, kun taas vanhemmat julkaisut kantavat OpenSSL/SSLeay-ehdot. Ne ovat eri asiakirjoja, joilla on eri velvoitteet, ja yhdistetty moottori voi linkittää kumpaan tahansa, jonka build-järjestelmäsi löysi.
Vahvista tosiasiallisesti toimitettu versio, ei build-skriptissä nimettyä.
OpenVPN-riippuvuus ei muuta jokaista OpenSSL-muutosta GPL-koodiksi, eikä linkityspoikkeus poista muita velvoitteita, jotka kirjaston edelleen jakamisesta seuraa. Käsittele poikkeusta yhtenä lausekkeena laajemmassa analyysissa ja kirjaa TLS-kirjaston omat ilmoitukset kaiken muun ohella.
Kokoa todisteaineisto
Paketissa on neljä osaa: tiedostoluettelo versioineen, integraation kuvaus, muutosluettelo eroineen ja lisenssitekstit toimitettuina. Lisää jakamasi ilmoitustiedosto ja paikka, jossa lähdekoodia tarjotaan, jos velvoitteesi edellyttävät tarjousta.
Pidä paketti yhden omistajan hallussa, jotta mikään julkaisu ei voi lähteä ilman sitä.
Mikään tästä ei ratkaise oikeudellista kysymystä, ja se on pointti: se antaa pätevälle arvioijalle tosiasiat eikä yhteenvetoa, jonka joku kokosi muistista. Toimittajan markkinointikuvaus ei ole todiste sen arkkitehtuurista, eikä oma arvauksesi siitä ole todiste.