Yksi vaaliteemoistani on avoimen lähdekoodin ohjelmistojen laajamittainen hyödyntäminen Helsingissä. Kaupungin tulisi vaatia kaikissa ohjelmistohankkeissaan lähdekoodin avoimuutta sekä hyvää dokumentaatiota, ja lisäksi hyödyntää omassa toiminnassaan mahdollisimman paljon olemassaolevia avoimen lähdekoodin ohjelmistoja. Asiaan ollaan myös heräämässä muualla Euroopassa, missä Saksan valtapuolue CDU lisäsi Marraskuun 2019 puoluekokouksessaan avoimen lähdekoodin hyödyntämisen puolueohjelmaansa.

Avoin lähdekoodi lyhyesti

Avoimella lähdekoodilla tarkoitetaan yksinkertaisuudessaan sitä, että jonkin ohjelmiston toiminnallisuuden määräävä koodi on kenen tahansa luettavissa ja käytettävissä. Tyypillisesti oletetaan myös, että koodi on kirjoitettu sellaiseen muotoon, että sitä on mahdollista ymmärtää kohtuullisen perehtymisen jälkeen. Avoimen lähdekoodin projektien suurimpia hyötyjä verrattuna suljettuun koodiin ovat koodin läpinäkyvyys eli mahdollisuus vahvistaa koodin tekevän juuri se, mitä se lupaa tekevänsä. Avoimuuden ansiosta käyttäjät ja vapaaehtoisyhteisöt voivat myös valvoa koodin laatua ja itse korjata siinä havaitsemiaan toiminnallisuuteen ja tietoturvaan liittyviä ongelmia. Tunnetuimpia avoimen lähdekoodin projekteja ovat Linux-kerneli, Firefox-selain ja Android-käyttöjärjestelmä puhelimiin.

Yhden toimittajan ongelma

Avaamalla julkisilla rahoilla ostettavien ohjelmistojen lähdekoodi säästyttäisiin monessa hankkeessa ongelmilta, joita ohjelmiston tilaaminen yhdeltä toimittajalta aiheuttaa. Esimerkiksi Apotti-järjestelmään liittyy lukuisia käyttäjille ilmeisiä tuskallisia ongelmia, joiden korjaamisesta järjestelmän myynyt yritys veloittaa toki mielellään. Toinen huvittava esimerkki löytyy jo edesmenneestä VR:n lipunmyyntijärjestelmästä, josta ei voinut ostaa yöllä lippuja. Ominaisuuden lisääminen järjestelmään maksoi lopulta 2,7 miljoonaa euroa.

Nykytilanteen ongelmallisuus johtuu pitkälti siitä, että ohjelmistohankkeita kilpailutettaessa suuret ohjelmistotalot voivat myydä itse tuotteen tappiolliseen hintaan ja tienata vasta kiskurihintaisilla päivitys- ja korjaustoimilla. Kun järjestelmä on kerran tilattu, ei toimittajaa voi enää vaihtaa, ja pienet muutostoimenpiteet saattavat tulla kohtuuttoman kalliiksi. Koska suurissa hankkeissa tyypillisesti kiinnostutaan ja uutisoidaan lähinnä kokonaishinnasta, on tappiolla tekeminen ja päivittämisellä rahastaminen vakiintunut ohjelmistoalalla käytännön rahastusmalliksi.

CGI:n toimittama laadukas suljetun lähdekoodin käyttöliittymä Kalasataman terveyskeskukseen. https://twitter.com/LiPekka/status/1352237336583671814

Vastuu järjestelmän laadusta, toimivuudesta ja ongelmien korjaamisesta kohtuulliseen hintaan voitaisiin periaatteessa sisällyttää hankkeen kilpailutukseen. Hankintalain monimutkaisuuden vuoksi kilpailutuksen määrittely oikein ja tulevaisuutta ennustaen on kuitenkin kovin työlästä ja siihen uppoaa kohtuuton määrä kuntien ja konsulttien arvokkaita työtunteja. Tilaajan näkökulmasta asia ratkeaisi kovin yksinkertaisesti vaatimalla suoraan toteutusta avoimen lähdekoodin mallilla. Avoimuus mahdollistaisi myös esimerkiksi toimittajan vaihtamisen kesken projektin, mikäli työssä havaitaan vakavia laatuongelmia. Projektin valmistuttua ylläpito- ja päivitystoimet voitaisiin myös kilpailuttaa uudelleen, tai jopa toteuttaa käyttäjien omilla voimavaroilla.

Julkiset projektit ovat kansallisomaisuuttamme

Julkisia ohjelmistohankintoja vaivaa pinttynyt harhaluulo siitä, että vain toimivalla lopputuotteella on merkitystä ja käyttäjän ei tarvitse saada itselleen sen lähdekoodeja tai muita järjestelmän pystyttämiseen liittyviä tietoja. Kun järjestelmä lopulta ikääntyy tai sen omistaja haluaa korvata sen uudella, ei vanhan järjestelmän hyödyntäminen uudessa hankkeessa tule kuuloonkaan. Lähdekoodit ovat tiukasti järjestelmän toimittaneen yrityksen omaisuutta, oli niihin sitten upotettu kuinka monta veroäyriä hyvänsä, eikä niiden hyödyntämiseen ole kunnalla saati sitten kuntalaisilla mahdollisuutta. Asiaan tarvitaan selvästi muutos.

Julkisiin ohjelmistohankkeisiin tulisikin ruveta suhtautumaan kuten muihinkin julkisiin infrastruktuurihankkeisiin. Yritys toimittaa tilatun tuotteen, jonka jälkeen se siirtyy kokonaisuudessaan kunnan — tai valtion — omistukseen ja ylläpidettäväksi. Ohjelmistohankkeiden kohdalla tämä tarkoittaa sitä, että kunnalla on viimeistään projektin päätyttyä hallussaan ohjelmiston lähdekoodi, dokumentaatio ja lupa tehdä sillä mitä hyvänsä avoimen lähdekoodin periaatteiden mukaisesti. Kuntien tietojärjestelmät ovat lopulta kuitenkin yhtä tärkeitä julkisen infrastruktuurin osia kuin vaikkapa tieverkosto ja vesihuolto. Emme toki halua lahjoittaa julkisella rahalla ostettua kansallisomaisuuttamme yrityksille täysin vastikkeettomasti.

Olemassaolevat järjestelmät uusiokäyttöön

Tietojärjestelmien elinkaaressa tulee väistämättä vastaan tilanne, jossa täytyy harkita joko mittavia päivityksiä tai kokonaan uuden järjestelmän pystyttämistä. Mikäli uuteen järjestelmään päädytään, fiksu kehittäjä selvittää ensin, mitä vanhasta on käytettävissä uudelleen ja mitä tarvitsee tehdä kokonaan tyhjästä. Kunnan ohjelmistohanke puolestaan ohittaa ensimmäisen vaiheen ja tilaa kokonaan uuden järjestelmän. Mahdollisuutta kierrättää vanhaa ja säästää työtunteja ei edes ole, koska järjestelmän lähdekoodit ovat parhaassakin tapauksessa järjestelmän muinoin toimittaneen yrityksen palvelimilla ties missä. Vaikka lähdekoodit löytyisivätkin, ne ovat järjestelmän aikoinaan toimittaneen yrityksen omaisuutta, joka voi tietysti myydä ne kunnalle uudelleen täyteen hintaan hieman päivitetyllä ulkoasulla.

Jatkuvaa uusien järjestelmien tilailua parempi vaihtoehtoa olisi toteuttaa kerralla mahdollisesti hieman kalliimpi, mutta toimiva ja laadukas avoin järjestelmä. Päivityksien ajan tullessa voitaisiin ne tehdä olemassaolevan järjestelmän puitteisiin, jolloin siirtyminen uuteen olisi myös käyttäjille helpompaa, kun vanhan järjestelmän hyvät puolet olisivat mukana myös uudessa. Hyväksi havaittu avoin järjestelmä voitaisiin ottaa lisäksi käyttöön muissa kunnissa, sairaanhoitopiireissä, kouluissa ja virastoissa, jotka vastaavaa järjestelmää tarvitsevat. Jokaisen organisaation ei tällöin tarvitsisi muutaman vuoden välein käyttää rahaa omien järjestelmiensä uusimiseen, eikä työntekijöiden tuskailla eri järjestelmien kanssa, koska toimiva ratkaisu on jo kerran keksitty ja koodattu.

Avoimuus lisää laatua, luottoa ja tietoturvaa

Kaikkiin suurempiin koodausprojekteihin jää aina virheitä koodarien kokemuksesta riippumatta. Erityisesti omia virheitään on koodatessa vaikea havaita ja niillä on ikävästi tapana päätyä julkaistuun ohjelmaan. Virheitä voi toki karsia laaduntarkastuksella ja testaamalla, mutta kaikkea ei aina ole mahdollista testata ja tarkastaa. Jotkut ongelmat voivat esiintyä vain tietyissä erikoisissa reunatapauksissa ja käyttötarkoituksissa. Silloin, kun ongelmia jää vaikkapa kuntalaisten potilastietoja käsittelevään järjestelmään, voi kiireessä koodatulla ratkaisulla tai yhden koodarin tietämättömyydellä olla kohtalokkaat seuraukset tietoturvan kannalta.

Käytännössä kaikki tietoturvan kannalta merkittävät standardit ja protokollat ovatkin nykyään avoimen lähdekoodin projekteja — ja hyvästä syystä. Mikäli jonkin laajasti käytetyn ohjelmistohankkeen lähdekoodi julkaistaan avoimesti, kerää se väistämättä kiinnostuneita katselijoita ja muita lähdekoodia hyödyntäviä koodareita etsimään ja raportoimaan koodista haavoittuvaisuuksia ja vikoja. Parhaassa tapauksessa katselijat myös ehdottavat korjauksia havaitsemiinsa vikoihin, sillä avoimen lähdekoodin projekteihin osallistuminen on monen alan työnantajan silmissä kultaakin arvokkaampaa kokemusta. Kun näitä vapaaehtoisia koodareita lopulta on tarpeeksi paljon, vähenee koodista löytyvien vikojen määrä huomattavasti. Käyttäjä voikin luottaa varsin vahvasti laajasti käytetyn avoimen koodin toimivuuteen, sillä voihan sen aina tarvittaessa itse varmistaa.  

Suomessa on avoimen lähdekoodin osaamista

Suomalaiset ovat stereotyypisesti olleet avoimen lähdekoodin ja tietotekniikan edelläkävijöitä. Maasta löytyy lukematon määrä ohjelmistoalan ammattilaisia, jotka vapaa-ajallaan osallistuvat joko omien tai kollegojensa avoimen lähdekoodin projektien kehittämiseen. Todennäköisesti näiden joukosta löytyisi varmasti muutama, jotka olisivat valmiita täysin ilmaiseksi käymään läpi esimerkiksi Apotin ongelmia ja myös korjaamaan niitä. Mikäli kunnissa siirryttäisiin laajamittaiseen avoimen lähdekoodin hyödyntämiseen, tarkoittaisi tämä väistämättä sitä, että ongelmat havaittaisiin ja korjattaisiin huomattavasti nopeammin ja halvemmalla kuin nykyään.

Siksi julkinen raha = julkinen koodi

Toivon tämän tekstin herättävän vähintään kesäkuussa valittavia kuntapäättäjiä ymmärtämään, ettei Apotin kaltaisia massiivisia epäonnistumisia julkisissa ohjelmistohankkeissa tarvitse sietää. Niille on olemassa täysin toimiva vaihtoehto, joka olisi myös täysin toteutettavissa kohtuullisen lyhyellä aikataululla. Mikäli itse Helsingin kaupunginvaltuustoon päädyn, tulee asia ehdottomasti olemaan työlistallani ja aloitteen kohteena.