subota, 20 aprila, 2024
Oslobađanje

Razvoj slobodnog softvera

Autor: Nikola Hardi

Slobodan softver otvorenog koda postoji, to je činjenica. Često se postavlja pitanje ko i zašto razvija ovakav softver. Drugo pitanje koje se često postavlja je: „Kako mogu da se uključim u neki projekat koji mi se dopada?” Ovim tekstom ćemo pokušati da damo odgovor na oba ova pitanja.

Razlozi i načini za uključenje u projekat slobodnog softvera

Osećaj pripadnosti

Razloga ima mnogo i uglavnom su lične prirode. Naj važniji, a verovatno i najbolje prikriven, je osećaj pripadnosti. Ljudi su društvena bića, iako programeri možda ne izgledaju tako. Svi projekti su pre svega zajednice: imaju svoj karakter, pravila ponašanja i istoriju. Neki su prestižni, neki su veliki, neki su nevidljivi. Želimo da budemo deo nekih od njih.

Deljenje koda

Sledeći razlog koji je vrlo čest je deljenje koda. Ljudi vole da se pohvale svojim delom. Programi jesu autorska dela, imaju različitu namenu, ali i različitu vrednost. Programeri vole da se pohvale, a uglavnom to rade ćutke. Jedan od predloga za osnivanje uspešne zajednice je da se započne rad samostalno, objavi javno što pre, i nastavi sa radom. Tek onda će se drugi polako priključivati i nastajaće zajednica koja će se dalje brinuti o životu tog projekta.

Lokalizacija

Programi koji su prevedeni ili potpuno lokalizovani za naše područje mogu da budu u ozbiljnoj prednosti u odnosu na druge, možda čak i naprednije programe. Postoji veliki interes za rad na slobodnom softveru upravo zbog ovog razloga.

Podrška

Zajednice formirane oko slobodnog softvera su zajednice u kojima najčešće vladaju meritokratija i znanje. Svi ti članovi su u nekom trenutku dobili podršku od drugih članova zajednice i često osećaju potrebu da tu uslugu uzvrate. Pomagati drugima znači napredovanje u hijerarhiji zajednice i sticanje jednog oblika ugleda i poštovanja.

Testiranje

Razvoj bilo kakvog softvera podrazumeva mnogo aktivnosti pored samog pisanja koda. Tu je i pisanje dokumentacije, pisanje predloga za nove mogućnosti, testiranje itd. Korisnici su ti koji mogu da daju korisnu informaciju o tome kako bi projekat trebalo da napreduje. Pored toga, korisnici mogu da pruže informacije o tome koji delovi programa se ne ponašaju očekivano. I ovo je način na koji neko doprinosi razvoju projekta. Sledi više konkretnih detalja kako se uključiti u razvoj jednog projekta.

Uključivanje u projekat: korak po korak

Komunikacija

Prvi korak bi trebalo da bude upoznavanje sa zajednicom. Veb-sajt jednog projekta ili zajednice može da oda pogrešnu sliku o njoj. Kao primer možemo slobodno da navedemo početne stranice LUGoNS ili LiBRE! projekata, koje nisu preterano zanimljive, iako su obe zajednice vrlo aktivne. Ključ je u tome što zajednice mogu da budu najaktivnije na nekim drugim kanalima za komunikaciju. Recimo, slobodno se može reći da je LUGoNS zajednica najaktivnija na svom IRC kanalu, a to nije toliko primetno nekome ko poseti sajt ove zajednice. Slično je i sa mnogim drugim zajednicama. Treba zaviriti i na IRC kanale, forume, dopisne liste (eng. mailing list) itd. Ovi kanali su pravo mesto za upoznavanje zajednice, učenje, traženje i pružanje podrške i informisanje. Pomagati drugima da reše problem u vezi sa jednim projektom ujedno znači i pružiti podršku tom projektu.

Dokumentacija

Problemi se često ponavljaju i postaje zamorno da se znanje prenosi „usmenim” putem u formi razgovora. Zbog toga postoji dokumentacija u raznim oblicima koja zahteva kako pisanje, tako i održavanje. Rad na dokumentaciji može značiti i uređivanje hijerarhije u dokumentaciji, uklanjanje zastarelih informacija i usmeravanje korisnika na čitanje dokumentacije. Dokumentacija u OSS (eng. open source software) projektima je često dostupna u formi vikija (eng. wiki). U poslednjih nekoliko godina, popularna je i forma elektronskih knjiga (epub, PDF, web…). Još jedan oblik dokumentacije koji treba pomenuti je sajt https://readthedocs.org koji prikazuje dokumentaciju zapisanu u kodu u jednom prijatnijem obliku. Svi ovi vidovi dokumentacije zahtevaju, pisanje i održavanje, te predstavljaju sjajan način za početak rada na nekom projektu.

Lokalizacija

Lokalizacija uglavnom podrazumeva prevod programa ili dokumentacije. Deo teksta koji se koristi u programima i može da se prevede smešten je u posebnim fajlovima. Često je reč o tzv. .po fajlovima i GNU gettext standardu. Tada se prevod programa vrši tako što se preuzmu .po fajlovi za odgovarajući jezik, učitaju se u uređivač za .po datoteke. Tada može biti dodat nov sadržaj ili izmenjen postojeći. Drugi, moderniji način koji se takođe oslanja na gettext su veb-servisi za uređivanje .po fajlova. Korisnici mogu pomoću internetskog pregledača da pristupe takvom servisu, dodaju predloge prevoda i ocenjuju druge prevode. Ovakav način znatno olakšava spajanje svih izmena u jednu celinu, kontrolu prevoda i komunikaciju među korisnicima koji se bave prevodom. Neki od takvih sajtova su https://transifex.org i https://launchpad.net.

Prijavljivanje problema

Oni koji su spremni da još više „zaprljaju ruke” mogu da pomognu testiranjem najnovijih verzija svog omiljenog programa. Mnogi projekti imaju takozvene najtli bildove (eng. nightly build). U takvoj verziji programa se nalaze najsvežije izmene. Ideja je da se noću sve izmene u kodu sakupe i distribuiraju korisnicima koji žele da se bave testiranjem. Od korisnika se očekuje da primećene probleme prijave na sajtu za praćenje problema (eng. issue/bug tracker). Problemi se ne moraju odnositi na najtli bild već može biti u pitanju bilo koja verzija. Problemi mogu da budu najrazličitijeg karaktera – od pogrešnog prevoda, preterane upotrebe resursa, do neočekivanog ponašanja programa. Različiti projekti očekuju prijave o greškama na različitim mestima. Neki projekti za to koriste svoje privatne „bagzile” (eng. bugzilla) ili koriste usluge drugih sajtova, kao što su lončped (eng. launchpad), githab (eng. github) ili sors fordž (eng. source forge). Najbolje je zaviriti u dokumentaciju ili se konsultovati sa ostalima o tome gde se nalazi taj sistem. Važno je upamtiti da prvo treba da se proveri da li je problem već prijavljen, a potom detaljno opisati karakter problema, verziju programa i sistema na kom se problem dogodio, i način na koji se može reprodukovati takav problem.

Održavanje paketa

U prethodnom broju bilo je reči o načinima kako se programi mogu distribuirati i objašnjeni su pojmovi repozitorijuma, paketa i njihov značaj. Slobodan softver se distribuira i paketima različitog tipa. Čest je slučaj da mnogo distribucija koristi isti tip paketa. Međutim, distribucije imaju svoje repozitorijume. Ljudi koji se bave održavanjem neke distribucije se, između ostalog, brinu i o tome da se softver lepo uklopi, da ne postoje konflikti i da sve međuzavisnosti budu ispoštovane. Ti ljudi se u žargonu zovu paketari, a njihov posao je pravljenje (pakovanje) i održavanje paketa. Paketari su često organizovani u timove koji se brinu o određenom skupu paketa slične namene. Pakovanje softvera zahteva veliku odgovornost i iskustvo. Neko bi mogao da kaže da je čak jednostavnije napraviti izmenu u kodu nego pravilno spakovati taj kod. Zbog toga paketi pored imena autora programa sadrže i ime osobe koja je napravila paket. Pravljenjem paketa se podržavaju i distribucije i programi i ovo je sjajan način da se pomogne zajednicama, a u pitanju je i velik izazov.

Pisanje koda

Kada je reč o razvoju slobodnog softvera, uglavnom se podrazumeva programiranje. Rad na kodu zahteva pronalaženje ažurnog repozitorijuma koji sadrži kod, preuzimanje koda odgovarajućim VCS-om (eng. versioning control system – naprimer, git). Zatim kod može da bude izmenjen, a izmena poslata na reviziju. Izmene se tradicionalno razmenjuju zakrpama ili pečevima (eng. patch), a danas se često sreće i razmena izmena u obliku pul rikvesta (eng. pull request – zahtev za prihvatanje izmena). Pri pisanju izmena u kodu treba voditi računa o dogovorima i standardima za uređivanje koda. Često postoje zapisane smernice za pisanje izmena (eng. contributing guide).

Osnivanje projekata i zajednica

Sasvim drugi nivo podrške nekom projektu bi bio osnivanje lokalne zajednice. Lokalne zajednice se uglavnom bave pružanjem podrške. Međutim, mogu se baviti i lokalizacijom, i drugim stvarima. Kod osnivanja zajednica oko već postojećih projekata treba imati na umu da zajednice često nadžive projekat; kvalitet zajednice je od ključne važnosti za kvalitet ostalih delova projekta. Preduslov za dolazak novih ljudi u zajednicu je infrastruktura pogodna za rad. To podrazumeva infrastrukturu koja je standardna, lako dostupna i redovno održavana. Nadamo se da smo vas ohrabrili i da ćete pomoći nekom projektu čije proizvode često koristite. Ukoliko ovaj tekst nije bio dovoljan, slobodno nas kontaktirajte i pomoći ćemo vam da se na pravi način uključite u željeni projekat.