Vapaa lähdekoodi

Aina toisinaan tulee vastaan tilanteita joissa saa kertoa ihmisille minkä takia itse kannattaa vapaan lähdekoodin ideologiaa ainakin edes sen verran, että hyvin monet omat vapaa-ajallaan koodaamat projektit ovat kirjoitettu vapaaksi lähdekoodiksi. Lisenssit joita itse suosin ovat GNU GPL sekä GNU AGPL joihin tässä tekstissä viittaan. Toivottavasti tämä teksti edes hieman valaisee syitä miksi vapaa lähdekoodi on mielestäni paras vaihtoehdoista kun kirjoittaa itse lähdekoodeja omalla ajallaan. 

Mainittakoon kuitenkin vielä sen verran että vaikka itse kirjoitankin pääosin vapaata lähdekoodia en siltikään ole sillä kannalla ettenkö voisi käyttää myös suljetun lähdekoodin ohjelmistoja. Käytän pääosin suljetun lähdekoodin ohjelmistoja enkä koe sitä huonona asiana, mutta toki aina olisi parempi mikäli olisi kaikki itseni tarvitsemat ohjelmat saatavana myös vapaana lähdekoodina. Koska näin ei kuitenkaan ole, käytän siis suljetun lähdekoodin ohjelmistoja silloin kuin niitä tarvitsen.

Aluksi on hyvä kertoa mitä on vapaa lähdekoodi, sillä käsite ei välttämättä ole tuttu kaikille. Vapaalla lähdekoodilla tarkoitetaan ohjelmistoa jonka lähdekoodi on vapaasti saatavana jotta käyttäjä voi tutkia kuinka ohjelma toimii, muokata sitä, parantaa (tai vaikka huonontaa) sitä ja levittää sitä muutettua versiota eteenpäin. Kuitenkin jos käyttäjä tekee muutoksia ohjelmaan joka on julkaistu GNU AGPL tai GNU GPL -lisenssin alaisuudessa, on muutoksetkin julkaistava vapaalla lähdekoodilla mikäli ohjelmaa levitetään muutettuna ja jos joku käyttäjä haluaa nähdä ne muutokset. Toisin sanoen käyttäjällä on oikeus muokata ohjelmaa, mutta hänellä ei ole oikeutta muokata ohjelmaa ja sen jälkeen tehdä siitä suljettua. Näiden kahden lisenssin tarkoituksena on siis pitää vapaa koodi vapaana ja myös siitä johdettujen töiden koodit vapaana.

Suurin syy minkä takia itse pidän vapaata lähdekoodia parhaimpana mahdollisena vaihtoehtona on sen ideologinen puoli. Mitä enemmän ohjelmistot ovat vapaata lähdekoodia, sitä enemmän uusilla aloittelevilla ohjelmoijilla on mahdollisuus tutkia kuinka ohjelmat toimivat ja ottaa mallia ja esimerkkiä omiin töihinsä. Vielä suurempana ideologisena syynä kuitenkin pidän sitä, että vapaa lähdekoodi mahdollistaa turhan työn vähentämisen ja yhteiskunnan resurssien turhan hukkaanheittämisen vähentämisen.

Ajatellaan tilanne jossa on kolme koodaajaa, vaikkapa Matti, Ville sekä Jussi. Tässä esimerkissä jokainen heistä kirjoittaa aivan yhtä hyvää koodia ja aivan tasan samassa ajassa vaikka tietenkään elävässä elämässä asiat eivät ole sellaisia, mutta yksinkertaistaakseemme esimerkkiä niin tässä tapauksessa oletetaan näin.

 Ensimmäisenä aloittaa Matti koodaamaan ohjelmaa ja tekee sitä 100 työtuntia ja saa sen valmiiksi. Hän myy ohjelmaa ja saa siitä jonkin verran rahaa. Ville näkee ohjelman ja ajattelee että ohjelma olisi hänelle täydellinen jos siinä olisi vielä kaksi muuta ominaisuutta joita ohjelmassa ei ole. Hän pyytää voisiko Matti tehdä ohjelmaansa tuollaiset ominaisuudet. Matti ei kuitenkaan suostu, joten Ville päättää että hän tekee itse samanlaisen ohjelman kuin Matti, mutta tekee siihen lisäksi vielä haluamansa lisäominaisuudet.

Ville aloittaa koodaamaan ja koodaa ensimmäiset 100 tuntia että saa tehtyä samanlaisen ohjelman kuin Matin alkuperäinen ohjelma oli. Tämän jälkeen hän käyttää vielä 50 lisätuntia että tekee haluamansa lisäykset ja tämän jälkeen ohjelma on valmis hänen käyttöään ajatellen. Hänkin alkaa myymään ohjelmaansa ja saa siitä jonkin verran rahaa. Jussi näkee Matin ja Villen tekemät ohjelmistot mutta kumpikaan niistä ei aivan tee sitä mitä Jussi ohjelman haluaisi tekevän. Niinpä hän pyytää kumpaakin voisivatko he tehdä ohjelmasta sellaisen kuin Jussi haluaisi, mutta kummatkaan eivät aiheesta innostu.

Jussi päättää että hän koodaa itse samanlaisen kuin Villen tekemä ohjelma ja lisää vielä itsensä haluamat lisäominaisuudet. Ensin hän tekee 100 tuntia työtä jotta pääsee samaan kohtaan asti kuin Matti pääsi. Tämän jälkeen hän jatkaa vielä 50 työtuntia ja on samassa pisteessä kuin mihin Ville pääsi. Lopulta hän vielä lisää 50 työtunnin panoksen ja tekee ohjelmaansa vielä muutokset joita hän itse halusi siinä olevan. 

Jos ajatellaan asia näin karusti yksinkertaistaen, voidaan laskea että kolme koodaria on nyt tehnyt yhteensä työtunteja 450 (Matti 100, Ville 150 ja Jussi 200). Jos ajatellaan että Matti olisi kirjoittanut ohjelmansa siten, että hän olisi antanut lähdekoodin vapaasti muidenkin käyttöön sen jälkeen kun hän oli sen tehnyt, olisi Ville voinut jatkaa tästä ja hänen olisi tarvinnut tehdä vain 50 työtuntia töitä jotta olisi saanut ohjelman valmiiksi. Jos hänkin olisi tehnyt ohjelmansa vapaalla lähdekoodilla, olisi Jussinkin tarvinnut tehdä vain 50 tuntia työtä jotta olisi hänkin saanut ohjelmansa valmiiksi. Kaikenkaikkian työmäärä jonka kolme koodaajaa olisivat käyttäneet olisi puolet vähemmän, yhteensä 200 tuntia ja tällöin olisi säästynyt sekä aikaa että rahaa. Tuon ylimääräisen säästyneen ajan olisi voinut käyttää johonkin muuhun kiintoisaan tehtävään. Ainakin itseni mielestä tällainen on aivan järjetöntä resurssien haaskaamista.

Vaikka tietenkään oikeassa elämässä asiat eivät mene näin mustavalkoisesti koska osa on nopeampia koodareita, osa hitaampia koodareita, toiset kirjoittavat selkeää koodia, toiset kirjoittavat vaikeasti ymmärrettävää koodia yms. niin kuitenkin se tuonee esille sen pointin mitä itse vapaassa lähdekoodissa arvostan. Sillä on mahdollisuus vähentää työhön käytettävää aikaa kun kaikkea ei aina tarvitse kirjoittaa tyhjästä uudestaan. Sillä on myös mahdollisuus edistää yhteisön hyvää pelkän oman hyvän sijaan.

Yksi mitä monesti kuulee argumenttina vapaata lähdekoodia vastaan on se, että sillä ei voi tehdä rahaa. Itse en usko kuitenkaan tähän. Vaikka itselläni olisi mahdollisuus saada esimerkiksi puhelimelleni ostamien ohjelmien lähdekoodit netistä ilmaiseksi, ei se olisi siltikään ollut poissa tekijöiltä koska olisin tästäkin huolimatta ohjelmistot ostanut. Miksi? Yksinkertaisesti sen takia, että osaan arvostaa omaa aikaani jo sen verran että mieluummin maksan siitä ilosta että asia toimii suoraan säätämättä kuin mitä että joutuisin näkemään vaivaa asian eteen turhaan. 

Vaikka itselläni olisi mahdollisuus saada jonkin kännykässäni käyttämän ohjelman lähdekoodi netistä, vaatisi se sen että ensin itseni pitäisi hakea tuo lähdekoodi sieltä. Tämän jälkeen itseni täytyisi nähdä vaivaa sen verran että asentaisin tietokoneelleni kehitystyökalut jos niitä jo ei oliis jotta saisin tuon ohjelmiston käännettyä kännykän ymmärtämään muotoon. Tämän jälkeen kun ohjelman käännös olisi valmis, pitäisi se vielä siirtää kännykälle. Ei kovin monimutkaista (jos sen osaa), mutta kuitenkin aikaa vievää. 

Jos oletetaan että ohjelman hinta olisi vaikkapa 10 euroa ja itselläni menisi siihen säätämiseen kaksi tuntia että saisin sen ohjelman ilmaiseksi itse kääntämällä lähdekoodeista, en enää pitäisi sitä sen arvoisena. Olen valmis maksaamaan siitä ilosta että asiat vain toimivat suoraan ilman säätämistä. Ainoastaan jos tarkoituksenani olisi muokata tuota ohjelmaa jotenkin omiin tarpeisiini sopivammaksi niin silloin sen lähdekoodit tulisi haettua jotta sitä pääsisi muokkaamaan omiin tarpeisiin sopivammaksi.

Tämän lisäksi on hyvä ottaa huomioon myöskin se seikka, että hyvin monet tavalliset ihmiset jotka käyttävät tietokoneita eivät millään tapaa tiedä kuinka ohjelmia käännetään, kuinka haetaan kehitystyökalut yms. Vaikka heillä olisi lähdekoodit saatavana, eivät kaikki niitä ilmaiseksi lähdekoodeista rupeaisi kääntelemään. Ihmisillä yleensä on muutakin tekemistä kuin alkaa tutkimaan asioita jotka eivät heitä kiinosta.

Asian voi ajatella myös niin, että vaikka itselläni on mahdollisuus lukea netistä pullataikinan resepti ja ruveta leipomaan itse niin siltikin mieluummin menen kauppaan ja ostan valmiit pullat. Vaikka joku antaisi minulle ilmaiseksi tarvittavat pullatarvikkeet joista voisin pullani leipoa niin siltikin olisin valmis ostamaan mieluummin ne pullani kaupasta kuin alkaa niitä itse tekemään. 

Sama on vapaan lähdekoodin kanssa – vaikka saisimme reseptin, ei meistä kaikista tule leipureita. Kuitenkin tulevien leipureiden on helpompaa tehdä hyviä pullia kun reseptiä ei pimitetä muilta.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *