Atviro kodo programuotojų bendruomenė

Veikla

Ne visi atviro kodo projektai kuriami vienodai, tačiau galima kalbėti apie tipišką tokios bendruomenės sąrangą. Be įprastinių programuotojo įrankių, klasikinei bendruomenei reikalingos papildomos sistemos:
Versijų kontrolės sistema sujungia keleto autorių vienu metu atliktus pakeitimus, saugo ankstesnes versijas bei seka, kas ir kaip keitė programos kodą.
Elektroninio pašto konferencijų sistema leidžia bet kuriam nariui paskelbti apie savo siūlomą pakeitimą ir, prieš jį atliekant, sulaukti kitų grupės narių pritarimo. Paprastai būna bent du atskiri sąrašai. Viename jų aptariama kaip bus keičiamas kodas, kitame vyksta bendresnės diskusijos. Į pirmąjį sąrašą siunčiamos versijų kontrolės sistemos sukurtos skirtuminės bylos (patches). Vienuose projektuose pasiūlytus pakeitimus atlieka patys jų autoriai, kitose kodą tiesiogiai keičia tik dalį bendruomenės sudarantis „elitas“.
Klaidų bazė yra specializuotas interneto serveris, kuriam iš esmės kiekvienas vartotojas gali pranešti apie netinkmą programos darbą. Jei netinkamo darbo atvejis deramai aprašytas ir atkuriamas, pranešimas įgauna trikio statusą. Kas nors iš programuotojų bendruomenės paprastai gana greitai imasi aptiktą defektą taisyti. Didesni projektai paprastai turi apie keliasdešimt tvarkytinų trikių ir keletą šimtų įrašų apie jau sutvarkytas problemas.
Testų subprojekte kaupiami kuriamos sistemos testai. Aktyviai besivystantys projektai neretai turi specializuotą įrangą, kuri pati tikrina kuriamą programą ir siunčia naujai atsiradusias klaidas į specialų elektroninio pašto sąrašą. Mažesnės grupės išsiverčia su JUnit. Kadangi automatinis testų rinkinys sistemą gali patikrinti gana greitai, šie testai vykdomi dažiausiai kasdien.
Darbo žurnale (ChangeLog) kiekvienas narys aprašo savo atliktus kodo pakeitimus. Paprastai tai tiesiog didelė tekstinė byla, kurioje kasdien atsiranda keletas įrašų, o bendras ilgis neretai siekia keletą megabaitų.
Gyvas dokumentas, kuriame kaupiami prioritizuotos nepradėtos bei nebaigtos užduotys (living backlog) šiek tiek priartina grupės darbo stilių prie Scrum metodikos. Užduotys dažniausiai tvarkomos arba specializuotu serveriu, arba tiesiog panaudojant Wiki, panašiai kaip ši enciklopedija.
Pagaliau IRC pakeičia savaitines narių sueigas (neretai skirtinguose žemynuose dirbantys nariai gali taip ir likti vienas kito gyvo nepamatę).
Nagrinėjant projekto istoriją, lengva pamatyti, jog kiekvienas narys turi logistinę (užlinkstančią) aktyvumo kreivę: aktyvaus darbo tarpsnį seka daug ramesnis laikotarpis, kurio metu daugiau stebima, ar atėjęs jaunimas nesugadino „senių“ darbo. Žemiau pateikiamos narių aktyvumo kreivės GNU Classpath projekte:
Kreivės aukštis matyt atspindi maksimalų laiką, kurį konkretus žmogus gali ar nori skirti projektui. Jei žmogaus gyvenime kas nors keičiasi, stebima laiptuota kreivė, ir tik nedaugelio žmonių – nuosekliai kylanti tiesė. Taigi tokia bendruomenė panaši į studentų klubą, kur per keletą metų gali pasikeisti beveik visi nariai. Tokiomis sąlygomis tampa itin svarbu aiškiai rašyti kodą ir deramai pildyti darbo žurnalą, kad tavo darbą būtų galima nesunkiai perimti.
Šiuo metu esama interneto portalų (SourceForge, ObjectWeb), kurie atviro kodo kūrėjams pasirengę nemokamai suteikti visus ar daugumą minėtų resursų. Didelė šiuose portaluose esančių projektų dalis teturi vieną autorių (iniciatorių). Tokie projektai lėčiau vystosi, jiems gresia daugiau pavojų, tačiau siūlomos programos neretai irgi būna gana geros.

Susikūrimas

Bendruomenė paprastai stichiškai atsiranda susijungus keliems tokiems projektams. Kai kada ją inicijuoja ir kokia nors firma, skirdama tam iš pradžių jai priklausiusį projektą (jei tai nėra numestas niekam nereikalingas kodas, kurį tęsti norinčių paprastai neatsiranda).
Sykį atsiradusi, pakankamai daug narių turinti bendruomenė yra labai stabili. Neretai būna, jog pasikeitus sąlygoms dingsta pirminė, pagrindinė projekto susikūrimo priežastis. Pavyzdžiui, atviro kodo Apache Velocity susikūrė kaip atsvara uždaro kodo WebMacro. Vėliau WebMacro irgi imta siūlyti su atviro kodo licencija, tačiau kartą susikūrusi Velocity bendruomenė nebenorėjo trauktis, ir nuo tada šie du paketai rimtai konkuruoja tarpusavyje. Gnome susikūre kaip atsvara KDE, kuri iš pradžių turėjo uždaro kodo dalių (Qt peers). Vėliau KDE licencijų rinkinys buvo papildytas GPL, tačiau Gnome liko ir dabar yra ne mažiau paplitusi.
Savo pagrindiniais principais (galybė testų, programavimas kitąsyk net ne poromis o visa komanda, smulkūs išleidimai maždaug kas mėnesį ar du, nuolatinis integravimas ir nuolatinės korekcijos, kolektyvinė atsakomybę už kodą (kokia prasmė dirbti projekte, kuris nepasiseks?) bei dideliu dėmesiu kodavimo standartams atviro kodo programuotojų bendruomenės darbas priartėja prie stiliaus, apibrėžiamo kaip Ribinis programavimas.