Avoin lähdekoodi

Question: Mikä on avoimen ja suljetun lähdekoodin ero?

Avoin lähdekoodi ( /'əʊpən sɔːs/) tarkoittaa tietokoneohjelmien tuottamis- ja kehitysmenetelmiä, jotka tarjoavat käyttäjälle mahdollisuuden tutustua ohjelman lähdekoodiin ja muokata sitä omien tarpeidensa mukaisesti. Avoimen lähdekoodin periaatteisiin kuuluu myös vapaus käyttää ohjelmaa mihin tahansa tarkoitukseen ja kopioida ja levittää sekä alkuperäistä että muokattua versiota. 
Paitsi ohjelmistojen kehitysmenetelmiin avoimella lähdekoodilla voidaan viitata myös niiden avulla tuotettuihin ohjelmistoihin sekä kehittäjäyhteisöön. Käytännössä avoin lähdekoodi tarkoittaa pitkälti samaa asiaa kuin vapaat ohjelmistot, joista puhuttaessa halutaan usein painottaa ohjelmistokehityksen eettisiä ulottuvuuksia. Avoimesta lähdekoodista puhuttaessa huomio saattaa pikemminkin kiinnittyä vapaudesta ja avoimuudesta seuraaviin käytännön hyötyihin. Vapaiden ohjelmistojen ja avoimen lähdekoodin vastakohtana voidaan pitää omisteisia ohjelmistoja ja suljettua lähdekoodia.
Tunnetuimpia avoimen lähdekoodin tuotteita ovat Firefox-selain, LibreOffice-toimisto-ohjelmisto ja Linux-käyttöjärjestelmä, joka pääosin muodostuu Linux-ytimestä ja GNU-hankkeen rakentamasta rungosta. Myös älypuhelimissa yleinen Android-käyttöjärjestelmä on avointa lähdekoodia[1].
Avoimen lähdekoodin määritelmä
Pelkkä mahdollisuus päästä tutustumaan lähdekoodiin ei vielä tee ohjelmistosta avoimen lähdekoodin edustajaa, vaan oikeudellisesta näkökulmasta avoimeen lähdekoodiin liittyy lisenssi, jolla ohjelman tekijä tarjoaa teoksensa yhteisön käytettäväksi ja muokattavaksi. Lisenssi voi kuitenkin asettaa ehdoksi, että ohjelmaan tehtävät muutoksetkin on julkaistava samalla lisenssillä, jotta myös alkuperäinen tekijä pääsisi hyötymään muiden tekemistä parannuksista. Tekijänoikeudet säilyvät koodin kirjoittajilla, jolleivät nämä erikseen niistä luovu.
Avoimen lähdekoodin tunnuspiirteet on täsmällisesti määritellyt Open Source Initiative (OSI) -järjestö, joka pyrkii edistämään avoimen lähdekoodin ohjelmistojen käyttöä.
Ohjelman täytyy olla vapaasti levitettävissä ja välitettävissä.
Lähdekoodin täytyy tulla ohjelman mukana tai olla vapaasti saatavissa.
Myös johdettujen teosten luominen ja levitys pitää sallia.
Lisenssi voi rajoittaa muokatun lähdekoodin levittämistä vain siinä tapauksessa, että lisenssi sallii erillisten korjaustiedostojen ja niiden lähdekoodin levittämisen. Voidaan myös vaatia, ettei johdettua teosta levitetä samalla nimellä tai versionumerolla kuin lähtöteosta.
Yksilöitä tai ihmisryhmiä ei saa asettaa eriarvoiseen asemaan.
Käyttötarkoituksia ei saa rajoittaa.
Kaikilla ohjelman käsiinsä saaneilla on samat oikeudet.
Lisenssi ei saa olla riippuvainen laajemmasta ohjelmistokokonaisuudesta, jonka osana ohjelmaa levitetään, vaan ohjelmaan liittyvät oikeudet säilyvät, vaikka se irrotettaisiin kokonaisuudesta.
Lisenssi ei voi asettaa ehtoja muille ohjelmille. Ohjelmaa saa levittää myös yhdessä sellaisten ohjelmien kanssa, joiden lähdekoodi ei ole avointa.
Lisenssin sisällön pitää olla riippumaton teknisestä toteutuksesta. Oikeuksiin ei saa liittää varaumia jakelutavan tai käyttöliittymän varjolla.
Näiden kriteerien mukaan esimerkiksi seuraavilla lisensseillä julkaistuja ohjelmistoja voidaan pitää avoimen lähdekoodin edustajina: GNU General Public License (GPL) ja GNU Lesser General Public Licence (LGPL), BSD-lisenssit, Mozilla Public License (MPL), Apache-lisenssit, IBM Public License, Intel Open Source License, Apple Public Source License, Nokia Open Source License sekä Sun Microsystemsin Sun Industry Standards Source License ja Sun Public License. Eri lisenssityyppejä käsitellään julkisen hallinnon suosituksessa JHS 169 Avoimen lähdekoodin ohjelmien käyttö julkisessa hallinnossa.[2]
Avoin lähdekoodi vai vapaa ohjelmisto?
Termi avoin lähdekoodi kehitettiin helmikuussa 1998 vastauksena Netscapen päätökseen julkaista nettiselaimensa lähdekoodi vapaalla lisenssillä. Osa vapaiden ohjelmistojen liikkeen edustajista halusi ottaa etäisyyttä liikkeen ideologiseen taustaan ja muotoilla toimintamallinsa pragmaattisemmin termein, jotka sopisivat myös yrityselämän käyttöön paremmin kuin englanninkielinen sana free, joka voi tarkoittaa paitsi vapaata myös ilmaista. Linux-ytimen alkuperäinen kehittäjä Linus Torvalds asettui heti tukemaan uutta nimitystä ja sen edustamaa näkökulmaa.[3]
Uuden termin omaksumista harkitsi aluksi myös vapaan ohjelmiston määritelmän kehittänyt GNU-hankkeen ja Free Software Foundationin johtaja Richard Stallman, joka päätyi kuitenkin torjumaan sen. Stallman on arvostellut avoimen lähdekoodin liikettä liiasta pragmaattisuudesta ja vapaiden ja ”puolivapaiden” ohjelmien rajan hämärtämisestä. Stallman rinnastaa ohjelmistojen vapauden sananvapauteen, joka on itseisarvo, ja sanoo, että jos avointa lähdekoodia perustellaan vain käytännön hyödyillä, avoimuudesta on helppo luopua silloin, kun se edellyttää ylimääräiseltä tuntuvaa vaivannäköä. 
Vaikka termistössä ja ajattelutavoissa on siis vivahde-eroja, avoimen lähdekoodin ja vapaiden ohjelmistojen liikkeiden väliset ristiriidat eivät ole olleet yhteensovittamattomia. Käytännössä kaikki vapaat ohjelmistot ovat myös avoimen lähdekoodin ohjelmistoja ja avoimen lähdekoodin ohjelmistot vapaita. Englanniksi vapaista ja avoimen lähdekoodin ohjelmistoista käytetäänkin usein yhdistettyä akronyymiä FOSS (free and open source software) tai FLOSS (free/libre and open source software). Suomeksi voidaan vastaavasti joskus käyttää akronyymiä VALO.
Avoimen ja suljetun lähdekoodin ero
Avoimeen lähdekoodiin pääsee kuka tahansa tutustumaan, ja halutessaan käyttäjä voi korjata ohjelman virheitä ja lisätä uusia ominaisuuksia – tai pestata jonkun muun tekemään sen puolestaan, jos ei itse osaa tai ehdi. Tästä seuraa, että korjaukset tehdään yleensä nopeasti: parhaissa tapauksissa muutos on saatavilla muutamassa tunnissa, mikä on tärkeää esimerkiksi tietoturva­haavoittuvuuksia korjattaessa.
Omisteisen ohjelmiston käyttäjä ei yleensä pääse näkemään lähdekoodia. Mikäli ohjelmassa on puutteita, käyttäjä joutuu raportoimaan niistä ohjelman tekijälle tai vain sopeutumaan tilanteeseen yrittäen vähimmäistää haitat. Jos lähdekoodi on avoin, voi käyttäjä itse muokata koodia tai palkata kenet tahansa tekemään siihen haluamansa muutokset.
Avoimen lähdekoodin kehitys perustuu enimmäkseen vapaaehtoiseen kehitystyöhön. Lisäksi monet yritykset osallistuvat avoimen lähdekoodin kehitystyöhön, koska tulisi kalliimmaksi kehittää vastaavanlainen kokonaan uusi tuote tai ostaa jonkin omisteisen tuotteen lisenssi. 
Avointa lähdekoodia kehitetään jatkuvasti. Sitä ei pidetä sanan perinteisessä mielessä valmiina tuotteena vaan prosessina. Ehkä tämän vuoksi joissakin avoimen lähdekoodin ohjelmissa esimerkiksi käyttöoppaiden kehitys jää puolitiehen.
Avoimen lähdekoodin suosio
Avoimen lähdekoodin suosion syy ei ole ohjelmiston ilmaisuus. Avoimen lähdekoodin todellinen voima on yhteistyössä. Avoimen lähdekoodin projektin parissa työskentelee lukuisia ihmisiä jotka kykenevät tekemään siitä entistä paremman, kun taas suljettua lähdekoodia kehittää vain yksi henkilö tai yksi yritys. Avoimeen lähdekoodiin perustuvaa yhteistyötä on ollut jo vuosikymmenten ajan. Tekniikan alan suuryritykset Google ja Facebook ovat tehneet suuria kontribuutioita avoimen lähdekoodin maailmaan avaamalla osan ydintuotteistaan.[4]
Avoimen lähdekoodin kehittäjäyhteisö
Avoimen lähdekoodin ohjelmien kehitys perustuu julkiseen kehitysympäristöön. Ympäristöön kuuluu tyypillisesti versionhallinnalla varustettu lähdekoodin talletuspaikka (palvelin). Kehitysympäristöön kuuluu myös keskustelualueita ja virheenilmoitusjärjestelmä (johon voi kirjata myös toiveita).
Kehitysyhteisöön voi kuulua kotoistusryhmiä, jotka kääntävät ohjelman eri kielille. Kotoistukseen kuuluu ohjelman kansainvälistäminen (internationalisointi) ja sitten kotoistus (lokalisointi). Kotoistukseen liittyvät tietokoneohjelman käyttämän kielen lisäksi idiomit, tekstin vierityssuunta, päivämäärän esitysmuoto, valuutta, desimaalierotin ja värit. Kotoistus kattaa myös käyttöoppaat ja lisenssit.
Kehittäjäyhteisöön voi kuulua laaturyhmä, joka huolehtii ohjelman laadusta. Ulkonäöllisiin seikkoihin kiinnittää huomion siihen keskittyvä ryhmä.
Avoimen lähdekoodin kehitysyhteisöihin voi liittyä kuka tahansa. Jäsenet voivat kertoa mielipiteensä uusista ominaisuuksista, testata ohjelmistojen toimivuutta, tarkistaa lähdekoodia, korjata virheitä ja kirjoittaa uutta lähdekoodia. Kilpailu kehittäjien välillä on kovaa. Etuna on se, että koodia kehitetään kunnianhimoisesti. Kovan kilpailun haittavaikutuksia ovat yhteisön sisäiset erimielisyydet teknisistä yksityiskohdista, termeistä, toteutuksesta, projektien organisoinnista ja tavoitteista. Kiistoista tunnetuin koskee termejä avoin lähdekoodi vai vapaa ohjelmisto.
Monilisensointi
Jotkin ohjelmistot, kuten MySQL, ovat saatavilla vapaasti GNU GPL:n alaisena ja lisäksi maksullisena versiona niille, jotka haluavat sisällyttää koodin osaksi omaa suljetun lähdekoodin tuotettaan. Tällöin tulee korostetusti esille, että vapaa ohjelmisto ei ole ilmainen siinä mielessä, että sen saisi omia itselleen, vaan muokattu koodi tulee antaa muiden käyttöön. Näin varmistetaan se, että kehittäjät saavat nauttia muiden työstä ja ohjelmiston kehittäminen jatkuu.
Kaupallisessa käytössä GNU GPL ei vaadi lähdekoodien julkaisua mikäli muokattua lähdekoodia ei käytetä julkaistussa tuotteessa.[5]
Katso myös
Jaettu lähdekoodi
OpenDocument
Avoimet sisällöt
Vapaat sisällöt
Avoin laitteisto
Lähteet

Viitteet

Aiheesta muualla
Kansainvälisiä:

 ja 

Suomalaisia:

 (esim. )


FLOSS Manuals: suomenkielisiä avoimen lähdekoodin oppaita
 (avoimen lähdekoodin ohjelmistojen suomen kielen käännösryhmien yhteinen portaali)
Luokka:Vapaat ohjelmistot
Luokka:Seulonnan keskeiset artikkelit