Atte Karkimo, Joni Kivinen, Juha Rouvinen, Tuukka Hastrup AVOIMEEN LÄHDEKOODIIN PERUSTUVA KEHITYS PROJEKTINHALLINNAN NÄKÖKULMA Tietojärjestelmätieteen harjoitustyö 3.3.2007 Jyväskylän yliopisto Informaatioteknologian tiedekunta Jyväskylä
TIIVISTELMÄ Atte Karkimo, Joni Kivinen, Juha Rouvinen, Tuukka Hastrup, Avoimeen lähdekoodiin perustuva kehitys projektinhallinnan näkökulma / Atte Karkimo, Joni Kivinen, Juha Rouvinen, Tuukka Hastrup Jyväskylä: Jyväskylän yliopisto, 2007. 16 s. Harjoitustyö Tämä työ käsittelee eräitä projektinhallinnan erityispiirteitä avoimeen lähdekoodin perustuvassa kehityksessä. Käsittelemme sekä avoimen kehityksen haasteita että mahdollisuuksia, ja vertaamme sitä perinteiseen ohjelmistotekniikkaan. AVAINSANAT: tutkielma, avoin lähdekoodi, hallinnointi, kehitys, menestys, johtaminen
SISÄLLYS 1 JOHDANTO...4 2 AVOIMEN JA PERINTEISEN KEHITYKSEN VERTAILU...5 2.1 Käyttöönotto...5 2.2 Mielikuvat ja todellisuus...5 3 KEHITYSVAIHEIDEN MERKITYS PROJEKTIN TEHOKKUUDELLE...7 3.1 Kehitysvaiheet...7 3.2 Tehokkuuden arviointi...7 3.3 Tehokkuuteen vaikuttavat tekijät ja niiden rooli projektin eri vaiheissa...8 4 PROJEKTIEN MENESTYSTEKIJÄT...9 4.1 Perinteiset mittausmenetelmät...9 4.2 Avoimen lähdekoodin projekteihin sovellettuja mittausmenetelmiä...10 4.3 Merkitys projektin hallinnoinnille...10 5 JOHTAMINEN...12 5.1 Vapaaohjelmistohakkerit...12 5.2 Hakkerietiikka...12 5.3 Yrittäjyys...13 6 YHTEENVETO...14
1 JOHDANTO Avoin lähdekoodi on laaja ilmiö ohjelmistotekniikassa ja sen merkitys kasvaa. Sen ominaispiirteet vaikuttavat ohjelmistonkehitykseen: taustalla on ideologia tiedon ja ohjelmistojen vapaudesta, näkemys avoimuudesta tärkeänä osana ohjelmistonkehitystä sekä ympäristö, jossa toimitaan pitkälti vahvasti verkottuneina yksityishenkilöinä. Avoimeen koodiin perustuva ohjelmistokehitys voi käyttää muiden tällaisia komponentteja, siinä voi olla merkittävää koodin julkaisu yleisesti tarkasteltavaksi ja paranneltavaksi, se voi olla olemassa olevan kehitysyhteisön toimintaan osallistumista ja sen tavoitteena voi olla uuden yhteisön luominen. Tässä ei suljeta pois mitään näistä aspekteista, mutta ei myöskään voida sanoa, että kaikki tulokset koskisivat kaikenlaisia projekteja. Projektinhallinta ohjelmistotuotannon alueena käsittelee oikeiden ihmisten löytämistä projektin työntekijöiksi ja muiden resurssien hankintaa, projektin suunnittelua ja aikataulua, seurausta ja valvontaa, riskinhallintaa, alihankintasopimuksia, projektin toiminnan mittausta ja analysointia sekä sidosryhmien huomiointia. Avoimen lähdekoodin projektit ovat epämuodollisia. Voidaankin kysyä voidaanko niitä hallita ja jos voidaan, niin kuka ja miten. Aiemmista avoimen lähdekoodin projektien tutkimuksista olemme tunnistaneet joitakin projektinhallinnan teemoja ja käsittelemme niitä seuraavassa.
5 2 AVOIMEN JA PERINTEISEN KEHITYKSEN VERTAILU Kappaleessa käsitellään avoimeen lähdekoodiin perustuvien sekä suljettuun lähdekoodiin ja perinteisiin ohjelmistotekniikan menetelmiin perustuvien ohjelmistojen ja kehityksen eroja. 2.1 Käyttöönotto Yrityksen ottaessa käyttöön avoimeen lähdekoodiin perustuvia ratkaisuja, tulee ottaa huomioon tiettyjä asioita, jotka eroavat osittain suljettuun lähdekoodiin liitetyistä kriteereistä. Ne voidaan jakaa funktionaalisiin (mm. täyttääkö ohjelma tarkoituksensa?), teknisiin (mm. onko ohjelman käyttöönotto mahdollista?), organisaatiollisiin (mm. onko ohjelman takana oleva yhteisö kunnossa?), laillisiin (mm. mitä ohjelman lisensseistä seuraa?), taloudellisiin (mm. onko ohjelma helposti ylläpidettävissä?) ja poliittisiin seikkoihin (mm. miten käyttöönotto vaikuttaa yrityksen julkisuuskuvaan?) (Cruz, Wieland & Ziegler). Merkittävimpiä eroja ratkaisun arviointiin tuo avoimen lähdekoodin läpinäkyvyys, jolloin voidaan tarkastella monia asioita, jotka suljetuissa ratkaisuissa jäisivät tuntemattomiksi. Tämä tekee avoimista kehitysyhteisöistä myös ainutlaatuisen tutkimuskohteen ohjelmistotekniikan kannalta. (Scacchi, 2007) Yrityksen tulee tutustua ohjelmiston kehityksen vaiheisiin, sen tekijöiden keskinäisiin suhteisiin, lähdekoodiin ja tunnettuihin virheisiin. (Cruz, Wieland & Ziegler) 2.2 Mielikuvat ja todellisuus Avoimeen lähdekoodiin yleisesti liitettyjä mielikuvia ovat nopea kasvu, luovuus, yksinkertaisuus, modulaarisuus ja vikojen nopea korjaaminen. Vertailtaessa tiettyjä avoimia ja suljettuja ohjelmia havaittiin avoimen lähdekoodin eduiksi edellä mainituista luovuus ja vikojen nopea korjaus. Muista oletetuista ominaisuuksista ei löytynyt näyttöä. Yksinkertaisuutta tarkasteltaessa avointen projektien todettiin jopa olevan huonommassa asemassa. (Paulson) Luovuus ilmeni siinä, että vertailtuihin avoimen lähdekoodin projekteihin lisättiin enemmän funktioita tietyssä ajassa, jolloin voidaan olettaa myös ohjelmien ominaisuuksien lisääntyneen. Funktioiden lisääntyminen saattaa vaikuttaa
6 myös virheiden nopeaan korjaamiseen. Suurin syy siihen on kuitenkin testaajien suuri määrä. Avoimuuden ansiosta testaajien on mahdollista myös paikallistaa virheiden aiheuttajia ja jopa korjata niitä. (Paulson) Scacchi sen sijaan tunnistaa avoimessa kehityksessä monia piirteitä, joiden avulla se voi olla nopeampaa, halvempaa ja parempaa kuin perinteisen ohjelmistotekniikan mukaiset menetelmät. Hänen mukaansa avoin kehitys on ohjelmistokehityksen malli, jonka tietyistä yhteisöllisistä erityispiirteistä perinteisen ohjelmistotekniikan käyttäjät voisivat ottaa mallia. Toisaalta avoimet yhteisöt voisivat myös hyötyä perinteisten menetelmien käytöstä projektinhallinnassa. (Scacchi, 2003)
7 3 KEHITYSVAIHEIDEN MERKITYS PROJEKTIN TEHOKKUU- DELLE Kappaleessa käsitellään avoimen lähdekoodin projektien tehokkuuteen vaikuttavia muuttujia ja niiden roolia projektin eri vaiheissa. 3.1 Kehitysvaiheet Ohjelmistokehityksen vaiheet on normaalisti jaoteltu analyysiin, suunnitteluun, toteutukseen, testaukseen ja ylläpitoon. Avoimen lähdekoodin projekteille annetaan samaan tapaan eri luokitukset. Kehitysvaiheesta riippuen projekti on joko suunnittelu-, pre-alfa-kehitys-, alfa-testaus-, beeta-testaus- tai tuotantovaiheessa. Edistyneet ja pitkään kehityksessä olleet projektit luokitellaan kypsiksi. 3.2 Tehokkuuden arviointi Tehokkuutta voidaan arvioida subjektiivisesti ja objektiivisesti. Saavutetut tavoitteet ja projektin edistyminen voidaan nähdä objektiivisina merkkeinä projektin tehokkuudesta. Toisaalta tehokkuuteen vaikuttaa myös kehitystiimin subjektiivinen näkemys projektin edistymisestä. Koska suuri osa avoimen lähdekoodin kehityksestä pohjautuu vapaaehtoiseen työhön, on ryhmän jäsenten motivaation ja työpanoksen kannalta subjektiivinen tehokkuus tärkeää. Jos jäsenet eivät koe projektin edistyvän, saattavat he hylätä sen. Kehitystiimien tehokkuutta on mitattu input-processing-outcome (IPO) -mallin avulla. Syötteeksi (input) voidaan laskea kuuluvaksi muuttujia kuten kehittäjien määrä projektissa, tehtävä ja teknologia. Prosessointiin kuuluu esimerkiksi kehitystiimin tavoitteet ja luottamus. Lopputulokseksi (outcome) voidaan ymmärtää työn laatu, tehokkuus ja jäsenten tyytyväisyys. Kaikkia näitä tekijöitä voidaan käyttää kehitystiimin tehokkuuden arvioinnissa. Avoimen lähdekoodin projekteissa erityistä huomiota tulee kiinnittää myös syötteisiin. Koska suuri osa työstä perustuu vapaaehtoisuuteen, voidaan kehittäjien määrä nähdä merkkinä projektin tehokkuudesta. Tällä on erityinen merkitys omakohtaiseen arvioon (subjective evaluation) projektin tehokkuudesta, koska suurempi kehitystiimi käsitetään projektin kannalta hyväksi asiaksi. Ryhmän jäsenet arvioivat, että suu-
8 rempi kehitystiimi saa projektin varmemmin päätökseen. 3.3 Tehokkuuteen vaikuttavat tekijät ja niiden rooli projektin eri vaiheissa Seuraavat havainnot perustuvat Stewartin ja Gosainin (2006) tutkimustuloksiin. Kuten aiemmin mainittu, ryhmän koko voidaan nähdä tehokkuutta lisäävänä tekijänä. Tämä kuitenkin osoittautuu projektin alkupuolella tosiasiassa projektia hidastavaksi tekijäksi, koska ehdotuksia toiminnallisuuksista tulee useampia ja asioista voi olla vaikeampi päästä yhteisymmärrykseen. Projektin myöhemmissä vaiheissa, kun projektin on edennyt beeta-testaukseen, on suurempi kehitystiimi tehokkaampi. Projektin edetessä ryhmän koon merkitys omakohtaiseen arvioon vähenee, ja saavutettujen tulosten merkitys kasvaa. Saavutetut tulokset on suurin subjektiiviseen ja objektiiviseen tehokkuuteen vaikuttava tekijä beetavaiheen jälkeen. Hyvin edennyt projekti motivoi jäseniä jatkamaan sen parissa. Projektin alkupuolella kehittäjien yhteinen näkemys ja ideologia vaikuttavat positiivisesti omakohtaiseen arvioon. Myöhemmässä vaiheessa niiden merkitys vähenee, kun ryhmän välille kehittyy normit ja toimintatavat, ja tavoitteiden saavuttaminen nousee tärkeämpään asemaan. Tavoitteiden saavuttamiseen yhteinen ideologia vaikutti negatiivisesti. Syyksi voidaan arvella ryhmän huolehtivan sosiaalisista tarpeistaan tehokkuuden kustannuksella tai samaa ideologiaa edustavan ryhmän olevan erikoistunut samoihin asioihin. Luottamuksella ryhmän jäsenten kesken havaittiin olevan hieman suurempi merkitys omakohtaiseen arvioon projektin myöhemmässä vaiheessa kuin alkupuolella. Sen sijaan kognitiivisella luottamuksella (usko ryhmän jäsenten kykyihin ja pätevyyteen) havaittiin olevan suurempi merkitys kehitystiimin kokoon projektin alkuvaiheilla.
9 4 PROJEKTIEN MENESTYSTEKIJÄT Kappaleessa käsitellään perinteisten ja avoimen lähdekoodin projektien menestystekijöitä, niiden mittausta ja vaikutusta avoimen lähdekoodin projektin hallinnointiin. 4.1 Perinteiset mittausmenetelmät Perinteisten ohjelmistojen menestyksen mittaukseen on useita eri tapoja, mutta ne eivät yleensä sovellu avoimien ohjelmistojen menestyksen mittaukseen, joko epäsatunnaisten otoksien tai liian monimutkaisen/mahdottoman tietojen keruun takia. Yleisin näistä malleista on DeLonen ja McLeanin malli (kuvio 1), jossa on kuusi menestystä mittaavaa tekijää: saatavilla olevan tiedon laatu (dokumentointi), ohjelmiston laatu (ISO standardin 9126 mukaan osa-alueet ovat toiminnallisuus, luotettavuus, käytettävyys, tehokkuus, ylläpidettävyys ja siirrettävyys), käyttö, käyttäjätyytyväisyys, vaikutus yksilöön ja yhteisöön. KUVIO 1 DeLonen ja McLeanin malli ohjelmistojen menestyksestä. Nämä kuitenkin antavat hyvää ohjeistusta siihen, mistä menestyksen mittareita avoimen koodin projektien tapauksessa kannattaa lähteä hakemaan. Tämän lisäksi Hackmanin malli, joka keskittyy työryhmien tehokkuuden mittaamiseen, on hyvä lähtökohta avoimen lähdekoodin projektien menestystekijöiden hakuun. Hackmanin malli sisältää mm. ryhmän jatkuvan yhteistyökyvyn ja yksittäisten ryhmänjäsenten henkilökohtaisten tarpeiden tyydyttämisen.
10 4.2 Avoimen lähdekoodin projekteihin sovellettuja mittausmenetelmiä Crowston, Howison ja Annabi (2006) esittää avoimen lähdekoodin projekteille seuraavia menestyksen mittausmääreitä jaotellen ne neljään osaan: ohjelmiston kehitys, laatu, käyttö ja seuraukset. Ensinnäkin ohjelmiston kehitykseen liittyy kehittäjien aktiivisuus. Luonnollisesti mitä enemmän projektin kehittäjät ovat valmiita uhraamaan aikaa projektille (esimerkiksi keskustelemalla käyttäjien kanssa), sitä menestyksekkäämpi se yleensä on. Kehitystiimin koko itsessään on yksi tyypillinen mittari avoimen lähdekoodin projektien menestykselle; menestyvät projektit vetävät puoleensa paljon ihmisiä, joista on apua kehitykselle. Ohjelmoijien tuottavuus on myös yksi kehityksen menestyksen mittareita, sillä vaikka ihmisiä olisi paljon, vaikuttaa ohjelmoijien keskimääräinen koodirivien vuosittainen määrä kehitysnopeuteen. Projektin kehityksen vaihe on myös hyvä huomioida menestystä arvioitaessa, eli onko projekti vielä alfa tai beeta vaiheessa, vai onko siitä jo vakaa julkaisu olemassa. Lisäksi täytyy tarkistella tehtävien suoritusnopeutta, eli miten nopeasti bugit yms. hoidetaan ja vakaiden prosessien kehitystä, eli onko projektilla käytössä prosesseja ja onko niitä dokumentoitu asiallisesti. Ohjelmiston laatuun puolestaan liittyy lähdekoodin modulaarisuus, oikeellisuus, eli virheiden määrä koodirivien suhteen, hallittavuus, ts paketinhallinnan käyttö ja ylläpidettävyys, nimenomaisesti millä todennäköisyydellä koodia muutettaessa syntyy pahoja ketjureaktioita. Lisäksi pitää tarkistella ohjelmiston käyttöä, johon liittyy sen yhteisöissä herättämä mielenkiinto, siitä otettujen kopioiden määrä ja, mikäli se on mitattavissa, ohjelmiston markkinaosuus. Lopuksi pitää tarkistella ohjelmiston seurauksia, eli mitä kehittäjien motivaatiot ovat kysymyksien lukemiseen ja vastaamiseen, sekä työkalujen kehittäminen ja käytön selvittäminen. 4.3 Merkitys projektin hallinnoinnille Edellisen kappaleen kriteerien mukaan Crowstonin, Howisonin ja Allabin (2006) tekemä tutkimus osoittaa, että kaikkien yllä olevat tekijät todella vaikuttaa, ei vain projektin menestykseen, vaan myös toisiinsa, vaikka vaihtelevin määrin. Tosin tutkijoiden itsensä mukaan kohdistui liian suppeaan perusjoukkoon, mutta on kuitenkin suuntaa-antava. Toisin sanoen menestyksekäs projektin hallinta vaatii sen, että projektin jäseniä ohjataan heidän vahvuuksia hyödyntäen eri
11 menestystekijöiden suuntaan, pyrkien saavuttamaan ja sittemmin ylläpitämään positiivinen ketjureaktio. Eritoten vilkkaan julkisen toiminnan, joka houkuttelee aktiivisia jäseniä projektiin, ylläpito on avoimen lähdekoodin projekteille kriittistä.
12 5 JOHTAMINEN Projektinhallinnan yksi keskeinen osa on oikeiden työntekijöiden löytäminen sekä sen varmistaminen, että työntekijät tekevät oikeita asioita ihmisten johtaminen. Avoimeen koodiin perustuvassa ohjelmistokehityksessä asetelma voi useilta osin poiketa merkittävästi perinteisestä. Seuraavassa tarkastellaan vapaaohjelmistokehittäjiä tästä näkökulmasta. 5.1 Vapaaohjelmistohakkerit Sekä Free Software että Open Source -liikkeiden keulakuvat, Richard M. Stallman ja Eric S. Raymond, pitävät itseään ja heitä yleisesti pidetään hakkereina. Lakhanin ym. (2002) mukaan myös vapaaohjelmistokehittäjien enemmistö samaistuu hakkerikulttuuriin; osalla kehittäjistä työskentely liittyy kouluttautumiseen, mutta useilla päällimmäinen motiivi on vapaaohjelmistokehitys eräänlaisena harrastuksena tai elämäntapana. Scacchi (2006) selvittää, että joissain projekteissa on palkattuja työntekijöitä, mutta useimmat työskentelevät vapaaehtoisina eikä useimmilla projekteillakaan ole omistajayritystä tai työnjohtajia. Vapaaohjelmistoprojekteissa työskentely on itseohjautuvaa ja korkeasti verkostoitunutta. Johtaminen voi rakentua monenlaisista toimista, ja Li ym. (2006) ovat huomanneet, että vapaaohjelmistokehittäjien tuottavuuteen erityisesti vaikuttavat ulkoisen motivaation kautta johtohahmojen ennakoiva päätöksenteko ja sisäisen motivaation kautta uudistava johtaminen. Uudistavaan johtamiseen kuuluvat älylliset virikkeet, yksilöiden huomioiminen, esikuvana toimiminen sekä inspirointi. 5.2 Hakkerietiikka Hakkereiden asennoitumisen, hakkerietiikan, on havaittu sisältävän monia erityispiirteitä. Himanen (2001) erottaa siitä hakkereiden rahaetiikan, verkkoetiikan ja työetiikan: hakkerietiikassa työnteko on intohimo ja sen tarkoitus on opettavien ja kiinnostavien haasteiden tarjoaminen. Hakkerietiikkaa kutsutaan myös hakkeriestetiikaksi, muun muassa Vadén (2002). Søren Kierkegaardin filosofisen terminologian mukaisesti. Harvey (1985)
13 kertoo, että tällä ei tarkoiteta kirjaimellisesti kauneuskäsitystä vaan sitä, että hakkerius valitsee tylsästä ja mielenkiintoisesta eikä oikeasta ja väärästä. McDonald (2006) kuvaa Kierkegaardin mallia niin, että ihminen voi keskittyä esteettisiin asioihin vaikka eläisikin eettisesti. 5.3 Yrittäjyys Hakkerien toiminta ja vaikuttimet saattavat vaikuttaa olevan ristiriidassa kaupallisten tavoitteiden kanssa. Kuitenkin modernin liiketaloustieteen luonnehdinta yrittäjyydestä vastaa pitkälti hakkeriutta, esimerkiksi yrittäjämäisessä markkinoinnissa Morris ym. (2002). Tämän yhtenevyyden syvyyttä ja mahdollisia seurauksia ei kuitenkaan ole tietääksemme tutkittu. Edelleen yrittäjämäisessä markkinoinnissa nähdään yrityksen toiminnan kannalta oleelliseksi yrittäjyyden ja markkinoinnin integroiminen niiden ristiriitaisten tavoitteiden yhdistämiseksi. Voidaankin kysyä, olisiko yrittäjyyden ja avoimeen koodin perustuvan ohjelmistokehityksen projektinhallinnan yhdistäminen mahdollista. Rossi ja Bonaccorsi (2005) ovat havainneet, että avointa koodia käyttävissä yrityksissä kehitysyhteisön itseisarvo näyttäisi usein rajoittuvan mielikuvan luomiseen kehittäjien luottamuksen saavuttamiseksi. Kuitenkin tietyssä osassa yrityksistä kehitysyhteisön merkitys ja hakkerikulttuuri ovat tulleet kehittäjä-perustajilta ja säilyneet.
14 6 YHTEENVETO Tulimme tulokseen, että avoimeen lähdekoodiin perustuva kehitys asettaa monenlaisia suljetusta kehityksestä poikkeavia haasteita projektinhallinnalle. Erityisen tärkeä osa-alue avoimen kehityksen hallitsemisessa on ihmisten ja yhteisön hallinta. Tulee ymmärtää mikä motivoi ihmisiä työskentelemään tietyn asian parissa ja hyödyntää sitä projektin eteenpäin viemiseksi. Avoimella kehityksellä on myös kuitenkin selvästi monia vahvuuksia, joita tulisi tutkia enemmän. Tämä voisi myös auttaa perinteisen ohjelmistotekniikan kehittämisessä. Tutkittaessa ei voida soveltaa kaikkia hyväksi havaittuja menetelmiä, mutta toisaalta kehityksen avoimuus antaa uusia mahdollisuuksia tutkimukselle.
15 LÄHDELUETTELO Crowston K., Howiston J., Annabi H., 2006. Information Systems Success in Free and Open Source Software Development: Theory and Measures. Software Process Improvement and Practice; 11: 123-148. Cruz D., Wieland T., Ziegler A., 2006. Evaluation criteria for free/open source software products based on project analysis. Software Process Improvement and Practice; 11: 107-122. Harvey B., 1985. Computer Hacking and Ethics. ACM Select Panel on Hacking. Appendix A: What is a Hacker? Himanen P., 2001. The hacker ethic, and the spirit of the information age. New York : Random House. Lakhani K.R., Wolf B., Bates J., DiBona C, 2002. The Boston Consulting Group Hacker Survey, July 24. http://www.ostg.com/bcg/bcg-0.73/bcghackersurveyv0-73.html. Li Y., Tan C., Teo H., Mattar A.T., 2006. Motivating open source software developers: influence of transformational and transactional leaderships. Proceedings of the 2006 ACM SIGMIS CPR conference on computer personnel research. McDonald W., Søren Kierkegaard, The Stanford Encyclopedia of Philosophy (Summer 2006 Edition), Edward N. Zalta (toim.). http://plato.stanford.edu/ archives/sum2006/entries/kierkegaard/. Morris M.H., Schindehutte M., LaForge R.W., 2002. Entrepreneurial marketing: a construct for integrating emerging entrepreneurship and marketing perspectives. Journal of Marketing Theory and Practice, vol. 10 (4). Paulson J., 2004. An empirical study of open-source and closed source projects. IEEE Transactions on Software Engineering 30(4), 246-256. Rossi C., Bonaccorsi A., 2005. Why profit-oriented companies enter the OS field?: intrinsic vs. extrinsic incentives. In Proceedings of the Fifth Workshop on Open Source Software Engineering. ACM Press, New York, NY. Scacchi W., 2003. When Is Free/Open Source Software Development Faster, Better, and Cheaper than Software Engineering? Working Paper, Institute for Software Research, UC Irvine. Scacchi W., 2006. Understanding Free/Open Source Software Development Processes. Software Process Improvement and Practice; 11: 95-105. Scacchi W., 2007. Free/Open Source Software Development: Recent Research
16 Results and Methods, in M.V. Zelkowitz (ed.), Advances in Computers, 69, 243-269 (to appear). Stewart K., Gosain S., 2006. The moderating role of development stage in free/open source software project performance. Software Process Improvement and Practice; 11: 177-191. Vadén T., 2002. The Hacker Community and Ethics: An Interview with Richard M. Stallman Koodi vapaaksi Hakkerietiikan vaativuus, Tampere University Press. Sivut 62-80.