Kaikki avoimen lähdekoodin lisenssit eivät ole samat. Jotkut niistä velvoittavat ohjelmistotoimittajan myöntämään patenttilisenssejä ohjelmiston käyttäjille ja kehittäjille. Muut lisenssit velvoittavat lisensoitua tuotetta tai kirjastoa käyttävän kehittäjän tarjoamaan tämän tuotteen tai kirjaston lähdekoodia samoin ehdoin. Toiset yksinkertaisesti luovuttavat koodin ilman minkäänlaista takuuta. Tässä artikkelissa yritän tuoda esiin tärkeimmät erot useimmin käytettyjen avoimen lähdekoodin lisenssien välillä ohjelmiston käyttäjän ja ohjelmistokehittäjän näkökulmasta.
Kun vuonna 1984 Richard Stallman aloitti GNU-projektin ilmaisen käyttöjärjestelmän luomiseksi, hän sai ajatuksen ohjelmistojen jakamisesta kehittäjien, insinöörien ja käyttäjien kesken; ja heidän pitäisi pystyä parantamaan sitä yhteistyössä samalla tavalla kuin yleensä tiedettä tehdään.
Tämä vaihtoehto poikkesi tavallisesta lisensoitujen ohjelmistojen käsitteestä, jonka useimmat ohjelmistoyritykset ja kehittäjät valitsivat ohjelmiensa jakamiseen ja myyntiin. Tänään, yli kolmekymmentä vuotta myöhemmin, avoimen lähdekoodin ohjelmistot jatkavat hitaasti teollisuutemme laajasti valloittamista: Linux, Android, Apache ja Git ovat esimerkkejä johtavien avoimen lähdekoodin tuotteista luokissaan.
Tässä artikkelissa käytän termejä 'avoimen lähdekoodin' ja 'ilmaisen' synonyymeinä viittaamalla ohjelmistoihin tai lisensseihin. Mielestäni molemmat termit ilmaisevat saman idean. 'Avoimen lähdekoodin' ilmaisee sen käytännön ja teknisellä tavalla, ja 'Free' -toiminnon avulla keskitytään käsitteen filosofiseen ja poliittiseen merkitykseen.
Valitettavasti sana 'ilmainen' englanniksi, sen lisäksi, että se on adjektiivi, joka liittyy 'vapauteen', tarkoittaa myös 'ilmaiseksi'. Tästä syystä haluan yleensä sanoa 'avoimen lähdekoodin'.
Oletan, että sinulla on jo likimääräinen käsitys avoimen lähdekoodin ohjelmistoista. Mutta kun aiomme puhua eri lisenssien yksityiskohdista, meidän on ensin puhuttava erityisistä ominaisuuksista, jotka määrittelevät avoimen lähdekoodin ohjelmistot.
Ensinnäkin: en ole asianajaja, eikä tämä ole oikeudellista neuvontaa. Jos olet epävarma, tutustu kyseisten lisenssien todelliseen tekstiin ja oikeusneuvojaasi.
Kaikki avoimen lähdekoodin ohjelmistot jaetaan Open Source Initiativen mukaan lisenssillä, joka antaa käyttäjille ja kehittäjille (lisenssinsaajille) tietyt oikeudet. Täydellinen luettelo on nähtävissä Avoimen lähdekoodin määritelmä , mutta tässä on yhteenveto:
Mutta sinun on pidettävä mielessä, että ohjelmistolisenssit puhuvat vain tekijänoikeuksien haltijoiden myöntämien oikeuksien käytöstä tai jakamisesta. Avoimen lähdekoodin lisenssit saattavat antaa sinun levittää ohjelmistoa tai johdettuja teoksia vapaasti, mutta kyseisiä käyttöoikeuksia voidaan rajoittaa myös joissakin maissa, joissa salausohjelmistojen vienti on kielletty. Samalla tavalla avoimen lähdekoodin lisenssit antavat sinun käyttää ohjelmistoa mihin tahansa tarkoitukseen, mutta se ei tarkoita, että ne sallivat sinun murtautua pankkiin käyttämällä avoimen lähdekoodin lisensoituja ohjelmistoja. Ohjelmistopatentit ovat toinen esimerkki tästä: jotkut avoimen lähdekoodin lisenssit myöntävät luvan käyttää patentteja vapaasti, mutta eivät kaikki.
Voimmeko siis käyttää avoimen lähdekoodin ohjelmistoa tuotteen tai projektin kehittämisessä? Pohjimmiltaan se riippuu käytetyn ohjelmiston lisenssistä ja aiotusta lopputuotteen lisenssistä. Eri lisensseillä on merkitystä myös silloin, kun haluat julkaista oman koodisi avoimen lähdekoodina ja päätät, mitä lisenssiä sinun tulisi käyttää.
Yksi melko mielenkiintoinen käsite avoimen lähdekoodin lisensseistä on tekijänoikeuksien vastakohta, jota yleensä kutsutaan copyleftiksi. Kun tekijänoikeuksia käytetään suojaamaan immateriaalioikeuksia (mukaan lukien ohjelmistot) kopioinnilta tai jakelulta, copyleft-tekniikkaa käytetään varmistamaan, että avoimen lähdekoodin immateriaalioikeudet ja ohjelmistot voidaan kopioida tai levittää avoimena lähdekoodina.
Sen vahvuuden mukaan on olemassa kahdenlaisia kopyleft:
On myös avoimen lähdekoodin lisenssejä, joissa ei ole copyleftia: he eivät yksinkertaisesti välitä johdettujen ohjelmistojen tulevasta avoimuudesta.
Lisenssien sallivuuden mukaan ne voidaan luokitella myös:
Yleensä vahvat copyleft-lisenssit ovat myös tiukkoja, ja heikot copyleft-lisenssit ovat sallivampia, mutta sen ei tarvitse olla niin.
On olemassa monia avoimen lähdekoodin lisenssejä. Open Source Initiative on jo hyväksynyt yli 80 niistä. Jotkut niistä ovat tarpeettomia ja niitä voidaan pitää vastaavina muiden kanssa. Toiset ovat erityisiä ohjelmistojulkaisijoiden (kuten NASA-lisenssin) tai tietyn ympäristön tai tarkoituksen (kuten Educational Community License tai Open Font License) kiinnostuksen kohteisiin.
Tämä lisenssien lisääntyminen perustuu tietyin ehdoin lisenssiin, joka avoimen lähdekoodin perusominaisuuksiin lisättynä sallii tai kieltää muun käytön. Esimerkkejä näistä lisäehdoista voivat olla:
Jo aiemmin sanotun mukaan jotkut lisenssit ovat sallivia, jolloin käyttäjät voivat yhdistää koodin eri tavalla lisensoidulla lähdekoodilla (ehkä lisäehdoilla). Tämä tapaus mahdollistaisi tällaisen avoimen lähdekoodin lisensoidun ohjelmiston sekoittamisen suljetun lähdekoodin ohjelmistoihin. Esimerkki tällaisesta lisenssistä on MIT-lisenssi.
Toiset ovat rajoittavampia, joten lähdekoodi voidaan yhdistää vain vastaavalla tavalla lisensoidun koodin kanssa, ja lopputulos on lisensoitava samalla alkuperäisellä lisenssillä. Esimerkki tällaisesta lisenssistä on General Public License (GPL).
Ehkä haluat yhdistää lisensoidun koodin kahteen eri rajoittavaan avoimen lähdekoodin lisenssiin. Käyttämällä avoimen lähdekoodin vapautta käyttää ohjelmistoa haluamallasi tavalla, voit tehdä tämän. Lopullista ohjelmaa ei kuitenkaan voida jakaa uudelleen, koska se tulisi jakaa kahdella lisenssillä, jotka eivät ole yhteensopivia keskenään.
Yksi esimerkki tilanteesta oli ZFS. ZFS on erittäin edistyksellinen ja innovatiivinen tiedostojärjestelmä, joka sisällytettiin OpenSolaris-ohjelmaan vuonna 2005. Se on avoimen lähdekoodin ohjelmisto, joka on lisensoitu yhteisen kehitys- ja jakelulisen (CDDL) ehtojen mukaisesti. Vaikka se on avoimen lähdekoodin koodi, sitä ei voida integroida Linux-ytimeen, koska sen lähdekoodi Linux jaetaan yleisen julkisen lisenssin, toisen rajoittavan avoimen lähdekoodin lisenssin, ehtojen mukaisesti. ZFS-tuella käännettyjä Linux-ytimen binäärejä ei voida jakaa lisenssiristiriidan takia.
Tällaiset ristiriidat voidaan ratkaista vain, jos kaikki avoimen lähdekoodin ohjelmien omistajat sopivat lisenssin muuttamisesta tai poikkeusehtojen lisäämisestä ohjelmistolisenssiin. Esimerkiksi: monet GPL-lisensoiduista ohjelmista on linkitetty OpenSSL-kirjastoon. OpenSSL-kirjastojakelulle on myönnetty käyttöoikeus, joka edellyttää lauseen ilmestymistä mainosmateriaaliin ja mahdollisia uudelleenjakeluja. Nämä lisäehdot eivät ole yhteensopivia GPL: n kanssa, ja tästä syystä OpenSSL: ää käyttävien GPL-tuotteiden kehittäjät ovat sisällyttäneet lisenssiinsä poikkeuksen, joka sallii nimenomaisen linkityksen OpenSSL: n kanssa.
Yritän nyt analysoida suosituimpia avoimen lähdekoodin lisenssejä ja huomauttaa niiden erilaiset ominaisuudet ja antaa pienen oppaan siitä, milloin niitä käytetään tai ei. Olen lajitellut ne vähemmän käytetyistä Musta ankka tietopankki .
Nestekaasu on suosituin avoimen lähdekoodin lisenssi. Sen on luonut FSF GNU-projektin lisenssinä, ja se on myös Linux-ytimen lisenssi.
Sen eroominaisuudet:
Yleensä käytetty lisenssiteksti sisältää tekstin, jonka mukaan ohjelmisto jaetaan GPL-version N (tai minkä tahansa myöhemmän version) ehtojen mukaisesti.
Tällä hetkellä käytössä on kaksi GPL-lisenssin versiota: v2 ja v3. Versio 3 julkaistiin vuonna 2007 ongelmien ratkaisemiseksi, jotka olivat ilmenneet version 2 julkaisun jälkeen vuonna 1991.
GPL v3 sisältää joitain ylimääräisiä lausekkeita ja ehtoja, joissa käsitellään yhteensopivuutta muiden avoimen lähdekoodin lisenssien kanssa, velvoitetaan patenttilisenssejä, määritetään ehdot GPL-lisensoitujen ohjelmistojen käyttämiseksi laiteohjelmistona laitteissa ja otetaan huomioon digitaalisen oikeuksien hallinnan käsitteet.
Avoimen lähdekoodin lisenssi tunnetaan yleensä nimellä MIT-lisenssi , alias X11-lisenssi, on erittäin salliva ei-copyleft-lisenssi, jonka avulla kaikki voivat periaatteessa käyttää niin lisensoitua koodia kuin haluat, kunhan pidät tekijänoikeusviestiä ja tiedät, että ohjelmistolla ei ole minkäänlaista takuuta.
Tämä lisenssi on erittäin suosittu, ja sitä käytetään useissa projekteissa, kuten X Window System, Ruby on Rails, jQuery tai Node.js.
Se on yhteensopiva GPL: n kanssa, joten voit sekoittaa MIT-lisensoidun koodin GPL-ohjelmistoon.
Apache-lisenssi on luonut Apache Software Foundation (ASF) Apache HTTP -palvelimen lisenssinä.
Aivan kuten MIT-lisenssi, se on erittäin salliva ei-kopioitu käyttöoikeus, jonka avulla ohjelmistoa voidaan käyttää mihin tahansa tarkoitukseen, levittää sitä, muokata sitä ja levittää siitä johdettuja teoksia huolimatta rojalteista. Sen tärkein ero MIT-lisenssiin verrattuna on:
Tämä lisenssi on mielenkiintoinen automaattisen patenttilisenssin ja lahjoitusten jättämistä koskevan lausekkeen vuoksi.
Se on yhteensopiva GPL: n kanssa, joten voit sekoittaa Apache-lisenssikoodin GPL-ohjelmistoon.
BSD-lisenssejä on 3 erilaista. Kaikki ne ovat hyvin sallivia lisenssejä ilman copyleftia.
2 lausekkeen BSD-lisenssi (tai yksinkertaistettu BSD-lisenssi) vastaa täysin aiemmin selitettyä MIT-lisenssiä.
3 lausekkeen BSD-lisenssi (tai Uusi BSD-lisenssi) lisää yhden lausekkeen, jossa täsmennetään, että tekijänoikeuksien haltijan nimeä tai sen avustajien nimiä ei saa käyttää ohjelmistosta johdettujen tuotteiden tukemiseen tai mainostamiseen ilman erityistä kirjallista lupaa. Tämä versio on yhteensopiva GPL: n kanssa, joten voit sekoittaa 3 lausekkeen BSD-lisensoidun koodin GPL-ohjelmistoon.
4 lausekkeen BSD-lisenssi (tai alkuperäinen BSD-lisenssi) lisää toisen lausekkeen, jossa täsmennetään, että kaikissa mainosmateriaaleissa, joissa mainitaan ohjelmiston ominaisuudet tai käyttö, on oltava vahvistus siitä, että tuote sisältää tekijänoikeuksien haltijan kehittämän ohjelmiston. Tämä 4 lausekkeen BSD-lisenssi ei ole yhteensopiva GPL: n kanssa. Tämän lisenssin koodia ei voida uudistaa GPL-ehtojen mukaisesti, koska neljännessä lausekkeessa lisätään vaatimus, jota ei vaadita GPL: ssä.
FPL on luonut LGPL: n GPL: n modifikaationa heikommalla copyleftillä, mikä mahdollistaa LGPL-lisensoidun ohjelmiston linkittämisen muihin ohjelmistoihin. Alkuperäisellään LGPL tarkoitti kirjaston yleistä julkista lisenssiä, mutta sen jälkeen se otti nykyisen nimensä 'Lesser General Public License', joka edustaa FSF: n lausuntoa, jonka mukaan kaikkien ohjelmistojen tulisi olla ilmaisia, ja siksi LGPL: n ei pitäisi olla käytetään yleisesti.
Voit linkittää suljetun lähdekoodin LGPL-kirjastoon tai -ohjelmistoon ja jakaa lopulliset tulokset niin kauan kuin:
LGPL v3 on yhteensopiva GPLv3: n kanssa, joten voit kirjoittaa LGPLv3-koodin GPL-ohjelmistoon.
Taiteellinen lisenssi , nykyisessä versiossa 2.0, on salliva avoimen lähdekoodin lisenssi, jolla ei ole MITE-lisenssin kaltaista kopyleftia.
Tärkein ero MIT-lisenssin ja taiteellisen lisenssin välillä on, että jälkimmäinen edellyttää, että kaikki koodiin tehdyt muutokset on ilmoitettava selvästi.
Tätä lisenssiä käytetään melkein yksinomaan Perl-yhteisössä.
Nykyinen Artistic License 2.0 on yhteensopiva GPL: n kanssa: voit sekoittaa Artistic-Licensed-koodin GPL-ohjelmistoon.
Microsoftin julkinen lisenssi Tämä yritys loi vuonna 2008 yhtenä Shared Source Initiative -sovelluksen luomista avoimen lähdekoodin lisensseistä.
Se on tiukka, heikko copyleft-lisenssi: se sallii MS-PLed-koodilla varustettujen suljettujen lähdekoodien ohjelmien luomisen ja jakelun, mutta velvoittaa käyttämään MS-PL: tä johdettujen teosten lisenssinä, jos ne jaetaan lähdekoodissa.
Henkilökohtaisesti olen sitä mieltä, että tämä lisenssi on hieman vääristynyt ja vastoin avoimen lähdekoodin henkeä, mikä sallii koodin sulkemisen siten, että tekijänoikeuksien haltija ei tavallaan välitä siitä, mitä voit tehdä ohjelmistolla, mutta et voi jaa koodi sekoitettavaksi muun copyleft-lähdekoodin kanssa. Joten toisella tavalla tekijänoikeuksien haltija välittää todella siitä, mitä voit tehdä, eikä hän halua sinun käyttävän koodia esimerkiksi Linuxin parantamiseksi.
MS-PL ei ole yhteensopiva GPL: n kanssa.
Eclipse Public License on Eclipse Foundation -säätiön luoma lisenssi heidän integroidulle kehitysympäristölle. Se on rajoittava ja heikosti kopioitu käyttöoikeus, joka on monin tavoin samanlainen kuin LGPL. Se sisältää myös lausekkeet automaattisesta patenttilisenssien myöntämisestä.
EPL ei ole yhteensopiva GPL: n kanssa.
Mozillan julkinen lisenssi Versio 2.0 on heikkokopioinen, salliva lisenssi, jonka Mozilla Foundation on luonut tuotteilleen.
Voisimme pitää tätä lisenssiä samanlaisena kuin LGPL, mutta tärkeimpänä erona, että MPL sallii myös MPLed-koodikappaleiden staattisen linkittämisen suljetun lähdekoodin ohjelmistoihin.
MPL, nykyisessä versiossa 2.0, on yhteensopiva GPL: n kanssa. Tämä ei päde MPL: n aiempiin versioihin.
CDDL on Sunin (nyt Oracle) MPL-versioon 1.1 perustama, heikosti kopioitu, salliva lisenssi. Pohjimmiltaan sillä on samat ominaisuudet kuin MPL: llä. Sen ehtoja selvennettiin, mutta niitä ei muutettu olennaisesti.
CDDL on avoimen lähdekoodin lisenssi, jonka Sun (nykyisin Oracle) on valinnut monille tuotteilleen, muun muassa OpenSolarisiksi tai NetBeansiksi.
Koska tämä lisenssi perustui MPLv1.1-versioon, tämä lisenssi ei ole yhteensopiva GPL: n kanssa, joten et voi sekoittaa CDDL-lisensoitua lähdettä GPL-lisensoituun ohjelmistoon. Monet sanovat, että tämä oli tarkoituksellista, joten OpenSolaris-lähdekoodia ei voida tuoda Linux-ytimeen.
AGPL on GPL: n versio, jossa on entistä vahvempi ja rajoittavampi kopiointi. Se velvoittaa toimittamaan sovelluksen lähdekoodin paitsi ihmisille, jotka saavat kopion ohjelmistosta, myös ihmisille, jotka käyttävät tätä ohjelmistoa tietokoneverkon kautta.
Tämän lisenssin on luonut FSF kehittäjät keinot avoimen lähdekoodin ohjelmistojen käytännöllisen sulkemisen välttämiseksi, kun ne suoritetaan verkkopalvelimissa tai pilvessä, koska GPL ei voi pakottaa palveluntarjoajia antamaan lähdekoodia käyttäjille. Tässä tapauksessa ohjelmistoa ei jaeta.
AGPLv3 on yhteensopiva GPL3: n kanssa. Voit laittaa AGPLv3-koodin GPLv3-koodiin, kunhan lopputulos on lisensoitu AGPLv3: n nojalla.
ISC-lisenssi on sallittu ilmainen ohjelmistolisenssi, jonka on kirjoittanut Internet Software Consortium (ISC). Se vastaa toiminnallisesti 2 lausekkeen BSD- ja MIT-lisenssejä poistettuaan jonkin verran tarpeettomaksi pidetyn kielen.
Alun perin käytetty ISC: n omiin ohjelmistojulkaisuihin, siitä on siitä lähtien tullut OpenBSD: n suosituin lisenssi (kesäkuusta 2003 alkaen) muiden projektien joukossa.
Se on yhteensopiva GPL: n kanssa: voit sekoittaa ISC-lisensoidun koodin GPL-ohjelmistoon.
Microsoftin vastavuoroinen lisenssi Tämä yritys loi vuonna 2008 yhtenä Shared Source Initiative -sovelluksen luomista avoimen lähdekoodin lisensseistä.
Se on samanlainen kuin aiemmin selitetty MS-PL, mutta sillä on hiukan vahvempi kopiotyyppi, joka muistuttaa LGPL: n, CDDL: n ja EPL: n olosuhteita. Se edellyttää, että jos sekoitat koodisi MS-RL-lisensoituun lähdekoodiin ja haluat levittää lopulliset tulokset, ainakin alkuperäisen MS-RL-lisensoidun osan on edelleen oltava lisensoitu tällä lisenssillä.
Se ei ole yhteensopiva GPL: n kanssa.
Wikipedian mukaan 'julkisia teoksia ovat ne, joiden immateriaalioikeudet ovat vanhentuneet, menetetty tai niitä ei voida soveltaa'. Omistamalla teoksen julkisesti, kirjailija luopuu kaikista tekijänoikeuslain mukaisista oikeuksistaan.
Public Domain -alalla on useita ohjelmistoprojekteja, esimerkiksi SQLite, kirjasto, joka toteuttaa upotettavan ja yksinkertaisen SQL-tietokantamoottorin, joka sisältyy useisiin muihin projekteihin, kuten Mozilla-projekteihin, Androidiin jne.
On monia tapoja omistaa ohjelmisto julkiseen verkkotunnukseen. Creative Commons on luonut CC0 Public Domain Dedication , universaali tapa luovuttaa teos julkiseksi. FSF suosittelee tämän tekstin käyttämistä ohjelmistojen omistamiseen julkiselle sektorille.
Teokset julkisessa omistuksessa ovat yhteensopivia minkä tahansa avoimen tai suljetun lähdekoodin lisenssien kanssa, ja ne voidaan sekoittaa mihin tahansa muuhun ohjelmistoon.
On joitain avoimen lähdekoodin ohjelmistoja, joilla on kaksinkertainen tai jopa kolminkertainen käyttöoikeus. Tämä tarkoittaa, että henkilö, joka vastaanottaa tämän monen lisensoidun ohjelmiston, voi valita, minkä lisenssin perusteella hän haluaa levittää sitä. Koska jokainen lisenssi myöntää erilaiset käyttöoikeudet ja asettaa erilaisia velvoitteita, on valittava lisenssin valinta, joka vastaa parhaiten tarpeita.
Tämä on tavallinen tapa joissakin kirjastoissa. Esimerkiksi NSS on Mozillan tekemä kirjasto, joka toteuttaa SSL / TLS-tuen muiden turvallisuuteen liittyvien ominaisuuksien lisäksi. Se on kolminkertaisesti lisensoitu MPL-, GPL- ja LGPL-lisensseillä.
Monet ihmiset julkaisevat koodin alustoilla GitHubina ilman kirjallista lisenssiä. Kenenkään ei tule käyttää tätä koodia. Meillä ei ole aavistustakaan, mitä käyttöoikeuksia meillä on sen käyttöön. Jos käytät sitä, saatat haastaa sen. Se on kuin jos nämä ihmiset kiusaisivat meitä sanoen 'Hei, katso mitä olen tehnyt! Siistiä, eikö olekin? Mutta et voi käyttää sitä, halusin vain näyttää sinulle! ”.
Älä ole yksi heistä. Jos lataat koodisi GitHubiin tai vastaaviin julkisiin sivustoihin, anna muiden käyttää sitä ja parantaa sitä. Jos et halua ajatella paljon, nämä ovat suositukseni:
Jos välität muokkausten jakamisesta etkä halua, että koodiasi käytetään suljetussa kehityksessä (ei suljetuissa ohjelmistotuotteissa eikä suljetuissa laitteissa), käytä GPL v3: ta.
Kaiken tämän jälkeen saatat olla uupunut kaikesta näistä melkein hölynpölyistä melkein laillisista hämmennyksistä. Mutta tiedätkö mitä? Sitä tarvitaan. Koska ilman lisenssiä sinulla ei ole oikeuksia käyttää tai levittää koodia.