петак, 19 априла, 2024
Ослобађање

Развој слободног софтвера

Аутор: Никола Харди

Слободан софтвер отвореног кода постоји, то је чињеница. Често се поставља питање ко и зашто развија овакав софтвер. Друго питање које се често поставља је: „Како могу да се укључим у неки пројекат који ми се допада?” Овим текстом ћемо покушати да дамо одговор на оба ова питања.

Разлози и начини за укључење у пројекат слободног софтвера

Осећај припадности

Разлога има много и углавном су личне природе. Нај важнији, а вероватно и најбоље прикривен, је осећај припадности. Људи су друштвена бића, иако програмери можда не изгледају тако. Сви пројекти су пре свега заједнице: имају свој карактер, правила понашања и историју. Неки су престижни, неки су велики, неки су невидљиви. Желимо да будемо део неких од њих.

Дељење кода

Следећи разлог који је врло чест је дељење кода. Људи воле да се похвале својим делом. Програми јесу ауторска дела, имају различиту намену, али и различиту вредност. Програмери воле да се похвале, а углавном то раде ћутке. Један од предлога за оснивање успешне заједнице је да се започне рад самостално, објави јавно што пре, и настави са радом. Тек онда ће се други полако прикључивати и настајаће заједница која ће се даље бринути о животу тог пројекта.

Локализација

Програми који су преведени или потпуно локализовани за наше подручје могу да буду у озбиљној предности у односу на друге, можда чак и напредније програме. Постоји велики интерес за рад на слободном софтверу управо због овог разлога.

Подршка

Заједнице формиране око слободног софтвера су заједнице у којима најчешће владају меритократија и знање. Сви ти чланови су у неком тренутку добили подршку од других чланова заједнице и често осећају потребу да ту услугу узврате. Помагати другима значи напредовање у хиjерархији заједнице и стицање једног облика угледа и поштовања.

Тестирање

Развој било каквог софтвера подразумева много активности поред самог писања кода. Ту је и писање документације, писање предлога за нове могућности, тестирање итд. Корисници су ти који могу да дају корисну информацију о томе како би пројекат требало да напредује. Поред тога, корисници могу да пруже информације о томе који делови програма се не понашају очекивано. И ово је начин на који неко доприноси развоју пројекта. Следи више конкретних детаља како се укључити у развој једног пројекта.

Укључивање у пројекат: корак по корак

Комуникација

Први корак би требало да буде упознавање са заједницом. Веб-сајт једног пројекта или заједнице може да ода погрешну слику о њој. Као пример можемо слободно да наведемо почетне странице ЛУГоНС или ЛиБРЕ! пројеката, које нису претерано занимљиве, иако су обе заједнице врло активне. Кључ је у томе што заједнице могу да буду најактивније на неким другим каналима за комуникацију. Рецимо, слободно се може рећи да је ЛУГоНС заједница најактивнија на свом IRC каналу, а то није толико приметно некоме ко посети сајт ове заједнице. Слично је и са многим другим заједницама. Tреба завирити и на IRC канале, форуме, дописне листе (енг. mailing list) итд. Ови канали су право место за упознавање заједнице, учење, тражење и пружање подршке и информисање. Помагати другима да реше проблем у вези са једним пројектом уједно значи и пружити подршку том пројекту.

Документација

Проблеми се често понављају и постаје заморно да се знање преноси „усменим” путем у форми разговора. Због тога постоји документација у разним облицима која захтева како писање, тако и одржавање. Рад на документацији може значити и уређивање хијерархије у документацији, уклањање застарелих информација и усмеравање корисника на читање документације. Документација у OSS (енг. open source software) пројектима је често доступна у форми викија (енг. wики). У последњих неколико година, популарна је и форма електронских књига (epub, PDF, web…). Још један облик документације који треба поменути је сајт https://readthedocs.org који приказује документацију записану у коду у једном пријатнијем облику. Сви ови видови документације захтевају, писање и одржавање, те представљају сјајан начин за почетак рада на неком пројекту.

Локализација

Локализација углавном подразумева превод програма или документације. Део текста који се користи у програмима и може да се преведе смештен је у посебним фајловима. Често је реч о тзв. .po фајловима и GNU gettext стандарду. Тада се превод програма врши тако што се преузму .po фајлови за одговарајући језик, учитају се у уређивач за .po датотеке. Тада може бити додат нов садржај или измењен постојећи. Други, модернији начин који се такође ослања на gettext су веб-сервиси за уређивање .po фајлова. Корисници могу помоћу интернетског прегледача да приступе таквом сервису, додају предлоге превода и оцењују друге преводе. Овакав начин знатно олакшава спајање свих измена у једну целину, контролу превода и комуникацију међу корисницима који се баве преводом. Неки од таквих сајтова су https://transifex.org и https://launchpad.net.

Пријављивање проблема

Они који су спремни да још више „запрљају руке” могу да помогну тестирањем најновијих верзија свог омиљеног програма. Многи пројекти имају такозвене најтли билдове (енг. nightly build). У таквој верзији програма се налазе најсвежије измене. Идеја је да се ноћу све измене у коду сакупе и дистрибуирају корисницима који желе да се баве тестирањем. Од корисника се очекује да примећене проблеме пријаве на сајту за праћење проблема (енг. issue/bug tracker). Проблеми се не морају односити на најтли билд већ може бити у питању било која верзија. Проблеми могу да буду најразличитијег карактера – од погрешног превода, претеране употребе ресурса, до неочекиваног понашања програма. Различити пројекти очекују пријаве о грешкама на различитим местима. Неки пројекти за то користе своје приватне „багзиле” (енг. bugzilla) или користе услуге других сајтова, као што су лончпед (енг. launchpad), гитхаб (енг. github) или сорс форџ (енг. source forge). Најбоље је завирити у документацију или се консултовати са осталима о томе где се налази тај систем. Важно је упамтити да прво треба да се провери да ли је проблем већ пријављен, а потом детаљно описати карактер проблема, верзију програма и система на ком се проблем догодио, и начин на који се може репродуковати такав проблем.

Одржавање пакета

У претходном броју било је речи о начинима како се програми могу дистрибуирати и објашњени су појмови репозиторијума, пакета и њихов значај. Слободан софтвер се дистрибуира и пакетима различитог типа. Чест је случај да много дистрибуција користи исти тип пакета. Међутим, дистрибуције имају своје репозиторијуме. Људи који се баве одржавањем неке дистрибуције се, између осталог, брину и о томе да се софтвер лепо уклопи, да не постоје конфликти и да све међузависности буду испоштоване. Ти људи се у жаргону зову пакетари, а њихов посао је прављење (паковање) и одржавање пакета. Пакетари су често организовани у тимове који се брину о одређеном скупу пакета сличне намене. Паковање софтвера захтева велику одговорност и искуство. Неко би могао да каже да је чак једноставније направити измену у коду него правилно спаковати тај код. Због тога пакети поред имена аутора програма садрже и име особе која је направила пакет. Прављењем пакета се подржавају и дистрибуције и програми и ово је сјајан начин да се помогне заједницама, а у питању је и велик изазов.

Писање кода

Када је реч о развоју слободног софтвера, углавном се подразумева програмирање. Рад на коду захтева проналажење ажурног репозиторијума који садржи код, преузимање кода одговарајућим VCS-ом (енг. versioning control system – например, гит). Затим код може да буде измењен, а измена послата на ревизију. Измене се традиционално размењују закрпама или печевима (енг. patch), а данас се често среће и размена измена у облику пул риквеста (енг. pull request – захтев за прихватање измена). При писању измена у коду треба водити рачуна о договорима и стандардима за уређивање кода. Често постоје записане смернице за писање измена (енг. contributing guide).

Оснивање пројеката и заједница

Сасвим други ниво подршке неком пројекту би био оснивање локалне заједнице. Локалне заједнице се углавном баве пружањем подршке. Међутим, могу се бавити и локализацијом, и другим стварима. Код оснивања заједница око већ постојећих пројеката треба имати на уму да заједнице често надживе пројекат; квалитет заједнице је од кључне важности за квалитет осталих делова пројекта. Предуслов за долазак нових људи у заједницу је инфраструктура погодна за рад. То подразумева инфраструктуру која је стандардна, лако доступна и редовно одржавана. Надамо се да смо вас охрабрили и да ћете помоћи неком пројекту чије производе често користите. Уколико овај текст није био довољан, слободно нас контактирајте и помоћи ћемо вам да се на прави начин укључите у жељени пројекат.