tallinna Ülikool matemaatika …...samas peatükis tuuakse välja vaba tarkvara peamised litsentsid...
TRANSCRIPT
TALLINNA ÜLIKOOL
Matemaatika-loodusteaduskond
Informaatika osakond
AVATUD LÄHTEKOODIGA TARKVARA ARENDUS
Seminaritöö
Koostaja: Marek Mägi
õpinguraamatu nr. 031294
õpperühm IF-31
Juhendaja: lektor Inga Petuhhov
Tallinn 2005
2/24
Sisukord
Sisukord................................................................................................................2
Sissejuhatus .........................................................................................................3
1 Ülevaade kasutuslitsentside tüüpidest...........................................................5
1.1 Arvutitarkvara liigid .................................................................................5
1.2 Vaba tarkvara litsentsid ..........................................................................8
1.3 Avatud lähtekoodiga tarkvara definitsioon ..............................................9
2 OSS'i ajalugu ...............................................................................................11
3 OSS'i arendusprotsess ................................................................................13
3.1 Protsess................................................................................................13
3.2 Elutsükkel .............................................................................................14
3.3 Arendamine Eestis ...............................................................................17
4 OSS protsessis osalejad..............................................................................19
5 OSS projektis osalemise erinevad motiivid..................................................20
6 Kokkuvõte....................................................................................................22
7 Lühendite ja kasutatavate võõrkeelsete terminite loetelu ............................23
8 Kasutatud kirjandus .....................................................................................24
3/24
Sissejuhatus
Oleme jõudnud aega, mil enamus pangatehingutest tehakse interneti teel,
suhtlemine erinevate ametiasutustega on muutunud märgatavalt lihtsamaks,
kuna suur osa asjaajamisest on viidud arvutisüsteemidesse ja E-hääletus on
saanud reaalsuseks. Sellise infoühiskonna kiire arenguga kaasneb ka palju
kulusid infotehnoloogiavahendite peale. Ajaga sammu pidamiseks on vaja
pidevalt uusi investeeringuid seda nii riistvara kui tarkvara osas. Töötatakse välja
uusi meetodeid ja tehnikaid, et rahuldada üha kasvavat nõudmist optimaalse
kvaliteedi ja hinna suhtega tarkvara järele. Ometi mitte kõiki tarkvaraprojekte ei
ole algatatud rahalise kasu eesmärgil. Koos kõigi teiste tarkvaratoodete
juurdekasvuga kasvab pidevalt ka vaba tarkvara hulk iga aastaga. Oleme
jõudnud aega, mil ka väikeses Eestis on täiesti reaalne, et keskmine
kontoritöötaja saab oma tööga hakkama kasutades oma arvutis ainult vaba
tarkvara ning seejuures on soovi korral veel nii töökeskond/operatsioonisüsteem
kui ka kõik rakendusprogrammid emakeelsed.
Käesoleva seminaritöö eesmärgiks on uurida ja püüda välja selgitada, kuidas
toimib tarkvaraarendus, mida kasutatakse avatud lähtekoodiga tarkvara (OSS)
projektide puhul vabatahtlike arendajate poolt. Samuti püüab selgitada, millised
on sellistes projektides osalejad, mis on erinevate osapoolte roll ja kuidas
juhitakse nendevahelist koostööd.
Töö esimeses peatükis püütakse anda ülevaade kõigist kasutuslitsentside
tüüpidest. Samas peatükis tuuakse välja vaba tarkvara peamised litsentsid ja
nende põhitingimused. Sama peatüki viimases punktis on välja toodud kahe
erineva vaba tarkvara propageeriva organisatsiooni (OSI ja FSF) poolt
defineeritud mõisted „vaba tarkvara” ja „avatud lähtekoodiga tarkvara”.
Teises peatükis kajastatakse olulisemaid sündmusi, mis on mõjutanud OSS’i
arengut tema algusaastatel. Kajastamist leiavad olulised nimed, organisatsioonid
kui ka mitmed aastaarvud, mis ühel või teisel põhjusel läinud ajalukku.
4/24
Kolmas punkt koosneb kolmest alapunktist. Esimeses kirjeldatakse OSS’i
arendusprotsessi üldiselt, teises tema elutsüklit ning kolmandas alapunktis
räägitakse Eestis toimunud vaba tarkvara arendustest.
Neljas peatükk keskendub OSS protsessis osalejatele, tuues samuti välja nende
võimalikud erinevad rollid.
Ka viiendas punktis räägitakse kaudselt tarkvaraarenduses kaasalööjatest.
Sedapuhku antakse ülevaade võimalikest põhjustest ja motiividest
arendusprotsessis kaasalöömiseks.
Töö kuuendas põhipunktis ehk kokkuvõttes võetakse kokku töös käsitletud
teema ja tehakse järeldused sissejuhatuses töö eesmärgiks püstitatud teemade
kohta.
Seitsmes põhipunkt on töös kasutatud lühendite ja terminite loetelu koos
seletustega ja kaheksandast leiab kasutatud kirjanduse loetelu.
5/24
1 Ülevaade kasutuslitsentside tüüpidest
1.1 Arvutitarkvara liigid
Sõltuvalt kasutuslitsentside tüübist ja kasutatavast litsentsilepingute sõlmimise
tehnikast jaotab BSA (Business Software Alliance) arvutitarkvara järgmiselt [4]:
� ärivara (commercialware)
� jaosvara (shareware)
� proovivara (trialware)
� vabavara (freeware)
� vaba tarkvara (free software)
� avalik tarkvara (public domain software)
Ärivara (commercialware)
Ärivara on peamine arvutitarkvara liik, mida levitatakse tavaliselt
infotehnoloogiafirmade, arvutisalongide ja arvutikaupluste kaudu. Enamik suurte
tarkvaratootjate tarkvarapakettidest on just nimelt ärivara. Ärivara kasutamine on
lubatud alles pärast litsentsitasu maksmist.
Vaatamata sellele, et tootjate lõikes võivad litsentsilepingu tingimused erineda,
jäävad üldpõhimõtted samaks ja on üldjuhul järgmised:
� ärivara on kaitstud autoriõigusega;
� arvutiprogrammi õiguspärasel kasutajal on õigus teha programmist
arhiivikoopia, mida ta võib kasutada üksnes juhul, kui originaal-
tarkvarapakett on muutunud kasutamiskõlbmatuks või on hävinenud;
� muudatuste tegemine programmis ei ole lubatud;
� arvutiprogrammi dekompileerimine (näiteks pöördprojekteerimine) ilma
programmi õiguste valdaja nõusolekuta ei ole lubatud;
� arvutiprogrammi alusel uue programmi arendamine (nn tuletatud
programm) ilma programmi õiguste valdaja nõusolekuta ei ole lubatud.
6/24
Jaosvara (shareware)
Jaosvara on ärivara eriliik, mida võib kindlaks määratud perioodi jooksul tasuta
kasutada (reeglina 14-90 päeva). Selle ajavahemiku lõppedes tuleb programmi
kasutajal kas kasutamine lõpetada või soetada kasutusõigus. Erinevalt ärivarast
võib jaosvara levitada igal moel va kommertseesmärkidel. Jaosvara erinevus
ärivarast seisneb ka selles, et tegemist on tarkvaraga, mille võimalused ja
funktsioonid on reeglina piiratud või lakkavad mingi tähtaja saabumisel
toimimast. Ka jaosvara suhtes kehtivad samad tingimused, mis ärivara suhteski,
arvestades eelpool toodud erinevusi.
Seega jaosvara üldreeglina ei erine oma kvaliteedilt ärivarast, vaid lihtsalt selle
programmi kasutamisvõimalused on kitsamad, kandes eneses rangelt toote
tutvustamise eesmärki.
Interneti üha laienev levik on järsult tõstnud jaosvara meetodi populaarsust
tarkvara tootjate hulgas: iga soovija võib programmipaketi endale tootjafirma
serverist kopeerida, paigaldada selle oma arvutisse ning juhul, kui paketi
omadused ja hind rahuldavad, osta litsents. Seega on tegemist tarkvaraga, mille
selge eelis ärivara ees seisneb selles, et see võimaldab tarkvarakasutajatel
tasuta proovida erinevaid tooteid ja selgitada toodete vastavust omapoolsetele
nõudmistele.
Proovivara (trialware)
Proovivara on üks jaosvara eriliikidest, mis erineb viimasest üldjuhul selle
poolest, et sellel puudub reeglina kolmandatele isikutele edasiandmise õigus.
Sarnaselt jaosvaraga on ka proovivaral kindel ajavahemik, mille jooksul võib
seda tasuta kasutada.
Vabavara (freeware)
Vabavara on mõeldud üldsusele tasuta kasutamiseks. Selle tarkvaraliigi abil
püüavad tarkvara tootjad ennast teiste tarkvaratootjate kõrval esile tõsta.
7/24
Vabavara kohta sätestatud tingimused on otse vastupidised ärivara kohta
sätestatule ning sisaldavad üldjuhul järgmisi põhimõtteid:
� vabavara on kaitstud autoriõigusega;
� programmist võib teha koopiaid ja neid ka levitada, va
kommertseesmärkidel;
� vabavara alusel uue programmi arendamine (nn tuletatud programm) on
lubatud tingimusel, et uus programm oleks samuti loodud vabavaraks.
Vaba tarkvara (free software)
Vaba tarkvara puhul on tarkvara kasutajale antud kõige rohkem õigusi võrreldes
eelpool toodud arvutitarkavara liikidega. Vaba tarkvara kasutajal on võimalik
üldjuhul omada järgmisi õigusi:
� õigus käivitada programmi suvalisel eesmärgil;
� õigus uurida, kuidas programm töötab, ja kohandada programmi vastavalt
oma vajadustele;
� õigus programmi koopiat vabalt levitada;
� õigus programmi muuta või parandada ning tulemust levitada.
Oluline on mõista, et vaba tarkvara puhul tähendab vabadus just nelja
ülalnimetatud aspekti ja mitte tingimata seda, et tarkvara kasutusõigust on
võimalik omandada ilma selle eest maksmata. Vaba tarkvara puhul on
programmi lähtetekstid alati kättesaadavad.
Avalik tarkvara (public domain software)
Avalik tarkvara on tarkvara, mille puhul programmi autor on selgesõnaliselt
loobunud kõikidest varalistest õigustest, mis tulenevad programmi loomisest.
Vastavalt Eesti Vabariigi autoriõiguse seaduse (edaspidi AutÕS) § 7-le tekib
autoriõigus teosele (sh ka arvutiprogrammile) teose loomisega, seetõttu on
äärmiselt oluline, et kõik seda liiki tarkvarad oleks täpselt määratletud avalikuks
tarkvaraks. Viimane tuleneb sellest, et autoriõiguse tekkimiseks ei nõuta mingite
formaalsuste täitmist (AutÕS § 7 lg 3).
8/24
Avaliku tarkvara suhtes kehtivad järgmised üldpõhimõtted:
� autori varalistest õigustest programmi suhtes on loobutud;
� programmist võib teha arhiivikoopiaid ning samuti ka koopiaid levitamise
eesmärgil ilma igasuguste piiranguteta;
� muudatuste tegemine programmis on lubatud;
� arvutiprogrammi dekompileerimine (näiteks pöördprojekteerimine) on
lubatud;
� avaliku tarkvara alusel uue programmi arendamine (nn tuletatud
programm) on lubatud ilma tingimusteta.
Nagu eelpool toodust võib järeldada, on tegemist tarkvaraga, mis erineb
kõikidest teistest tarkvara liikidest oma kasutamisvabaduse poolest, mis
omakorda on tingitud sellest, et autor on loobunud oma varalistest õigustest
vastava programmi osas [4].
1.2 Vaba tarkvara litsentsid
Erinevaid vaba tarkvara litsentse on tänaseks päevaks juba päris palju. Kõiki
neid selles peatükis kindlasti käsitleda ei jõua, aga kolm põhilist vaba tarkvara
litsentsi koos lühikirjeldustega tasub siiski eraldi välja tuua. Need oleks
järgmised [9]:
� GPL (The GNU General Public License) - Litsents, mis sätestab kasutaja
neli põhiõigust (kasutada, kopeerida, muuta, edasi anda) ja nõuab kõigi
seda litsentsi kasutavate tarkvarapakettide puhul nende õiguste laienemist
ka tuletistele - GPL-programmist saab tuletada vaid teise sama litsentsiga
programmi.
� LGPL (The GNU Lesser Public License) - "väiksem" (lesser) GPL (algselt
tähendas esimene "L" aga library't ehk teeki) - erinevalt GPL'st lubab
siduda tarkvara mittevabade moodulitega (peamiselt kasutatigi teekide
ehk tarkvara erinevaid funktsioone realiseerivate abiprogrammikogumite
puhul).
9/24
� BSD litsents (The Berkeley Software Distribution License)- Berkeley Unixi
litsents (sageli täpsustatakse "uuendatud BSD"). Sarnaneb GPL'ga, kuid
ei keela tuletatud toodete omandivormi muutmist.
Lisaks neile kõige levinumatele on olemas veel rida teisi litsentse, mis leiavad
töös kajastamist lihtsalt nimelise loeteluna. Need oleks järgmised: The MIT
License, The Artistic License, The Mozilla Public License v. 1.0 and 1.1 (MPL 1.0
and MPL 1.1), The Qt Public License (QPL), The IBM Public License, The
MITRE Collaborative Virtual Workspace License (CVW License), The Ricoh
Source Code Public License, The Python License, The zlib/libpng License, The
Apache Software License, The Vovida Software License v. 1.0, The Sun Internet
Standards Source License (SISSL), The Intel Open Source License, The Jabber
Open Source License, The Nokia Open Source License, The Sleepycat
License [1].
1.3 Avatud lähtekoodiga tarkvara definitsioon
OSI poolt defineeritud avatud lähtekoodiga tarkvara ei tähenda pelgalt ligipääsu
lähtekoodile. Lisaks peab OSS vastama ka järgmisele kümnele põhipunktile:
1. Vabalt levitatav
Litsentsi kohaselt ei piira ükski osapool tarkvara, mis on arendatud vabast
tarkvarast või selle osadest, levitamist. Litsents ei näe ette autoritasu ega
honorari. Programmi koopiat peab olema võimalik vabalt ära anda või müüa.
2. Avatud lähetekood
Programmi lähtekood peab olema kättesaadav ning programmi kompileeritud
kuju peab olema sellest tuletatav. Kui programm ei ole otse lähtekoodist
tuletatav, peavad selleks mõeldud vahendid ja meetodid vabalt ja tasuta
kättesaadavad olema. Lähtekoodil peab olema eelistatud kuju, mis võimaldab
programmeerijatel programmi muuta. Lähtekoodi ei tohi teadlikult segaseks
(raskesti arusaadavaks) muuta. Programmi vahekujud (ei ole masinkood ega ka
täielikult kompileeritud) ei ole lubatud.
10/24
3. Tuletatud tarkvara
Litsents peab võimaldama luua tarkvarast modifikatsioone ja tuletatud tarkvara
ning samuti lubama neid levitada samadel tingimustel nagu originaaltarkvara.
4. Algse lähtekoodi terviklikkus
Litsents lubab lähtekoodi muudetud kuju levikut piirata ainult juhul, kui lähtekoodi
levitamine on lubatud koos parandustega (patch files) muutmiseesmärgiks
loomise ajal. Litsents peab selgesõnaliselt lubama tarkvara, mis on loodud
muudetud lähtekoodist, levitamise. Litsents võib nõuda tuletatud programmidelt
originaaltarkvarast erinevat nime või versiooni numbrit.
5. Isikute või rühmade diskrimineerimise keeld
Litsents ei tohi diskrimineerida ühtegi isikut ega gruppi (kõigil peab olema võrdne
võimalus projektis osalemiseks ja tarkvara kasutamiseks). Litsents peab kehtima
kõigile ja igaühele.
6. Tegevusvaldkondade diskrimineerimise keeld
Litsents ei tohi piirata kedagi kasutamast programmi erinevate spetsiifiliste
valdkondade tarvis. Näiteks ei ole lubatud piirata programmi kasutada äris või
kasutada seda geeniuuringuteks. Programmi ärilist kasutust ei tohi keelata.
7. Litsentsi levitamine
Õigused, mis on omistatud programmile, peavad kehtima kõigile, kellele
programm on edasi levitatud, ilma, et nad vajaksid lisalitsentse programmi
osadele.
8. Litsents ei tohi olla tootespetsiifiline
Õigused, mis kaasnevad programmiga, ei tohi sõltuda suuremast
programmikogumist (distributsioonist), mille osa on litsentseeritav programm.
9. Litsents ei tohi piirata muud tarkvara
Litsents ei saa piirata teise tarkvara kasutust, mis on välja antud koos
litsentseeritud tarkvaraga. Näiteks ei saa litsents nõuda, et kõik teised
programmid, mida levitatakse samal andmekandjal, peavad olema avatud
lähtekoodiga tarkvarad.
11/24
10. Litsents peab olema tehnoloogiliselt neutraalne
Ükski litsentsi säte ei tohi seada individuaalseid tehnoloogilisi nõudeid või stiile
kasutajaliidesele. Keelatud on nõuda salvestusmeediumist sõltuvate litsentsiga
nõustumise kinnitamise meetodite kasutamist [10].
Siinkohal on paslik ära märkida ka see, kuidas FSF määratleb vaba tarkvara.
Nimelt tunnustab FSF vaba tarkvarana tarkvara, mille kasutajaile on tagatud neli
põhivabadust:
� Vabadus programmi mistahes eesmärgil kasutada (vabadus 0).
� Vabadus uurida, kuidas programm töötab, ja seda oma vajadustele
vastavaks kohandada (vabadus 1). Juurdepääs lähtetekstile on selle
vabaduse teostamise eeltingimuseks.
� Vabadus programmi koopiaid levitada, et oma naabrit aidata (vabadus 2).
� Vabadus programmi parendada ning oma täiendusi avalikkusele
kättesaadavaks teha, et kogu ühiskond sellest kasu saaks (vabadus 3).
Juurdepääs lähtetekstile on selle vabaduse teostamise eeltingimuseks.
2 OSS'i ajalugu
Üheks olulisimaks sündmuseks vaba tarkvara arengu ja leviku ajaloos võib
erinevate allikate põhjal pidada USA ettevõtte AT&T (American Telephone and
Telegraph) programmeerijate poolt väljatöötatud porditava, mitmetegumilise ja
mitmekasutajaga operatsioonisüsteemi Unix loomist. Kuna USA
konkurentsiameti otsuse põhjal ei tohtinud AT&T Unixit kommertsalusel turustada
ega toetada, võimaldas ta ülikoolidel seda õppe- ja arenduseesmärkidel
kasutada. Arvestades nii määratud kasutuseesmärke, ärilise toe puudumist kui
tolleaegse arvutustehnika madalat standardiseeritust levitas AT&T oma tarkvara
koos lähtetekstidega. Ülikoolidel oli õigus süsteemi kohandada, täiendada ja
edasi arendada. Kuna akadeemilistes ringkondades oli teadustöö tulemuste
publitseerimine ja teiste avaldatud tööde edasiarendamine normiks, hakkasid
"kontrollimatult" levima ka Unixi täiendused. Paraku küll edasised aastad tõid
12/24
kaasa hulgaliselt kohtuvaidlusi erinevate Unix süsteemi arendajate poolt
kasutusõiguste osas, siis kindlasti tuleks ära märkida veel üks olulisem aasta
avatud lähtekoodiga tarkvara ajaloos. Nimelt 1991 aastal otsustas tollane
Helsingi Ülikooli tudeng Linus Torvalds hobi korras luua sõltumatu
operatsioonisüsteemi, mis ei sisalda ridagi võõraid koodiridu ja seega ei sõltu
ühegi teise toote litsentsitingimustest. 26. augustil 1991 saatis Torvalds Useneti
uudistegruppi comp.os.minix ajaloolise postituse, kus ootas kõikvõimalikku
tagasisidet operatsioonisüsteemi Minix kohta, mida tema süsteem mõnevõrra
meenutas [11].
Septembris 1991 avaldas Linus Torvalds Linuxi kerneli versiooni 0.01, mis
sisaldas 10 239 koodirida. 14. märtsil 1994 ilmunud Linux 1.0.0 sisaldas juba 176
250 koodirida. Tänaseks värskeim Linuxi kernel, versioon 2.6.13.3, ilmus 3.
oktoobril 2005 ning sisaldas ligi 6 miljonit rida lähteteksti. IT-turbe ekspert David
A. Wheeler on COCOMO metoodikale tuginedes väitnud, et selle taasloomiseks
Ameerika Ühendriikides konventsionaalsel meetodil - suletud eratarkvarana
oleks vaja investeerida rohkem kui 600 miljonit dollarit [11].
OSS tarkvara arendamise huvi on ka viimasel ajal suurenenud märkimisväärselt.
Kindlasti on oluline roll selles mitmetel erinevatel tarkvaraprojektidel. Kõigil
siinkohal pikemalt peatuda ei jõua, kuid nimetada tasuks veel võib-olla Apache
serverit, Perl programmeerimiskeelt, SendMail meilitarkvara jne.
Olulise sündmusena ajaloo poole pealt tasub ilmselt ka mainimist aasta 1998.
Sel aastal Palo Altos peetud strateegianõupidamisel leidsid Raymond, Bruce
Perens ja teised vaba tarkvara huvilised, et äriringkondadele vastuvõetav termin
seni kasutusel olnud "vaba tarkvara " asemel vaja muutmist. Nad leidsid, et võiks
kasutusele võtta termini "avatud lähtetekstiga tarkvara" (open source software).
Samal aastal Raymond ja Perens asutasid mittetulundusühingu Open Source
Initiative (OSI), mis on tänaseni FSFi kõrval teine oluline vaba tarkvara
propageerija.
13/24
3 OSS'i arendusprotsess
3.1 Protsess
OSS projekti võib alustada mitmel viisil: leida uus, võtta üle eelmistelt omanikelt
või võtta üle mõni käimasolev hääbuv projekt [3]. Sageli on just eeldatavad
kasutajad need, kes defineerivad toote olemuse ja kirjutavad koodi. Protsess on
pidev nagu ka tarkvara arendus on lõputu.
Tuginedes mitmele allikale [1], [3], võib väita, et OSS’i arendusprotsess sarnaneb
mõningal määral teiste agiilmetoodikatega nii ideedes kui praktikas, kuid sellel on
kindlasti ka omad kindlad eripärad. Nimelt OSS'i arendust peetakse teistest
agiilmeetoodikatest erinevaks filosoofilises plaanis, majanduslikus plaanis kui ka
meeskonna struktuuri poolest. Arendusprotsessi sarnasuseks võib aga pidada
samuti varajaste sagedaste tulemite publitseerimine ning seal puuduvad mitmed
traditsioonilised mehhanismid ja koordineerimised tarkvara arendamise
planeerimisel, süsteemi disainis, aja planeerimisel ja teistes määratud
protsessides.
Tüüpiliselt OSS projekt sisaldab endas järgmisi faase [3]:
1. probleemi püstitus
2. vabatahtlike leidmine
3. lahenduse identifitseerimine
4. koodiarendus ja testimine
5. koodimuutuste ülevaade
6. koodi realiseerimine ja dokumenteerimine
7. tarkvara haldus
OSS projekt ei ole kombinatsioon hästi dokumenteeritud ja kirjeldatud
tarkvaraarendusest, mis üldiselt iseloomustab head arendusmeetodit. Seda on
parem kirjeldada kui paljudes erinevates kohtades asuvate inimeste koostööl
põhinevat viisi toota tarkvara väikeste ja sagedaste täienduste kaupa [3]. Selline
globaalne koostöö kolleegide vahel tugevnes tunduvalt interneti laienemisega 90.
aastatel, kuna arendajad ja samuti väikesed arendusgrupid on geograafiliselt
14/24
hajutatud ja edukaks tööks on vajalik avatud ja hästitoimivad
kommunikatsioonikanalid.
Mokus et al. on OSS'i arendusmeetodeid kirjeldanud järgmiste peamiste
seisukohtadega/omadustega [3]:
� süsteemid luuakse suure hulga vabatahtlikega
� tööülesanded pole määratud; inimesed valivad ise ülesande, mis neid huvitab
� puudub täpne süsteemi tasemete kava
� puudub projekti plaan ja ajakava
� programme testitakse sageli
Vastavalt Feller’i ja Fitzgerald’i mõtetele tuleb OSS'i arendamise
organiseerimisel tegeleda samaaegselt arenduse ja veakõrvaldustega [3]. See
koosneb üksikute arendajate tsentraliseerimata koostööst ja tasuta panusest.
OSS'i arendusprotsess ei sisalda ühtegi eeldefineeritud ametlikku
dokumentatsiooni, reeglit ega tava. Siiski tuginetakse protsessis varasematele
kogemustele. Kuigi kogu OSS'i arendusprotsess näib üsna vaba ja
ebareeglipärane, peab tal siiski olema kindel struktuur. Vastasel juhul poleks ta
kunagi saavutanud nii tähelepanuväärseid tulemusi.
OSS’i arendusprotsessi iseennast saab täiustada mitmete spetsiifiliste tarkvara
arendusmeetoditega, kuid need meetodid peavad lähtuma OSS’i spetsiifilisusest.
Seega võib protsess omada kiiresti muutuvaid aspekte, kuid teisest küljest võib
arendamisprotsess ise aeglustuda mitmetel erinevatel põhjustel nagu huvitatud
ja oskustega arendajate puudumine ning erinevate tulevikunägemuste
konfliktid [3].
3.2 Elutsükkel
See punkt sisaldab ülevaadet OSS'i arendusprotsessi elutsüklist tuginedes
suuresti Feller, J. ja Fitzgerald, B. kirjapandule raamatus "Understanding Open
Source Software Development". Traditsioonilise tarkvaraarenduse elutsükkel
(Software Development life cycle - SDLC) neljast põhilisest osast.
15/24
Need on järgmised:
� planeerimine
� analüüs
� disain
� kasutussevõtmine
Samas on OSS' arendusmudel üpris erinev. Esiteks, planeerimine, analüüs ja
disain tehakse suures osas ära projekti alustaja poolt ega ole OSS'i tavalise
arendustsükli osad, mis aga ei tee neid olemuselt vähetähtsateks. OSS tarkvara
puhul on tarkvara tõhusalt mooduliteks jagamine ja disain vägagi kriitilise
tähtsusega. Esiteks, moodulid peavad olema nõrgalt seotud, et oleks võimalikud
jagatud arendamine. Vähem tähtis, kuid samas efektiivse mudeli huvides peavad
moodulid olema ka kompaktsed ja täitma ühte konkreetselt neile pandud
ülesannet. Samas tehakse disaini puudutavad otsused tihti enne suurema hulga
arendajate lisandumist ning põhinevad töökindlatel arendusmudelitel. See laseb
arendajatel osaleda ilma, et nad peaksid tegema läbi mahuka analüüsi ja disaini
etapi.
Uurides erinevaid projekte on mitmed uurijad jõudnud üsna sarnase
arendusmudelini. Näiteks Mockus, kes oma väidetes tugines Apache projekti
jälgimisele, ja Jorgensen, kes on uuringud lähemal FreeBSD projekti on jõudnud
enamvähem samasugusete mudeliteni [1].
Seega võib väita, et üldjuhul on OSS'i arenduse elutsüklis esindatud järgmised
etapid:
� Koodikirjutamine
� Loodu ülevaatamine
� Koodibaasi lisamiseelne testimine
� Arendusversiooni avalikustamine
� Paralleelne veaparandus
� Valmisversiooni avalikustamine
Koodikirjutamine
See on kõigile avatud protsess. Samas, mitmed potentsiaalsed OSS'i arendajad
ei julge antud etapis osaleda, sest kardetakse kogenenumate ja respekteeritud
16/24
OSS arendajate kriitikat. Samas, koodi pidev ülevaatamine kõige kogenenumate
ja oskajamate poolt tingib ka koodi kvaliteedi kasvu.
Loodu ülevaatamine
Nagu juba mainitud aus ja otsekohene tagasiside koodi kvaliteedi kohta on üks
OSS'i arenduse peamisi tugevusi. Samas võib algajatel seda vägagi raske saada
olla. Samuti on märgatud, et mida lihtsam kood on, seda rohkem see tagasisidet
saab, kuigi keeruline kood saab tagasisidest palju rohkem otsest kasu. Ka disaini
osas on tagasiside saamine tihti vägagi raske.
Koodibaasi lisamisseelne testimine
Testimise suunamine või osaline suunamine kasutajatele (näiteks Mozilla,
GNOME) on üks OSS'i tugevusi. Oluliseks peetakse, et paigaldamine läheks
võimalikult libedalt ilma üleliigse häireta ja sellepärast liigselt keerulised ja
röövellikud moodulid tuleb juba varakult välja praakida. On tähendatud, et
testimine on tihti vägagi isiklik protsess. Tavaliselt ei ole mingeid nõudeid, et
testijuhtumid peavad olema planeeritud või kirja pandud. Samas, vigasest
moodulist põhjustatud negatiivse tagasiside võimalikkuse tõttu võetakse testimist
siiski väga tõsiselt.
Arendusversiooni avalikustamine
Kui koodikirjutaja tõdeb, et tema kirjutatud moodul on valmis, võidakse see lisada
arendusversiooni. See on peamine tasu arendajatele - näha enda kirjutatud
koodi kiiresti tootesse lisatuna.
Paralleelne veaparandus
Nagu ka testimises ei ole veaparanduses ühtset plaani. Põhiline edu sõltub just
potentsiaalsete veaparandajate suures numbris. Kui leitakse vead, võidakse
need parandada ja moodul uuele ringile lasta või luuakse probleemiraportid, kus
need vead teatavaks tehakse.
Valmisversiooni avalikustamine
Kõik arendused saavad viimaks valmisversiooni osaks, pannes need stabiilse
valmisversiooni harusse. See on erinevates projektides lahendatud erinevalt.
Näiteks FreeBSD aredusprotsessis stabiilne valmisversioon ja ajakohased
17/24
arendusharud ning koodijupid, mis loetakse sobivaks, lisatakse lõpuks ka
lõppversiooni. Veaparanduse korral läheb see ka seotud
arenduskoodiharudesse. Linux'i puhul on valmisversioon ja arendusversioonid
erinevates kaustades ning identifitseerimises kasutatakse väljalaske numbreid -
valmisversioon on paaris number ja arendusversioon on paaritu number.
3.3 Arendamine Eestis
Nagu kogu maailmas, nii ka Eestis on viimasel ajal märgata teatavat huvi kasvu
OSS'i vastu. On äärmiselt positiivne näha, et ka riik on pannud oma õla alla
mitmete OSS projektide arendamisele ja erinevate toodete lokaliseerimisele ehk
eestindamisele. Nii on meile kõigile tänaseks tasuta kättesaadavad
kontoritarkvara OpenOffice.org eestikeelne versioon, mitmed emakeelsed
operatsioonisüsteemid ja palju muudki.
Et täpsemalt aimu saada sellisest arendusprotsessist kirjeldatakse järgnevalt
näitena üht konkreetset Eestis läbiviidud projekti. Selleks sobiks hästi Tiigrihüppe
Sihtasutuse poolt rahastatud ja kolme Eesti ettevõtte (Nordtech OÜ, Cybernetica
AS ja MTÜ Offline.ee) poolt algatatud projekt vabatarkvaralise tarkvaraplatvormi
arendamiseks [13].
Projekti põhieesmärkideks olid:
� Vaba tarkvara eesti keele toe täiustamine - eestikeelne vaba tarkvara ja
vabad eesti keele töövahendid koolidel
� Tarkvara ja oskusteabe viimine kasutajateni - 500 tarkvara
paigalduskomplekti ja käsiraamatut
� Tugi- ja seotud teenuste võrgustiku loomine - tasuta tugitelefon ja
suhtlusfoorumid
� Jätkusuutlikkus - koostöövormid, mis toetavad vaba tarkvara lahenduste
kasutamist ka pärast projekti nominaalse tähtaja lõppu
18/24
� Loodud lahenduste taaskasutamine - valmivad lahendused jõuavad
programmide autorite kaudu kõigi kasutajateni ning saavad vastavalt vaba
tarkvara arendusmudelile baasiks järgmistele arendustele
Projekt jaotati kolme etappi järgmiselt:
I etapp
� Tehnoloogilise platvormi valik - lähtutakse järgmistest argumentidest:
olemasolev laiapõhjaline kasutajate ja arendajate kogukond, projekti
käigus tehtud arendustööde kiirem jõudmine paljude kasutajateni,
stabiilsem ja võimalusterohkem keskkond tänu juba olemasolevale
kogemustepagasile, jätkusuutlikkus, riistvaratoetus, seadistusvahendid,
tarkvarauuenduste kättesaadavus, levitamisõigus
� Valitud tarkvara lokaliseerimine - lokaliseeritakse ühtlustatult: paigaldus- ja
seadistusprogrammid, töökeskkond, kontoritarkvara
� Paigalduskomplekti koostamine - lokaliseeritud paigaldus- ja
seadistusprogrammid ning töökeskkond ja kontoritarkvara
� Paigalduskomplekti testimine - pööratakse tähelepanu järgnevale: dual-
boot süsteemid, haldusvahendite piisavus, ühilduvus teiste lahendustega,
töökindlus ja turvalisus
II etapp
� Eesti keelevahendite loomine - vabatarkvaralise eesti spelleri ja poolitaja
loomine
� Õpitarkvara valimine ja testimine - õpitarkvara valimine ja testimine toimub
koostöös projekti teostajate ja haridusasutuste esindajatega
III etapp
� Käsiraamatu koostamine ja kirjastamine
� Paigalduskomplekti tiražeerimine
� Tugiteenuste infrastruktuuri loomine
� Infopäevade korraldamine
19/24
Projekti esimese etapiga alustati 2005. aasta jaanuaris ja projekti ajakava
kohaselt peaks tänaseks olema lõpetatud juba ka IIl etapiga. Projekti peamisteks
tulemiteks on üks tehnoloogiline platvorm täielikult eestindatud paigaldus- ja
seadistustarkvaraga, töökeskkonnaga ning kontoritarkvaraga OpenOffice.org 2.0.
Samuti vabatarkvaraline speller MySpell ja Aspell mootoritele (võimaldavad
õigekirjakontrolli sisuliselt kõigis Linuxi rakendustes), käsiraamatud, 500
paigalduskomplekti erinevatele haridusasutustele, tasuta elektrooniline tugi
tarkvara paigaldamisel ja kasutamisel (Offline.ee foorum).
4 OSS protsessis osalejad
Koos üldise arenguga OSS'i maailmas on kasvanud ka huvi vanade tuntud
firmade poolt OSS'i vastu. Teiste seas võib ära märkida IBM, Apple, Oracle,
Corel, Netscape, Intel, Ericsson, mis on võtnud koordinaatori ja mediaatori rolli
ning käituvad projekti haldajatena eriti suurte OSS projektide juures. Samuti on
viimase aja tendents see, et on tekkinud niiöelda andmetalletusleheküljed nagu
näiteks freshmeat.net ja sourceforge.net. Need leheküljed varustavad OSS'i
arendajaid tasuta teenustega nagu projektimajutus, versiooni kontroll, vigade ja
küsimuste jälgimine, projektihaldus, tagavarakoopiad ja arhiivid ning ka
kommunikatsioon [3]. Kuna näost näkku koosolekuid OSS projektis üldjuhul ei
kasutata, siis on kommunikatsiooni korraldamine ülioluline protsessi toimimiseks.
Samuti ei saa alahinnata teistegi tööriistade rolli, kuna arendatav tarkvara peab
olema organiseeritud ja töökorras pidevalt päeval ja öösel ning arendajad on ise
väga erinevate oskuste ja taustaga.
Tavaliselt kasutatakse OSS'i arenduse struktuuris järgmisi vabatahtlikke:
1. projektijuhid, kes vastutavad üldiselt kogu projekti eest ja kes tavaliselt
on kirjutanud esialgse koodi
2. vabatahtlikud arendajad, kes loovad ja edastavad koodi projekti jaoks.
Nemad võib edaspidi liigitada nii:
20/24
a. vanemad liikmed (seniors) või alusarendaja (core developers), kellel
on laiem autoriteetsus
b. väline arendaja (peripheral developers), kes viib sisse koodimuutusi ja
edastavad need
c. juhuslik kaastöötaja (occasional contributors)
d. hooldaja (maintainers) ja tunnustatud arendaja (credited developers)
3. teised isikud, kes on suunatud tarkvara kasutama, teostama teste,
tuvastama vigu ja edastama tarkvara probleemide aruandeid
4. postitaja (posters), kes osalevad sageli uudistegruppides ja
diskusioonidel, aga ei kirjuta koodi.
Sharma et al. (2002) põhjal on OSS'i arendusprojektid tavaliselt jaotatud
peaarhitektide või disainerite poolt väiksemateks ja kergemini juhitavateks
ülesanneteks, millega tegelevad konkreetsed isikud või grupid, kes valivad ise
endale sobiva ülesande. Seega üldprojekti ratsionaalne mooduliteks jagamine on
hädavajalik arendusprotsessi edukuseks. Samuti peavad need moodulid huvi ja
atraktiivsust pakkuma arendajatele [3].
5 OSS projektis osalemise erinevad motiivid
Lähtuvalt Joseph Feller'i ja Brian Fitzgerald'i uuringust nende väljaantud
raamatus "Understanding Open Source Software Development" võib OSS
protsessis osalemise eri motiivid jagada kolme gruppi. Need on tehnoloogilised,
majanduslikud ja sotsiaal-poliitilised motiivid. Sellest lähtudes võib neid kirjeldada
järgmise kokkuvõtliku tabeliga:
21/24
Mikrotase (üksikisik)
Makrotase (oraganistatsioon/ühiskond)
Tehnoloogilised motiivid
� Rakendada personaalset tehnoloogilist vajadust
� Tõhus ülevaade kogu protsessist protsessi enda seest
� Võimalus töötada tehnoloogia viimase sõna kallal
� Parandada toote kvaliteeti
� Jagada rutiinseid ja ajamahukaid arenduse osi (testimine, dokumenteerimine) kasutajatega
� Kasutada vabasid ressursse arendustegevuses
� Soodustada uuendusi
� Kindlustada rakenduste läbipaistvus
Majanduslikud motivatsioonid
� Saada kogemuslikke eeliseid
� Parandada koodikirjutamise oskusi
� Saada „ratsa rikkaks“
� Kogemus tasuta - kaotada pole midagi
� Kasutada maksimaalselt ära investorite vaimustust avatud lähtekoodiga tarkvarast
� Aidata kaasa tarkvara arenduse paradigma muutumist mugavustootest kasutajate vajadusest lähtuva teenuseni
� Tagada teadmiste vabadus ja tugevdada brändid
� Teenida mitteotsest kasu lisateenuste ja seotud toodete kaudu
� Teha tarkvara kätte-saadavaks arengumaades
� Väiksemad kulud - odavam platvorm kui alternatiivsed
Sotsiaal-poliitilised motivatsioonid
� Isikliku ego rahuldamise soov
� Sisemine vajadus programmeerida
� Kogukonda kuulumise tunne
� Omakasupüüdmatus
� Sotsiaalsed liikumised vajavad „vaenlast“ - nt Microsoft
� Ideoloogia - tarkvara peab olema vaba
� Uute töömudelite arendamine ning üldlevinuks tegemine
22/24
6 Kokkuvõte
Antud teemat oma seminaritööks valides olin veendunud, et OSS
arendusmeetod on nagu iga teinegi tarkvaraarendusmeetod konkreetsetest
etappidest ja meetoditest koosnev dokumenteeritud tarkvaraarendusmudel.
Ometi materjali antud teema kohta otsides ja sellega tutvudes, pidin aga tõdema,
et mingisuguseid õpikulaadseid materjale selle kohta ei leidu ja OSS'i arendus on
paljuski kindlate ettekirjutusteta. Tihti lähenetakse iga projekti puhul konkreetse
projekti vajadustele vastavalt ja mingist kindlast aredusreeglistikust ei lähtuta.
Selline lähenemine tuleneb eelkõige ilmselt ajaolust, et tavaliselt osaleb ühe OSS
projekti kallal suur hulk inimesi üle maailma, kel kõigil erinevad nägemused,
oskused ja taust. Siiski leitakse mitmetes allikates, kus seniajani teostatud
erinevaid OSS projekte uuritud, et OSS'i arendusprotsess sarnaneb teiste agiil-
ehk välemetoodikatele nii ideedes kui praktikas (näiteks sagedaste tulemite välja-
andmine), kuid erineb nendest filosoofilises plaanis, majanduslikus plaanis kui ka
meeskonna struktuuri poolest.
23/24
7 Lühendite ja kasutatavate võõrkeelsete terminite loetelu
agiilmetoodika - tarkvaraarendusmeetodite grupp, mida tuntakse ka väledate
meetodite nime all
BSA - (Business Software Alliance) organisatsioon, mis kaitseb autorite huve
distributsioon - levitamine, jaotamine, erinevad tarkvaratooted/projektid -
näiteks operatsioonisüsteemil Linux on üle saja eri distributsiooni (RedHad, Suse
jne)
dual-boot süsteem - võimaldab ühte arvutisse paigaldada mitu
operatsioonisüsteemi ja neid vastavalt vajadusele eraldi käivitada
E-hääletus - oma hääle andmine interneti teel
FreeBSD - üks paljudest Linux'i distributsioonidest
FSF - (Free Software Foundation) 1985. aasta oktoobris asutatud vaba tarkvara
Sihtasutus
GNU - 80. aastate algul Richard Stallman koos rühma huvilistega USA-s
alustanud Unixi vaba teisendi väljatöötamist, mida nad nimetasid GNU-ks
SDLC - (software development life cycle) tarkvara arenduse elutsükkel
OSI - (Open Source Initiative) vaba tarkvara propageeriv mittetulundusühing
OSS - (Open Source Software) avatud lähtekoodiga tarkvara
patch files - tarkvara vigade parandusteks mõeldud failid
vaba tarkvara - töös on kasutatud seda sõnapaari samas tähenduses, mis
avatud lähtekoodiga tarkvara, avatud lähtetekstiga tarkvara ja ka lühendit OSS
24/24
8 Kasutatud kirjandus
1. Feller, J., Fitzgerald, B. Understanding Open Source Software
Development. Great Britain, 2002.
2. Golden, B. Succeeding with Open Source. Addison Wesley Professional,
2004.
3. Abrahamsson, P., Salo, O., Ronkainen, J., Warsta, J. Agile software
development methots. Review and analysis. VTT Electronic, 2002.
4. Arvutitarkvara liigid [WWW]
http://www.bsa.ee/index.php3?menu_id=103&lang=ee (16.10.2005)
5. Leis, P. Agiilmetoodikad. A&A, 04/2001.
6. Raymond, Eric S., The Cathedral and the Bazaar, Thyrsus Enterprises
[http://www.tuxedo.org/~esr/]
7. No Software Patents! [WWW] http://www.nosoftwarepatents.com/en/m/
intro/index.html (26.10.2005)
8. Vilgota, A., Bakalaureusetöö „Mudelipõhine tarkvaraarendus” Tartu
Ülikool, 2004.
9. Kikas, K., Pingviiniaabits, OÜ Vali Press, 2004.
10. Open Source Initiative OSI [WWW] http://www.opensource.org/docs/
definition.php (28.10.2005)
11. VabaTarkvara - LIBA [WWW] http://isiklik.info/LIBA/VabaTarkvara#head-
58be3a0b7b0944f13404992f5fbe110e6942706e (28.10.2005)
12. The GNU Operating System [WWW] http://www.gnu.org/ (16.10.2005)
13. Taotlus Tiigrihüppe Sihtasutusele vabatarkvaralise tarkvaraplatvormi
arendamiseks [WWW] http://foorum.offline.ee/files/3/473/tsaprojekt.pdf
(4.11.2005)