Avoimen lähdekoodin määritelmä

Avoin lähdekoodi on käsite, jolla tarkoitetaan sitä, että ohjelmiston mukana saa myös ohjelmiston "rakennepiirustukset" eli lähdekoodin. Tietokoneohjelmointi tehdään ihmisen ymmärrettävissä olevilla ohjelmointikielillä. Ohjelmointityö on kuin vieraan kielen osaamista ja kirjoittamista.

Kun ohjelmaa ajetaan tietokoneella, tarvitaan ajettava versio ohjelmasta. Se sisältää vain jonon nollia ja ykkösiä. Tietokoneet toimivat binäärilogiikalla: erilaisten asioiden esittämiseen käytetään vain kahta tilaa, totta ja epätotta eli ykköstä ja nollaa. Ihmisen kirjoittamasta ohjelmointikielisestä lähdekoodista käännetään eli kompiloidaan tietokoneen suoritettava binäärimuotoinen ohjelma.

Jotta ohjelman toimintaa pystytään käytännössä muokkaamaan, tarvitaan siis pääsy lähdekoodiin. Se, mikä erottaa vapaat ja avoimen lähdekoodin ohjelmistot (engl. Free and Open Source Software, FLOSS) suljetuista (engl. proprietary) ohjelmistoista on juuri tämä: avoimien ohjelmistojen mukana tulee ohjelmiston lähdekoodi. Sen lisäksi sen lisenssi sallii hyvin laajat vapaudet ohjelmiston käyttöön ja muokkaamiseen. Liiketoimintamallien tasolla tilannetta voi verrata kahteen hyvää leipää leipovaan leipomoon. Ensimmäinen niistä myy leipää mutta pitää reseptin liikesalaisuutenaan. Toinen myy leipää ja antaa haluttaessa myös reseptin mukaan uskoen siihen, että resepti on niin mainio ja tuotanto on niin tehokasta että kilpailu markkinoilla onnistuu näin. Resepti julkaistaan kuitenkin sillä ehdolla että kaikkien muidenkin, jotka alkavat myydä leipää samalla reseptillä tai siitä kehitetyllä reseptillä on velvollisuus julkaista reseptinsä julkisesti kaikkien käyttöön, jotta kaikki voivat hyötyä kehittelystä.

Vertauskuva ontuu olennaisessa kohdassa. Leivän resepti on mahdollista varastaa ja käyttää sitä ilman merkittävää kiinni jäämisen riskiä. Tietokoneen lähdekoodin tapauksessa tilanne on toinen. Suoritettavaan, binäärimuotoiseen ohjelmistoon jää selvät jäljet käytetystä lähdekoodista. Joissain tapauksissa on mahdollista suorittaa reverse engineering eli ohjelmiston palauttaminen ajettavasta binäärimuodosta lähdekoodimuotoon. Suljettujen ohjelmistojen toimittajat eivät luonnollisesti pidä tästä, koska kyse on heidän liiketoimintamallistaan ja elinkeinostaan.

Tärkeintä on se, että avoimen lähdekoodin tärkein ydinajatus on se, että tietokoneohjelmien kehitykseen tarvittavan ja siihen liittyvän tiedon tulee olla julkista samalla tavalla kuin tieteellisen tiedon. Samoin kuin tieteellisen tiedon tulee olla julkista, jotta kehitys mahdollistuu, tietokoneohjelmien tulee olla julkisia.

Liikehdintä alkoi Richard Stallmanin oivalluksista. Hän työskenteli Massachusetts Institute of Technologyn tietokonelaboratoriossa 80-luvun lopulla. Käynnissä oli muutos: aiemmin käsittämättömän kalliista tietokoneista oli tullut halvempia ja ohjelmistojen suhteellinen arvo nousi. Aiemmin ohjelmistot oli annettu koneisiin kaupan päälle. Niiden käyttö oli harvojen ammattilaisten työtä ja osa työn viehätystä oli yhdistellä osia eri ohjelmistoista ja kehitellä niitä yhdessä kollegoiden kanssa. Kun tietokoneiden hinta laski merkittävästi, tietotekniikkayritykset ymmärsivät ohjelmistojen arvon. Tästä syystä tietotekniikkayritysten yliopistoissa osarahoittaman tutkimuksen tuloksia ja tekijänoikeuksia alettiin vaatia yrityksille. Stallman ei tähän suostunut vaan irtisanoutui ja perusti Free Software Foundationin ajamaan tietokoneohjelmien vapauden asiaa.

Stallmanin yksi merkittävin oivallus on se, että tekijänoikeuslaista ja käytännöstä voidaan poiketa sopimusten keinoin. Ohjelmiston käyttölisenssi on tällainen sopimus: siinä ohjelmiston tekijänoikeuksien haltija luovuttaa käyttäjälle käyttöoikeuden tietyin ehdoin. Stallmanin oivallus on se, että näihin ehtoihin voidaan liittää myös käyttäjälle annettavat oikeudet.

0. Vapaus käyttää ohjelmaa mihin tahansa tarkoitukseen.
Rajoitteiden asettaminen vapaiden ohjelmistojen käytölle tekee ohjelmasta epävapaan. Rajoitteita voivat olla esimerkiksi aika ("30 päivän kokeilujakso", "lisenssi vanhenee 1. tammikuuta 2004"), tarkoitus ("lupa annettu tutkimus- ja epäkaupalliseen käyttöön", "ei voida käyttää suorituskyvyn mittaamiseen") tai maantieteellinen alue ("ei saa käyttää maassa X").

1. Vapaus opiskella ohjelman toimintaa, ja soveltaa sitä.
Juridisten tai käytännöllisten rajoitteiden asettaminen ohjelman ymmärrettävyydelle tai muokkaukselle tekevät myös ohjelmasta suljetun (epävapaan). Näitä voivat olla pakollinen erityisten lisenssien ostaminen, tiedon jakamisen rajoittamisen sopimukset (NDA) tai – ohjelmointikielille joilla on useampia esitysmuotoja – pääsyn estäminen parhaimpana pidettävään, ihmisluettavaan ohjelman ("lähdekoodin") muotoon ja sen muokkaamiseen. Ilman ohjelmien muokkaamisen vapautta ihmiset pysyvät yhden toimittajan armoilla.

2. Vapaus levittää kopioita naapureillesi.
Ohjelmia voidaan kopioida ja jakaa lähes ilman kustannuksia. Jos sinulla ei ole oikeutta antaa ohjelmaa sitä tarvitsevalle, ohjelma on epävapaa. Ohjelmaa voi halutessaan jakaa myös maksua vastaan.

3. Vapaus parantaa ohjelmaa, ja antaa muutokset levitykseen, jotta koko yhteisö hyötyy.
Kaikki eivät ole yhtä hyviä ohjelmoijia jokaisella osa-alueella. Jotkut eivät osaa ohjelmoida lainkaan. Tämä vapaus mahdollistaa muutosten teon vapauden epäsuoran käytön niille henkilöille, joilla ei ole aikaa tai taitoja ratkaista jotakin ongelmaa. Tämä voidaan tehdä maksua vastaan.

Linus Torvaldsin Suomesta lähtöisin oleva, maailmanlaajuisesti tunnettu käyttöjärjestelmä GNU/Linux kantaa kirjainyhdistelmää GNU siksi, että Torvalds valitsi tekemisensä lisenssiksi Stallmanin kehittämän GNU General Public Licensen. Lisätietoja Free Software Foundationista: http://www.fsf.org/

Käsite Open Source eli avoin lähdekoodi syntyi kun alkoi syntyä liikaa sekaannusta englannin kielen käsitteen free suhteen. Sama sana tarkoittaa niin vapaata kuin ilmaista. Ero on merkittävä: Stallmanin tarkoitus ei ollut koskaan tarkoitus estää ohjelmistojen myymistä. Tavoite oli se, että pidetään niiden tekotapa julkisena. Tämä ei kuitenkaan ole sama asia kuin ilmaisuus: jonkun on aina tehtävä muutoksia ohjelmistoihin ja tästä työstä pitää maksaa jollekin. Myöskin tällainen työn tulos on aina ollut myytävissä oleva hyödyke. Toisin kuin Microsoftin Steve Ballmer on väittänyt, kyse ei ole kommunismista vaan itse asiassa äärimmäisen tehokkaasta tieteen edistyksen mekanismien ja kovan kapitalistisen kilpailun yhdistämisestä. On aiheellista kysyä päinvastoin: muistuttavatko suljettuja ohjelmistoja toimittavat ohjelmistotalot reaalisosialismista tuttua viisivuotissuunnitelmataloutta, jossa tärkein tarkoitus on itse tehdä mahdollisimman vähän ja rahastaa mahdollisimman paljon?

Käsitteistä Free Software ja Open Source (eli avoin lähdekoodi) äänestettiin ohjelmoijien konferenssissa vuonna 2001. Jälkimmäinen voitti, koska se

  1. viittaa suoraan ohjelmistojen tekotapaan lähdekoodin osalta ja
  2. suuri osa ohjelmoijista vierasti Stallmanin osin jo hyvin yhteiskunnallis-poliittiseksi muuttunutta agendaa.

Perustettiin Open Source Iniative (OSI), joka edelleenkin hyväksyy ohjelmistolisenssejä Open Source-lisenssien listaan tarkistettuaan, että ne täyttävät edellä esitettyä nelikohtaista listaa tarkemman Open Source-määritelmän.

Käytännön tasolla käsitteet Free Software ja Open Source ovat vaihtokelpoisia. Kaikki FSF:n lisenssit ovat myös OSI:n hyväksymiä ja voidaan tarkastaa löytyykö ohjelmiston lisenssi OSI:n listalta. Suomessa on käytössä lyhenne VALO (Vapaat ja Avoimen Lähdekoodin Ohjelmistot), englanniksi FLOSS (Free/Libre and Open Source Software). Näissä molemmissa käytetään rinnakkain vapaan ja avoimen käsitteitä.

VALO-ohjelmistoja ja ilmaisohjelmia (engl. freeware) ei tule sekoittaa keskenään. Vaikka suurin osa VALO-ohjelmistoista on ilmaisia, niissä on yksi olennainen lisäarvo verrattuna ilmaisohjelmaan. Kun määritelmän mukaan VALO-ohjelmiston lähdekoodi on avointa, voi kuka tahansa ohjelmointitaitonen parannella ohjelmistoa tarvittaessa. Ilmaisohjelmissa tätä etua ei ole.

Edellä sanotusta käy ilmi se, että kyse ei ole siitä, että joku haluaisi tehdä nimenomaan ilmaisia ohjelmistoja. Työmies ansaitsee palkkansa. Avoimen lähdekoodin tapauksessa liiketoimintamalli on vain toinen. Sen sijaan että myytäisiin pelkkää ohjelmiston käyttöoikeutta kuten suljettujen ohjelmistojen kohdalla on tapana, myydään enemmänkin räätälöintiä, ylläpitoa kuten ohjelmistolla tuotettua Software as a Service -palvelua, ja muuta työtä. Koska muut yritykset voivat käyttää samoja ohjelmistoja kuin muutkin kilpailijat, palvelun laatu korostuu.

Vastikkeettomaan jakeluun saattaa olla markkinoiden rakenteeseen liittyvä syy, kuten se, että kilpailijan asemaa halutaan heikentää ilmaisella tuotteella. Tärkeämpi motiivi ohjelmistotuotteen jakelemiseen avoimen lähdekoodin lisenssillä on kuitenkin muiden kehittäjien osallistaminen ohjelmiston kehittämiseen. Ohjelmiston alkuperäiselle kehittäjälle saattaa olla järkevintä olla mukana kehittämässä ohjelmistoa mutta ei sanella täysin mitä tehdään.

Toinen etu on pienempi toimittajariippuvuus. Jos avointa ohjelmistoa käytettäessä yhteistyö toimittajan kanssa ei toimi, järjestelmätoimittajan vaihtaminen on helpompaa koska käytössä on ohjelmisto, jonka toimintaperiaate on julkinen.

VALO-ohjelmistojen rasite on se, että niistä tietävät lähinnä niistä todella kiinnostuneet. Jos ei tiedä VALO-ohjelmien etuja eikä ole koskaan pohtinut lisenssin suomia etuja, ohjelmisto on vain ohjelmisto muiden joukossa. Näin asia on esimerkiksi suositun Mozilla Firefox -selaimen kohdalla. Moni käyttää Firefoxia, harva tietää että kyse on VALO-ohjelmasta. Avoimien lisenssien luonnetta pohdittua tulee ehkä motivaatio etsiä varta vasten VALO-ohjelmistoja.