Avoin lähdekoodi

Avoin lähdekoodi (engl. open source /'əʊ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.

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.
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. 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.

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.