Saturday, May 2, 2009

Raymond ja vabavara arenduse edu kriteeriumid

Eric S. Raymond, kirjutab oma teoses "The Cathedral and the Bazaar" sellest, kuidas loodi Linuxi tarkvara vaba tarkvara "turu" arendusmudeliga. Ta püüab aru saada kuidas on see võimalik , et selliste mittetraditsiooniliste tarkvara arendusmeetoditega saab luua niivõrd eduka toote ja kas esineb mingeid seaduspärasusi , millega saab ka kõiki teisi vaba tarkvara projekte sama edukalt arendada. See artikkel on omalaadne selles suhtes, et selles püütakse kirjeldada ühte teedrajavat edukat projekti - Linuxi projekti, kuid sellest Raymondi kirjeldusest endast sai samuti teedrajav teos. See on üke peateoseid selles osas, kuidas peaks arendama vaba tarkvara - turu - projekte üldisemalt , millised on peamised edu kriteeriumid, miks on selline arendusmudel edukas.

Alguses ta toob välja põhjused, miks üldse sellise asjaga tegelema hakatakse nagu vaba tarkvara. Et mis sunnib inimest ilma rahata selle asjaga tegelema. Algseks tõukeks on tavaliselt mingi isiklik vajadus või “kiiks” mingi valdkonna tarkvara vastu. Raymond soovis luua vaba tarkvara projekti , mis baseeruks POP3 meilide saatmise tehnoloogial ja mida ta vajaks ning mis kõrvaldaks juba olemas olnud toodete puudused.
Ta ei pea seejuures oluliseks seda, et kogu kood oleks arendaja poolt isiklikult ise tehtud vaid peab suureks oskuseks ja märksa efektiivsemaks lahenduseks seda kui arendaja suudab kiiresti võtta kasutusele ja muuta ning kohandada kellegi teise poolt kirjutatud tarkvara. See olevat ka tõeliselt andeka programmeerija tunnus.
Raymond sai oma projekti arenduseks algse tarkvara ja selle kasutajate baasi Carl Harriselt, kel puudus edasine huvi asjaga tegelemise vastu, kuid kes soovis selle edasi anda aktiivsele asjast huvitatud entusiastile. Et toode tuli Raymondile koos kasutajatega, siis andis see kohe ka võimaluse testida neid metoodikaid, mida on kasutanud oma tarkvara arenduses kasutajaskonnaga suhtlemisel Linux.
Iga vabavara projekti jaoks on oluline, et algne kood ja arhitektuur oleks heal tasemel ja et esialgsed arendajad paneks asjale tugeva aluse. See peaks andma motivatsiooni ka teistele arendajatele ning algsete arendajate puhul on veel oluline võime eristada uute pakutavate lahenduste sobivust olemasoleva koodiga. Linusel olevat need omadused olemas olnud.
Üheks peamiseks tarkvara arenduse eripäraks , mis Linusel oli kasutuses oli uute koodi versioonide ja arenduste kiire ja varane turule toomine. Selline põhimõte oli olnud ka Unixi arendamisel, kuid Linux viis selle uuele tasemele ning vahe oli intensiivsuses millega uusi versioone avalikkuse ette toodi. Ei olnud harvad juhtumid kus uus tarkvara versioon tehti avalikuks mitu korda päevas koos vastavate kommentaaridega.

Selline põhimõte omakorda oli tulemuslik seetõttu, et kasutajaskond sai kiirelt näha koodi selle juurutamise algfaasis ning suur kogukond andis selle eelise, et keegi tavaliselt ikka vead üles leidis. Sellest on saanud omalaadne Linuxi arendamise põhimõte või kreedo, et iga viga on leitav koodist kui sellest on piisav arv silmi üle käinud.

Sellise arenduse eripäraks on veel ka see, et traditsioonilise tarkvara arenduse puhul on arendus jagatud kahte gruppi – programmeerijad ja teises grupis on testijad. Avatud koodi puhul neid piirjooni ei ole ja igaüks näeb koodi ja saab teha ettepanekuid koodi parandamiseks. See kiire tagasiside meetod viib ka parema kommunikatsioonini ning parema arusaamiseni vigadest arendajatel ja testijatel kuna osatakse vaadata koodile peale nii arendaja kui testija vaatepunktist.

Raymond räägib küll ka tarkvara arenduse põhilistest meetoditest ja võrdlusest vanamoodsa katedraali meetodi tarkvara arendusega, kuid tema artiklis on suur osakaal pandud kogukonnaga suhtlemisele. Ta räägib sellest kuidas ta ergutas oma kasutajaid osalema pidevalt ning kuidas ta kiiresti uusi versioone avalikkuse ette tõi ning üritas igakülgselt kasutajaid motiveerida ning tunnustada. Ta toob ka välja huvitava paradoksi - mida rohkem sa kogukonna liidrina tunnustad hea panuse andnud liikme tööd, seda rohkem arvatakse et tegelikult oled sa suurema osa sellest tööst ikka ise ära teinud ).

Kuigi vaba tarkvara arendatakse mitteformaalses anarhiat meenutavas õhkkonnas, siis Raymond peab oluliseks ikkagi lõppkasutajaga arvestamist. Lõppkasutaja ja tema ootused ning vajadused ei jää ka vaba tarkvara puhul unustusse. Ühe näitena sellisest arenduses tõi ta välja piirangu seadmine meilide läbi laskvusele, mida olevat soovinud peale panna Euroopas asuvad community liikmed. Nii ka tehti.
Toote arenduse juures peab ta oluliseks , et toode oleks piisavalt lihtne ja arusaadav, tehniliselt liiga keerukaks ajamine võib kogu projekti tema arvates kinni jooksutada.

Raymond tuleb oma kirjeldustes ikka uuesti ja uuesti kogukonnaga suhtlemise teemadele ning eestvedamisele. Üheks oluliseks teguriks projektide elluviimisel on liidrite programmeerimise oskused, kuid mitte vähem oluliseks inimeste käima tõmbamisel ei pea ta “sarmikas olemist”. Väga raske on vaba tarkvara projekti alustada ja esimesi samme teha turu meetodi arendusel, peab olema keegi kompetente ja ülesannet püstitav algne persoon , kes kogu projekti “ära seadistab.” Edu printsiibiks on see, et briljantse kompetentsiga tegelane sõnastab särava visooni selliselt et vabatahtlikud võtaksid initsiatiivi ja hoolitseks juba ülejäänu eest.

Osa tarkvara tööstusega seotud inimesi on ka arvanud, et vaba tarkvara - turu meetodi - edu aluseks on olnud see, et nendes projektides osaleb või suudab osaleda kõigest 5% kõige andekamatest programmeerijatest ehk siis seda tarkvara luuakse oma ala tippude poolt. Samuti on teada , et on olulised tootlikkuse vahed tavalise programmeerija ja tipp-programmeerija vahel.

Teiseks selliste projektide edu aluseks , mida rõhutab Raymond , on entusiasm – joy is the asset. Kuna kogu vaba tarkvara arendus töötab vabatahtlikkuse alusel , siis võiks seda ka loogiliseks pidada. Õigupoolest on see üks loogilisemaid asju kogu selles vaba tarkvara arendamise kirjelduses võrreldes katedraali tarkvara arenduse meetodiga. Väga paljud põhimõtted , arendusmudelid tunduvad käivad risti vastupidi nendele põhimõtetele mis traditsiooniliselt on olnud kehtivad katedraali mudelis.

Entusiasmist vaba tarkvara arendus tekkis ja see on jäänud ka selle arendusmeetodi põhiliseks edu kriteeriumiks minu arvates. Nagu ütleb ka Raymond lõpetuseks, siis mängimine on majanduslikult kõige efektiivsem töötamise viis. Tuleb hoolitseda et asi oleks meeleolukas ja lõbus , mida inimesed sellelaadsetes projektides teevad ja samavõrd oluline selle turu juures minu arvates on see, et keegi aeg ajalt näitaks tõelisi “jõu ja ilu numbreid” , mis inimesi tsirkusesse uuesti ja uuesti tagasi tooks. Peamine selles artiklis minu meelest on see, et rahvas oleks pidevalt saalis, siis on asja tegemisel mõtet ja kui rahval on lõbus kokku tulla siis mõttetalgute vormis saab üldjuhul mistahes probleemid ka sobiva ülesande püsituse korral ära lahendada. "Kuni su küla veel elab, elad sina ka."

No comments:

Post a Comment