Praćenje promjena

Svako (kreativno) djelo ima svoje verzije. Ako je moguće pratiti te verzije, i još više, biti u mogućnosti vratiti na neku od prethodnih u bilo kom trenutku, pa to je nešto što bi poželio svaki kreativac. Kada smo s papira i table prešli na pisanje uz pomoć računara i ponovo se vratili na papir i/ili tablu, uvidjeli smo koliko nam nedostaju razne mogućnosti poput: udvostruči (kopiraj, dupliciraj), izreži pa zalijepi, pomjeri tekst lijevo, desno, gore dolje i mnoge druge.

Osim toga, uvidjeli smo i da rad na računaru donosi mnoge nove mogućnosti koje su gotovo nezamislive uz pomoć papira i/ili table. Jedna od njih je (interesantna za ovaj članak) mogućnost praćenja promjena. Svakako davanje raznih sugestija, komentara, ali i povezivanja više dokumenata (likovanje) su mogućnosti koje ne smijemo zaboraviti.

Mogućnosti vraćanja na prethodno (undo), te ponavljanja starog (redo), kao i udvostručavanje (copy/cut/paste) su mogućnosti jednokratne, odnosno samo dok je program pokrenut. A da bismo imali većinu tih mogućnosti uvijek, čak i nakon nekoliko godina, potrebni su nam posebni (specijalizirani) softveri za to. Da bi se uspješno mogle pratiti sve promjene uz pomoć takvih softvera za praćenje promjena (VCS – Version Control System), gotovo pa je strogi uslov korištenje običnog teksta, o čemu smo govorili u članku: Najznačajniji alat u (poznatoj) ljudskoj historiji.

Vremenska mašina

Ljudi koji nisu upoznati sa VCS-om ili još gore, ako su upoznati ali ih ne koriste, propuštaju cijeli jedan svijet i polje mnogih (gotovo neograničenih) mogućnosti. Korištenje VCS-a je kao korištenje vremenske mašine. Moguće je vratiti se u bilo koji trenutak u prošlosti, vidjeti zašto su promjene napravljene, te ko ih je napravio. Moguće je vratiti trenutni text upravo na tu željenu tačku, ma kako daleko u prošlosti ona bila i početi koristiti taj tekst.

Zajednički direktoriji

Nadamo se da ne postoje nigdje više u svijetu timovi koji razvijaju softver i da za dijeljenje kôda između članova tima koriste dijeljeni (share) direktorij, kada postoji toliko mnogo potpuno besplatnih VCS-ova.

Međutim, VCS je moguće koristiti i u mnogim drugim granama, gdje god se koristi obični tekst, kao što je Pravo primjera radi, ili pak mnogi dokumenti iz oblasti ekonomije i računovodstva.

Za sve pisce (prevodioce) svih žanrova korištenje VCS-a sigurno je da može biti od velike pomoći, kao i za nastavnike, predavače, i mnoge druge.

Kao što se vidi, primjene su u mnogim poljima – gdje god se koristi obični tekst – vidjeti iznad spomenuti članak: Najznačajniji alat u (poznatoj) ljudskoj historiji.

Praćenje promjena

Ono što je važno kod praćenja promjena jeste mogućnost saradnje sa ogromnih brojem učesnika bez sukobljavanja konačnog rješenja i izazivanja nepotrebnih konflikata. Za one koji se bave razvojem softvera i koriste VCS skupa sa cjevovodom* za distribuciju programskog koda u servere produkcije, jednostavno je implementirati razne mehanizme provjere (automation testing). Za neke druge oblasti, poput prava, ekonomije, računovodstva i drugih spomenutih i ne spomenutih takvi mehanizmi provjere i validacije nažalost još uvijek nisu napravljeni. Vjerovatno jer je upotreba VCS-a u tom svijetu oskudna – nažalost.

Ali za one koji se eventualno odluče na korištenje VCS-a, nije teško napraviti uslove (ne tako automatizovane) poput:

  • Da li tekst poštuje ljudska prava?
  • Da li tekst poštuje Statut države?
  • Da li tekst poštuje, …?

Praćenje promjena uz VCS daje jednu novu dimenziju transparentnosti na koju se valja navići. Ljudi su u prirodi egoistični, samoljubni i teško im pada kada neko kritikuje ili čak komentariše njihov rad. Stoga je prilagođavanje na upotrebu VCS-a ponekada bolno za ego i na to se treba biti spremno prilikom impmenetacije bilo kog VCS-a u bilo kojoj oblasti života i rada.

Razgranavanje

VCS-ovi podržavaju uspostavu grana ili tokova kojim mogu da se kreću/događaju promjene u tekstu.

Ako bi se gledalo kroz primjer izmjene Zakona (ili Pravilika, Poslovnika, …) tu se uglavnom radi u nekakvim manjim ili većim timovima. Oni razvijaju svoje ideje, zapisuju ih u neke svoje dokumente. Kasnije se sve to skupi na jedno mjesto (velike sale za sastanke) i do beskonačnosti raspravlja o raznim detaljima dok se ne usvoji ono pravo i ispravno, ma od kog tima (političke opcije, partije, grupacije, …) dolazilo.

Ako bi se koristio u tom slučaju VCS, to bi značilo da se iz osnove – stabla (ako se radi o izmjenama) izvlače grane za svaki tim ili čak pojedinca koji želi da radi na promišljanju i izmjenama vezano za pomenuti Zakon.

Kasnije, nakon određenih promjena šalje se zahtjev za spajanje (merge) u osnovu – stablo, iz kojeg je sve poteklo i iz kojeg se šalje u Službene novine. Taj zahtjev mogu vidjeti svi učesnici promjena (članovi repozitorija), te davati određene komentare i sugestije veoma javno i transparentno. Svi učesnici promjena ako nemaju nikakvih oprečnih stavova morali bi dati odobrenje za spajanje (jedan klik mišem).

Kod korištenja VCS-a nije moguće glasati protiv ili biti suzdržan! Ako se ima nešto protiv, to se mora jasno i nedvosmisleno artikulisati kroz komentare, tako da svaka promjena koja će ići u javnost (server, Službene novine, …), mora biti prihvaćena koncenzusom (jednoglasno).

U slučaju razvoja softvera, to većina današnjih programera zna, izmijenjeni (novo dodani) kôd se šalje putem zahtjeva za spajanje u glavnu granu (master branch). Određene kolege zadužene za provjeru kôda – code review, provjeravaju i eventualno komentarišu ili zadaju zahtjeve za dodatnim promjenama prije nego odobre spajanje. Uglavnom sve ide glatko – uglavnom.

Izazov

Da ponovimo izjavu koju veoma često koristimo:

Ako iznošenje ideje ne donosi konkretan primjer za primjenu, onda je to samo puko teoretisanje (pametovanje o.a).

Za ovu priliku dali smo sebi za izazov korištenja VCS-a u nesoftverske svrhe.

Cilj je izraditi jedan mali repozitorij na www.gitlab.com u kom će se predstaviti kako bi moglo doći do promjena nekog od Zakona, te kako bi ostali učesnici mogli da prave izmjene i zahtjeve za spajanje u stablo iz zasebnih grana.

Za tu potrebu napravljen je projekat koji se može naći na: Zakon o radu (u FBIH)

Razlika
Razlika
Primjer izmjene zakona i grafički prikaz izmijenjenog svakog simbola u dokumentu.
komentari
komentari
Ako neko ima bilo kakav komentar na tekst izmjena, to bi se moralo jasno i nedvosmisleno dodati putem mogućnosti komentarisanja
odobrenja i spajanje
odobrenja i spajanje
Na prikaznom repozitoriju nema drugih korisnika, pa stoga u listi onih koji mogu da odobre promjene (Approve) nema nikoga. Međutim, lista bi trebala da sadržava određene kolege koje moraju dati odobrenje za spajanje u stablo
historija izmjena
historija izmjena
Kratka, sažeta lista promjena u hronološkom rasporedu.
graph
graph
Grafički prikaz raznih grana i podgrana koje mogu da se pojavljuju tokom promjena na repozitoriju

Napomena

Članak je zasnovan na podpoglavlju iz knjige Pragmatični programer.


*cjevovod – Nažalost u našem jeziku ne postoji jedinstvena riječ za sve cjevne sisteme ako ih tako možemo nazvati. Najčešće korištena riječ je cjevovod, iako ne znači nužno da tim cijevima teče voda. Engleska riječ je pipeline. U ovom konkretnom slučaju misli se na “cjevni sistem” putem kojeg se distribuira tekst (ili programski kôd) s grane do servera produkcije/Službenih novina/nečeg trećeg.

0

Hits: 9