Avoin lähdekoodi

Avoin lähdekoodi () tarkoittaa ohjelmistojen 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 ohjelmistoista. Myös älypuhelimissa yleinen Android-käyttöjärjestelmä on avointa lähdekoodiahttps://source.android.com/.
== Historia ==
1960- ja 1970-luvuilla ohjelmointia tehtiin akateemisissa ympäristöissä ja yritysten laboratorioissa, jotka jakoivat ja muokkasivat ohjelmistoja vapaasti. 1980-luvulla ohjelmointi siirtyi omisteisiin ohjelmistoihin ja Richard Stallman kirjoitti vapaan ohjelmiston ideologiasta sekä ohjelmistojen tekijänoikeuksista. Vuonna 1998 tapahtui merkittävä muutos kun Bruce Perens ja Eric Raymond ilmaisivat epäilyksenä etteivät yritykset ole vakuuttuneita Stallmanin näkemyksistä: tämä johti avoimen lähdekoodin liikkeeseen.
Avoin lähdekoodi viittasi aluksi avoimen lähdekoodin ohjelmistoihin, mutta avoimesta lähdekoodista on tullut liike, joka ulottuu ohjelmistotuotannon ulkopuolelle. Termin avoin lähdekoodi on esittänyt Christine Peterson. Termi kehitettiin vaihtoehdoksi, koska termi "vapaa ohjelmisto" vaati aina selityksen sen tarkoittavan oikeuksia eikä hintaa ja oli tarve selkeämmälle termille. Raymond otti termin käyttöön, Perens perusti Opensource.org:in sekä Tim O'Reilly sopi käyttävänsä sitä useissa projekteissa. Termiä käytettiin Netscape Navigatorin lähdekoodin julkaisussa ja O'Reilly & Associatesilla: 7. huhtikuuta 1998 järjestettiin ensimmäinen Open Source Summit -kokoontuminen.
== 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öä:https://opensource.org/docs/osd
#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.
=== Avoin lähdekoodi vai vapaa ohjelmisto? ===
Eric Raymondin essee The Cathedral and the Bazaar huomioi avoimen lähdekoodin merkityksen ohjelmiston kehitysmenetelmään vuonna 1997.
Richard Stallmanin mukaan termit vapaa ohjelmisto ja avoin lähdekoodi kuvaavat lähes samoja asioita, mutta eri arvoihin perustuvia näkemyksiä: avoin lähdekoodi on kehitysmenetelmä kun taas vapaa ohjelmisto on sosiaalinen liike. 
Termi avoin lähdekoodi kehitettiin helmikuussa 1998 vastauksena Netscapen päätökseen julkaista verkkoselaimensa lähdekoodit 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.
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 kehitystä tekevät sekä yritykset että vapaaehtoiset henkilöt. 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 ja sitä ei pidetä sanan perinteisessä mielessä valmiina tuotteena vaan jatkuvana prosessina.
== 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.https://economictimes.indiatimes.com/small-biz/startups/newsbuzz/why-is-open-source-software-so-popular/articleshow/62689785.cms
Avoimen lähdekoodin eduiksi mainitaan kynnyksen madaltaminen ohjelman kokeiluun: muun muassa Xen levisi laajalti ilman omaa markkinointia. Ohjelman käyttö on ydinasia ja ilman käyttäjiä ohjelma ei materialisoidu. Perinteiseen malliin verrattuna, joka riippui markkinointilupauksista ja yksittäisistä esittelyversioista, avoimen lähdekoodin ohjelmissa käyttäjä tietää täsmälleen mitä saa eikä luota pelkkiin lupauksiin: lähdekoodin voi nähdä yksi tai 100 henkilöä ja kehittäjät eivät voi tehdä lepsusti.
== 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.
Avoimen lähdekoodin kehittäjäyhteisöjen sanotaan olevan puoliksi organisoituneita joukkoja avustajia, jotka tyypillisesti toimivat ohjelmistoon liittyvissä projekteissa. Yhteisössä olevilla henkilöillä on jaettuja intressejä tehdä jotain, joka voidaan jakaa yhteisön sisällä tai sen ulkopuolella. Avoimen lähdekoodin projekti ovat lähes aina hajautettujen yhteisöjen tuotosta.
Avoimen lähdekoodin projekteissa on jonkinlainen rakenne ja projektin hallinta voi olla dokumentoitu projektin verkkosivuilla tai projektin dokumentaatiossa. Projekteissa voi olla henkilöitä tietyissä rooleissa, jotka ovat usein samankaltaisia eri projekteissa. Rooleja voivat olla johtajat (jotka tekevät lopullisen päätöksen ominaisuuksista, julkaisuista ja niin edelleen), ylläpitäjät, avustajat ja käyttäjät. Osallistuminen voi vaatia tiettyjen ohjenuorien noudattamista ja osallistujan on oltava saatavilla palautteeseen vastaamiseen.
== 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.
== Kehitysmallit ==
Avoimen lähdekoodin ohjelmistojen kehitysmallien ominaispiirre on joukko toisistaan riippuvia ohjelmakoodin laatua parantavia prosesseja eikä täysin lineaarista etenemistä julkaisuun. Perinteisessä kehitysmallissa on joukko itsenäisiä jaksoja aktiviteetteja, joiden sarja johtaa julkaisuun. Avoimen lähdekoodin kehitysmallissa on ryhmien välistä yhteistyötä, jatkuvan integraation ja jatkuvan testaamisen hyödyntämistä, sekä suurempi loppukäyttäjien mukanaolo. Perinteisen "suuren paljastuksen" mallin sijaan avoimen lähdekoodin malli kannustaa jatkuvaan ja itsenäiseen ominaisuuksien kehittämiseen. Uudet ominaisuudet voidaan integroida nopeammin ja niiden varaan voidaan kehittää aikaisemmin. Varhainen ja usein tapahtuva julkaisu ("Release early, release often") johtaa varhaisempaan koodin katselmointiin hyvissä ajoin ennen julkaisua ja malli kannustaa jatkuvaan katselmointiin, jossa kaikki yhteisön jäsenet voivat kommentoida. Malli myös kannustaa pieniä, asteittaisia muutoksia jotka ovat helpompia ymmärtää ja testata kehittäjien ollessa aktiivisesti mukana. Avoimen lähdekoodin malli korostaa katselmointia koko kehityskaaren läpi.
Useissa avoimen lähdekoodin ohjelmistoprojekteissa käytettyä kehitysprosessia on kuvattu jatkuvan kehityksen mallina ().
== Kritiikkiä ==
Avoimen lähdekoodin kehitystä on myös kritisoitu: useat osallistujat tekevät vain muutamia pieniä bugikorjauksia ja suuri osa kehityksestä on edelleen pienen ydinryhmän vastuulla. Ydinryhmän vastuulla on myös bugiraporttien käsittely ja kritiikkiin vastaaminen, joka lisää työmäärää. Jotkin yritykset kuten Facebook ja Google maksavat työntekijöille avoimen lähdekoodin projekteissa työskentelystä täysipäiväisesti, jonka avulla projektit ovat virkeitä. Joitakin huolestuttaa osallistumisesta maksamisen muuttavan miten ja miksi sitä ylipäätään tehdään.
== Ohjelmistojen ulkopuolella ==
Avointa lähdekoodia sanotaan myös sosiaaliseksi liikkeeksi.
Tietokoneohjelmistojen ulkopuolella avoimen lähdekoodin konseptia on käytetty luomaan vapaita verkossa olevia tietokantoja ja kaupalliset toimijat täyttävät arvosteluja myytävistä asioista.
Wikipedian perustaja Jimmy Wales kutsuu sitä mieluummin "vapaan kulttuurin liikkeeksi" kuin avoimeksi lähdekoodiksi. Avoimen lähdekoodin projekteissa on tyypillisesti organisaatio tai henkilö johdossa, joka on vastuussa siitä, kun taas Wikipediasta puuttuva keskeinen hallinta erottaa sen avoimen lähdekoodin mallista.
== Katso myös ==
* Avoimet sisällöt
* Avoin laitteisto
* Open Source Initiative
* Jaettu lähdekoodi
== Lähteet ==
* 
=== Viitteet ===
== Aiheesta muualla ==
Kansainvälisiä:
* Open Source Initiative
* Analysis of the Impact of Open Source Software (PDF) 
* Understanding Open Source Software Evolution: Applying, Breaking, and Rethinking the Laws of Software Evolution 
* Open Sources: Voices from the Open Source Revolution 
Suomalaisia:
* Suomen avoimien tietojärjestelmien keskus - COSS ry
* Validos (esim. yrityskäytön UKK )
* Julkisen hallinnon suositus JHS 169 Avoimen lähdekoodin ohjelmien käyttö julkisessa hallinnossa 
* Lokalisointi (avointen ohjelmistojen lokalisoinnista kiinnostuneille yhteisön sivusto)
Luokka:Ohjelmointi
Luokka:Seulonnan keskeiset artikkelit