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 vapaa ohjelmisto, 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ähdekoodia.
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. 
GNU-projektin lisäksi muita merkittäviä projekteja 1980-luvulla olivat Berkeley Software Distribution (BSD), X Window System ja TeX. Linus Torvaldsin aloittama ydin oli osa, jota GNU-projektilla ei vielä ollut, ja Linuxin sai helpommin toimimaan kuin 386BSD:n. Myös Torvaldsin pragmaattinen lähestymistapa kiinnosti ohjelmistokehittäjiä.
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 &amp; 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öä:
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.
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.
Vuoden 2024 Open Source Security and Risk Analysis (OSSRA) -raportin mukaan 77 prosenttia kaikesta lähdekoodista on peräisin avoimesta lähdekoodista ja jokaisessa lähdekoodikannassa on mukana avointa lähdekoodia: useimmissa avointa lähdekoodia oli 99-100 prosenttia.
Vuoden 2022 State of Open Source Report -raportin mukaan ohjelmointikielet ja ohjelmistokehykset olivat yleisintä yritysten käyttämään avointa lähdekoodia. Tämän jälkeen tulivat tietokantajärjestelmät, käyttöjärjestelmät, versiohallintajärjestelmät, tekoälyn ja koneoppimisen kehykset ja työkalut, sekä jatkuvan integraation ja jatkuvan toimituksen (CI/CD) työkalut.
Taloudellinen merkitys.
Avoimen lähdekoodin arvoa taloudellisesti sanotaan vaikeaksi arvioida, koska sen luonteeseen kuuluu, ettei tarvitse antaa rahallista vastiketta käytöstä ja ei ole keskitettyä seurantaa käytöstä. Arvoa voidaan laskea tuotantokustannuksien mukaan (paljonko maksaisi tehdä vastaava ohjelmisto uudestaan tyhjästä) ja kysyntäarvon mukaan (taloudellisesti ja sosiaalisesti). Arvion mukaan laajasti käytetyn avoimen lähdekoodin käyttöjärjestelmän tuotantokustannus olisi 4,15 miljardia dollaria, jos se pitäisi tehdä tyhjästä uudelleen. Käyttöarvo on huomattavasti suurempi 8,8 triljoonaa dollaria ja yritysten pitäisi käyttää 3,5 kertaisesti ohjelmistoihin mikäli avointa lähdekoodia ei olisi. 
Arvion mukaan viisi prosenttia avoimen lähdekoodin kehittäjistä on vastuussa 96 prosentista sen käyttöarvosta.
Digitaalinen suvereniteetti.
Euroopan unioni on asettanut tavoitteeksi vahvistaa Euroopan digitaalista suvereniteettia johtuen EU:n ulkopuolisten yritysten vaikutusvallasta.
EU:n avoimen lähdekoodin strategian viimeisin versio on hyväksytty 21. lokakuuta 2020 vuosille 2020-2023. Strategian mukaan avoin lähdekoodi on lähellä julkishallinnon ydintä koska: se on julkisesti saatavilla ja hyödyntää hyvin julkista rahoitusta sekä edistää valinnan vapautta; se tekee helpoksi ohjelmistoratkaisun uudelleen käyttämisen, jolloin ponnistelut kootaan yhteen; se tekee helpoksi lisätä ja tehokkaaksi lisätä ominaisuuksia, jotka voidaan jakaa kaikkien kesken ja kaikki hyötyvät.
Saksan hallitus käynnisti vuonna 2023 openDesk-hankkeen, jonka tavoitteena on vähentää riippuvuutta kaupallisten ohjelmistojen toimittajista ja samalla tukea läpinäkyvyyttä ja yhteentoimivuutta. openDeskin tavoitteisiin kuuluu digitaalisen suvereniteetin edistäminen, yhteistyö ja käyttäjien palveleminen. openDesk on kokoelma ohjelmistoja, jotka ovat tärkeitä päivittäisessä työssä julkisella sektorilla. Projektin ohjelmistoihin kuuluu tekstin luomiseen, projektin hallintaan, sähköpostiin, kalenteriin ja viestintään tarkoitettuja ohjelmia. Projektia johtaa Saksan sisäministeriö ja mukana on joukko yrityksiä, joihin kuuluvat muun muassa Collabora, Dataport, Univention, OpenXchange, Nextcloud, XWiki ja OpenProject. Hankkeeseen on aiemmin viitattu nimellä Sovereign Workplace. 
Huhtikuussa 2024 Saksan osavaltio Schleswig-Holstein ilmoitti siirtyvänsä LibreOfficen käyttöön digitaalisen suvereniteetin parantamiseksi. Ilmoituksen mukaan vapaalla ohjelmistolla hallinnolla on paremmat mahdollisuudet valita mistä ohjelmisto ja tuki tulevat, sekä voivat rahoittaa paikallisia kehittäjiä parannuksien tekemiseen. Siirtymän suunnittelu alkoi vuonna 2021 ja myös muut osavaltion käyttämät ohjelmistot vaihtuvat kuten sähköpostipalvelimet. Saksassa on aiemmin kokeiltu siirtymää, mutta osittainen siirtyminen aiheutti ongelmia. Aiemmissa siirtymissä tavoitteena oli vain kustannussäästöt, mutta myöhemmin tavoitteiksi ovat tulleet tiedon ja yksityisyyden suojaaminen ja turvallisuus. Lisäksi EDPS:n tutkimuksessa on todettu, että Euroopan komission Microsoft 365:n käyttö rikkoo EU:n tietosuojalakia.
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.
Amazon Web Servicesin ja Apache Foundationin David Nalley on sanonut, että avoimen lähdekoodin ohjelmistoja käyttävät yritykset hyötyvät ohjelmista enemmän kuin antavat niille takaisin. Nalleyn mukaan suhde avoimeen lähdekoodiin on muuttumassa yhteisövetoisista valmistajavetoisiin projekteihin, jotka eivät ole sama asia. Painotus siirtyy riskien arviointiin ja projektin jatkuvuuden varmistamiseen. "The Registerin" kirjoituksen mukaan useat ohjelmistoyritykset hyötyvät avoimesta lähdekoodista yrityksen kasvuvaiheessa, ja pyrkivät rajoittamaan koodin käyttöä muuttamalla ohjelmiston lisenssiä kun yritys on kasvanut suureksi. Esimerkkeinä mainitaan Hudson, Elasticsearch, Terraform ja Redis. Artikkelin mukaan avoin lähdekoodi on perustettu yhteisen edun idealle.
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.
Aiheesta muualla.
Kansainvälisiä:
Suomalaisia: