Avoin lähdekoodi
Avoin lähdekoodi (engl. open source) on Open Source Initiativen (OSI) lanseeraama termi, joka tarkoittaa käytännössä samaa kuin vapaa ohjelmisto, mutta on vähemmän aatteellinen. Termi lanseerattiin pääasiassa siksi, että vapaita ohjelmistoja tarkoittava termi "free software" voidaan englannin kielessä tulkita viittaavan myös ohjelmien ilmaisuuteen.
Vaatimukset
OSI on määrittänyt avoimen lähdekoodin ohjelmille seuraavat vaatimukset
- Ohjelman täytyy olla vapaasti levitettävissä ja välitettävissä.
- Lähdekoodi täytyy toimittaa ohjelman mukana tai sen on oltava vapaasti saatavissa.
- Ohjelman muokkaaminen ja muokattujen versioiden levittäminen täytyy olla sallittua (ns. johdetut teokset)
- Lisenssillä voidaan rajoittaa muokatun lähdekoodin levittämistä vain siten, että lisenssi sallii muokkausten levittämisen vain erillisenä korjaustiedostoina lähdekoodin yhteydessä. Voidaan myös vaatia, ettei muokattua ohjelmaa levitetä samalla nimellä tai versionumerolla kuin alkuperäistä.
- Yksilöitä tai ihmisryhmiä ei saa asettaa eriarvoiseen asemaan.
- Käyttötarkoituksia ei saa rajoittaa.
- Kaikilla ohjelman käyttöönsä saaneilla on samat oikeudet.
- Lisenssi ei saa olla riippuvainen laajemmasta ohjelmistokokonaisuudesta, jonka osana ohjelmaa levitetään. Ohjelmaan liittyvien oikeuksien täytyy säilyä, vaikka ohjelma irrotettaisiin kokonaisuudesta.
- Lisenssi ei voi asettaa vaatimuksia muille ohjelmille. Ohjelmaa saa levittää myös yhdessä sellaisten ohjelmien kanssa, jotka eivät ole avointa lähdekoodia.
- Lisenssin sisällön pitää olla riippumaton teknisestä toteutuksesta. Lisenssiin ei saa liittää ehtoja jotka liittyvät jakelutapaan tai käyttöliittymään.
Avoimen lähdekoodin edut
Avoin lähdekoodi antaa kaikille mahdollisuuden muokata ohjelmaa. Suljetun lähdekoodin ohjelmissa, joissa lähdekoodi ei ole saatavilla, on ohjelman muokkaaminen sen sijaan käytännössä mahdotonta. Muokkaamisen lisäksi lähdekoodin avoimuus mahdollistaa sen, että ohjelman toimintaa voidaan tutkia ja voidaan varmistua siitä, ettei ohjelma esimerkiksi vakoile käyttäjän toimia.
Mahdollisuus ohjelman muokkaamiseen poistaa riippuvuuden ohjelman kehittäjästä. Suljetun lähdekoodin ohjelmien yhteydessä ohjelman käyttäjä on täysin riippuvainen ohjelman kehittäjästä: jos käyttäjä haluaa ohjelmaan jonkin muutoksen tai jonkin ongelman korjatuksi, täytyy hänen pyytää tätä ohjelman kehittäjältä. Jos ohjelman kehittäjä ei halua tai voi (esimerkiksi yrityksen mentyä konkurssiin) tehdä näitä muutoksia, ei käyttäjä voi tehdä asialle käytännössä mitään. Kun kehittäjä hylkää ohjelman, asiakkaan on haettava tilalle toinen ohjelma ja korvattava ohjelman varaan rakennetut sovelluksensa.
Avoimen lähdekoodin ohjelmissa lähdekoodi on saatavilla, joten esimerkiksi yrityksen meneminen konkurssiin ei välttämättä pysäytä ohjelman kehitystyötä. Sovellusta käyttävä yritys voi tilata toiselta yritykseltä haluamiaan muutoksia ohjelmaan. Koska periaatteessa kuka tahansa ohjelmoija voi tehdä muutoksia ohjelmaan, voivat eri yritykset kilpailla muutoksien tekemisestä mikä pienentää kustannuksia (tästä on esimerkkinä Münchenin Linux-projekti: ohjelmistoja räätälöitiin ja ominaisuuksia lisättiin kaupungin tarpeisiin tarjouskilpailun perusteella). Yritysten lisäksi myös ohjelmointitaitoiset käyttäjät voivat tarvittaessa jatkaa ohjelman kehitystä.
Avoimen lähdekoodin ohjelmiin kuuluu myös se, että ohjelmien muuttaminen suljetuiksi ei ole mahdollista. Toki ohjelman kehittäjä, joka omistaa tekijänoikeudet ohjelmaan, voi julkaista ohjelmasta uuden version suljettuna. Vanhojen versioiden lisenssiehtoja ei kuitenkaan voida muuttaa, joten tällaisessakin tilanteessa yhteisö voi jatkaa ohjelman kehittämistä vapaana. Ohjelmasta voidaan muutenkin aloittaa uusi kehityshaara, jos alkuperäisen kehittäjän toiminta ei tyydytä käyttäjiä. Vaikka vain pieni osa käyttäjistä osaa ohjelmoida ja voi näin muokata tai tutkia ohjelman toimintaa, on tällaisia käyttäjiä kuitenkin yleensä sen verran, että etenkin suosituimpien ohjelmien kehitys on turvattua.
Avoin lähdekoodi parantaa myös tietyin edellytyksin ohjelmien laatua. Avoimen lähdekoodin ohjelmat voivat hyödyntää muihin avoimiin ohjelmiin kirjoitettua koodia (lisenssit sallivat tutkimisen ja ideoiden hyödyntämisen, suoraan kopioimiseen tarvitaan yhteensopivat lisenssit), mikä voi vähentää päällekkäisen työn tarvetta. Ohjelmat, joista hyötyvät suuret joukot, kehittyvät avoimen koodin mallilla nopeasti. Esimerkiksi Linuxin ytimen kehitystä on edistänyt se, että IT-alan yritykset käyttävät Linuxia laajalti palvelinkoneiden käyttöjärjestelmänä. Linuxiin sijoitettu kehitystyö hyödyttää keskenään kilpailevia IT-yrityksiä, jotka myyvät Linuxia ja siihen liittyviä tukipalveluita sekä näiden asiakkaita, koska kaikki saavat parannukset käyttöönsä. Tämä pienentää päällekkäisen työn määrää ja siten kehitystyön kustannuksia.
Tietyissä sovelluksissa, kuten salauksessa, avoin lähdekoodi voi olla luotettavampaa kuin suljettu. Kun riippumattomat asiantuntijat pääsevät vapaasti tutkimaan ohjelman toimintaa ja kertomaan löydöksistään, ei käyttäjien tarvitse luottaa pelkästään ohjelman tekijän sanaan.
Huomion arvoista
Se, että jokin ohjelmisto on avointa lähdekoodia ei ole aina tae siitä etteikö se voisi sisältää jo itsessään esimerkiksi haitallista koodia, jos lähdekoodi on kirjoitettu sekavasti ja tai lähdekoodin koko on huomattava. Samalla on hyvä muistaa, siitä saatavilla olevat suorituskelpoiset tiedostot eli binäärit sisältäisi poikkeuksia lähdekoodiin, tai jopa haittakoodia. Nämä ongelmat voi välttää tutkimalla itse lähdekoodin ja tai myös itse kääntämällä sen, esimerkiksi Gentoo-jakelussa ohjelmiston itse kääntäminen on enemmänkin tarkoitus, kuin mahdollisuus.
Heartbleed
Heartbleed haavoittuvuuden seurauksena OpenSSL:sta syntyi LibreSSL haarauma, jossa lähdekoodia siivottiin runsaasti, jonka takia LibreSSL on turvallisempi, jo pelkästään sen n. 500 000 rivin lähdekoodi on huomattavasti pienempi kuin OpenSSL:n miljoonan rivin lähdekoodi.
Aiheesta muualla
Katso myös
Lisenssit | |
Copyleft‑lisenssejä | GNU AGPL | GNU FDL | GNU GPL | GNU LGPL | Eclipse Public License | Mozilla Public License | OSL |
---|---|
Permissiivisiä lisenssejä | Apache-lisenssi | BSD-lisenssi | CDDL | MIT-lisenssi | WTFPL |
Sallivia lisenssejä | Artistic License | Beerware | ISC-lisenssi | Microsoft Public Lisenssi | Public domain | zlib-lisenssi | libpng-lisenssi |