7,634 pregleda

Knjiga o Gitu na hrvatskom jeziku!

8

Svaki programer u jednom trenu naiđe na problem praćenja razvoja i održavanja kôda svog programa. Rješenje prije ili kasnije nađe u sustavima za kontrolu verzija. Sustavi za kontrolu verzija, osim što rješavaju već navedene probleme, omogućuju i jednostavnu kolaboraciju više ljudi na istom kôdu uz pomoć kojeg se lako može vidjeti tko je napisao koju liniju kôda u kojem trenutku.

Osim za potrebe razvoja kôda, sustavi za kontrolu verzija mogu se koristiti i u druge svrhe. Npr. web aplikacija MediaWiki, koja pogoni Wikipediju i sestrinske stranice, funkcionira upravo na principu praćenja revizija čime se mogu uklanjati loše promjene na tekstu čime se lako održava kvaliteta članaka unatoč prirodi Wikipedije da je svatko može uređivati.

Administratori pak koriste sustave kontrole verzija kako bi držali pod nadzorom konfiguracijski direktorij /etc prilikom stalnih ažuriranja sustava.

Sustava kontrole verzije ima mnogo, a najčešće se dijele na one centralizirane i one distributivne. Primjer centraliziranih sustava je Subversion (SVN), dok je primjer distributivnih – Git najpoznatiji po tome što ga je napisao Linus za potrebe razvoja Linuxa (kernela). Git je u svijetu slobodnog softvera sveprisutan upravo zbog svoje distributivne naravi i velike brzine.

Knjiga "Uvod u Git"Razlog ovog kratkog uvoda u sustave kontrole verzija predstavljanje je knjige o Gitu “Uvod u Git” domaćeg autora Tome Krajine.

Na domaćoj sceni kronično nedostaje literature vezane uz slobodne razvojne platforme pa je knjiga o Gitu na hrvatskom jeziku sigurno dobrodošla vijest. Osim što je napisana na hrvatskom jeziku, knjiga je izdana pod Creative Commons (BY-SA-NC) licencom te je u cijelosti pisana uz pomoć Gita na javnom repozitoriju GitHuba čime je svatko može doraditi i predložiti autoru da uvrsti izmjene u originalnu verziju.

Više o cijelom pothvatu i detaljima odlučili smo se pitati direktno autora knjige Tomu Krajinu.

 

Tomo KrajinaKoja ti je bila motivacija bila da napišeš knjigu za Git? I zašto si se baš odlučio za ovaj model pisanja kroz javni sustav verzioniranja?

Prije par godina krenuo sam učiti git i počeo ga koristiti. Radio sam prije toga s CVS-om, subversionom i TFS-om. Svaki od njih ima svoje prednosti i nedostatke, međutim, razlike između njih
nisu fundamentalne. Svi oni preferiraju linerani razvoj softvera što za sobom povlači određene probleme. Git mi je bio potpuno odrukčiji i omogućio mi je točno onakav razvoj kakvog sam oduvijek želio.

Tako sam ga naučio, napravio par predavanja u Puli u sklopu developerskih radionica koje jedan kolega organizira (Pula CodingDojo). Nagovorio sam nekoliko ljudi da ga počnu koristiti, a onda su počela pljuštati pitanja o gitu (na koja sam nužno morao odgovarati jer sam ja te ljude nagovorio da ga koriste). Tako sam krenuo sam pisati mali “šalabahter” o gitu. Mislio sam da će to biti 20-tak stranica s grafovima i objašnjenjima osnovnih pojmova. No, malo sam se raspisao i nastalo je to što je nastalo.

Koliko ti je vremena trebalo da napišeš ovu knjigu i koji bi savjet dao nekome tko bi se upustio u sličan projekt?

To se barem lako može vidjeti iz repozitorija projekta  Prvi commit je bio ‘Fri Feb 24 21:15:12 2012 +0100′. Dakle, to je nekih 5 mjeseci. S time da zadnja dva mjeseca samo ispravljam puno sitnih greškica koje su mi promakle.

Savjet? Hm… Pa, najbolje je jednostavno krenuti i ne misliti previše o problemima koji će nastati i obimu posla. Ja sam jednostavno napisao samo sadržaj knjige i napravio prvi commit. I onda bih si svaki dan uzeo 15-20 minuta da napišem dio knjige. Nisam čak niti išao redom poglavlje po poglavlje. S vremenom su se neke izmjene u sadržaju (nove teme ili promjena redosljeda) same nametale.

Olakotna okolnost je bila to što ja nisam planirao napisati cijelu knjigu. Mislio sam da će imati par desetaka stranica grafova i kratkih objašnjenja. Onda sam napisao sadržaj i shatio da će biti malo duže od toga. Kad sam prvi put nekome spomenuo da pišem “knjižicu” rekao sam da će biti 50-60 stranica. Na kraju je ispalo 130. Da sam odmah na početku imao cilj napisati pravu knjigu — možda bih se i uplašio tako dugoročnog cilja.

Možda bi to mogao biti glavni savjet — imajte neki dugoročni cilj, ali rješavajte ga u malim koracima. Nemojte se previše daviti s time da stvar mora biti gotova u nekom roku, ali radite redovito. Barem kartica teksta dnevno.

Planiraš li izdati knjigu i u papirnatom izdanju? Kako to misliš realizirati, možda da se osloniš na donacije zajednice ili nađeš nekog sponzora?

Pa, vjerojatno hoću. Danas postoje izdavači koji su ujedno i štampari, a knjige štampaju on-demand (dakle, ne treba unaprijed naručiti određenu tiražu). Time su početni troškovi izdavanja knjige drastično smanjeni, pa sumnjam da ću trebati tražiti sponzore.

Doduše, treba knjigu još lektorirati i osmisliti nekakvu naslovnicu, ali postupak izdavanja papirnatog izdanja bi trebao biti više-manje jednostavan.

Koristiš li Linux i slobodan softver u svom svakodnevnom radu?

Da, korisim Linux (već dugo godina Ubuntu, prije toga Suse, neko kratko vrijeme Slackware). Neko vrijeme sam imao i OSX/iMac, ali na kraju sam se ipak vratio na Linux. Jednostavno, nisam vidio neku veliku prednost OSX-a u odnosu na Linux, osim kvalitetnog hardvera.

Koja je tvoja priča kako si “otkrio” Linux i slobodan softver?

Na faksu (PMF/matematika) smo radili na Unix mašinama i tako sam se naviknuo. Kad sam završio faks jednostavno nisam mogao zamisliti da radim na Windowsima, osim kad to posao zahtijeva. Kad i moram raditi na Windowsima, prvo instaliram cygwin, vim, git i python. Tek onda se počinjem osjećati “kao doma”.

Imaš li još nekih projekata ili angažmana vezanih za slobodan softver ili općenitije FLOSS zajednicu osim ove knjige o Gitu?

Većinu kôda kojeg napišem kod kuće objavljujem na svom github profilu kao open source. Uglavnom su tu nekakve skripte koje malo koga zanimaju. No, tu i tamo se nađe ponešto što ljudi i koriste. Tako sam u javi napisao programčić za izvlačenje statistika i ispravljanje visinskih grešaka iz GPS datoteka. Iako je to bilo prije 7 godina, još uvijek mi se tu i tamo mejlom jave/zahvale
ljudi koji ga imaju instaliranog. Imam i jedan library za parsanje i manipulaciju GPS trackova u pythonu kojeg nekoliko drugih projekata (o.s. ali i closed source) koriste.

Osim toga par puta sam slao ljudima patcheve /ili povratne informacije o open source aplikacijama.

Zadnji takav angažman je bio (i još uvijek traje) s projektom git-tf. Radi se git pluginu koji omogućuje rad s TFS-om. Tu sam našao i ispravio nekoliko manjih bugova i ispravke poslao originalnom autoru (Nodir Turakulov). Osim bugova, predložio sam mu i par novih funkcionalnosti i licencu pod kojom će kôd projekta ubuduće biti objavljen (Apache 2.0).

I to je točno onaj tip suradnje kojeg najviše volim kod open sourcea. Netko, koga možda nikad u životu neću sresti, je napravio aplikaciju koja je njemu korisna, zna da nije savršena, ali radi. Objavi ju kao o.s. projekt i onda netko treći ima pootrebu za tim istim — krene koristiti, uvidi nedostatke, ispravi, prijavi vlasniku, onda malo diskutiraju o tome je li to najbolji način za ispravak i na kraju to sve skupa ukomponiraju u projekt. I stvar funkcionira.

Što misliš da je glavna prednost slobodnog softvera, a što mu je glavna mana?

Otvorenost je prednost sama po sebi. Kad moram birati na koju tehnologiju ću se dugoročno osloniti, onda je open source prednost jer sam siguran da se neće desiti da me vlasnik projekta ostavi na cjedilu. Ako ga i prestane razvijati — uvijek mogu napraviti neke izmjene sam.

Otvoreni softver nije politička filozofija (iako mnogi misle da jest), nego je samo jedan ekonomski model kako softver može opstati. Taj model je pokazao da može napraviti velike stvari (cijele operativne sustave), a da neke druge stvari radi malo lošije. Na primjer, inovacije u korisničkom sučelju kao Apple sa svojim proizvodima ili neke visokospecijalizirane aplikacije za koje ne postoji kritična masa programera koji bi ih održavali. Kad stvari promatraš na taj način — onda slobodan softver nema nekih velikih mana. On rješava točno one probleme za koje je predviđen.

Zašto si se odlučio za nekomercijalni oblik CC licence? Nekomercijalni oblik CC licence
ne spada među slobodne licence i knjiga se neće moći naći recimo u repozitorijima distribucija i sl. što može predstavljati problem kod distribucije, a i problem u drugim slučajevima.

Pa, iskreno, nisam se previše razmišljao o licenci  Pogledao sam licence par knjiga koje imam, a koje su dostupne online s izvornim kôdom i skoro sve su koristile tu istu licencu. I tako sam se odlučio.

Možda nekome tko bi izdao moju knjigu to predstavlja problem. No, ljudima kojima je knjiga namijenjena je to svejedno. To nije kao nekakav open source library — jer njega ljudi žele iskoristiti u svojim aplikacijama i NC bi bilo veliko ograničenje. Postoji sam jedan način da krajnji korisnik knjigu iskoristi, a to je da ju pročita i iz nje stekne neko korisno znanje. U tom smislu, ja njega uopće ne ograničavam, dapače — knjiga mu je svo vrijeme dostupna na internetu za đaba.

Tko zna, možda ću -NC s vremenom i maknuti. Potaknuo si me na razmišljanje.

Jesi li probao možda Gitorious kao alternativu GitHubu? GitHub je možda tehnički superioran, ali Gitorius je slobodan softver pa je recimo mogućnost migracije olakšana…

Prema onome što sam probao, github jest tehnički superioran. To što im je core-business proizvod closed-source po meni uopće ne predstavlja problem. Jer, em su puno toga opensorsali, em su napravili vrhunsku platformu za hostanje projekata. I, a što je važno naglasiti, nju implicitno subvencioniraju od zarade na projektima zatvorenog kôda (za koje korisnicima naplaćuju uslugu).

Budući da se radi o git hostingu — priča o “nemogućnosti migracije” pada u vodu. Svaki put kad si klonirao neki o.s. projekt s githuba — importirao si cijelu povijest kod sebe lokalno. Dakle, upravo si ga migrirao. I, ako ga želiš pushati na bitbucket, gitorius ili svoj privatni server — to je pola minute posla. Nema nikakav legal agreement koji ti zabranjuje da projekt migriraš drugdje, a sam proces je trivijalan.

 

Zahvaljujemo se Tomi što je odvojio svoje vrijeme za ovaj intervju, ali mu se još više zahvaljujemo što je obogatio domaću scenu s jednom vrlo poželjnom knjigom koja će vjerojatno približiti Git i sustav kontrole verzija onima koji se s njime još nisu susreli ali i pomoći u snalaženju onima koji ga već koriste ali ga nisu u potpunosti savladali. Ono što ga sigurno odvaja od većine da je ponudio svoj rad posve besplatno svijetu i napravio ga transaprentno preko javnog Git repozitorija.

Do sljedećeg susreta (neke iduće knjige?) želimo Tomi puno uspjeha u izdavanju i papirnatog izdanja. A do tad PDF knjige “Uvod u Git” dostupan je ovdje.

Tomo Krajina s kćerkicom

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Povezani članci:

Intervju: Linus Torvalds ...
Intervju: Marin Bariša ta...
LZS intervju tjedna: Greg...
LZS intervju: tvrtka Ulti...
E-knjiga: Pet zlatnih pra...

8 Responses

  1. max360se kaže:

    Svaka čast. Kako si samo uspio doć do autora.

  2. Vjekoslav kaže:

    Baš sam nedavno prošao online manual sa službene stranice od GIT-a hehe. Ovo će puno pomoć ljudima kojima engleski nije najjača strana, premda ja i dalje preferiram čitati stručnu literaturu na engleskom. Inače GIT je odličan sustav za kontrolu verzija. Ja sam prezadovoljan njegovom uporabom, i preporučio bih ga svakome ;)

  3. Marin kaže:

    U knizi se spominje isto odličan alternativa GIT-u Mercurial Hg. Koristio sam GIT lokalno i GIT GUI, no kada sam presao na Mercurial-HG, i prešao na Tortoise-HG (ekvivalent Git Gui) + Lokalni WEB support za Mercurial koji se puno lakše konfigurira, podesi i puno lakše upravlja sa Tortoise Hg.

    I jedan i drugi je superioriran, no Hg je nesto brzi i user-friendly. Mercurial je James Bond naspram Git-a: http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/

    • Tomo Krajina kaže:

      Inače, postoji i TortoiseGIT. Ja ga ne koristim, ali vidio sam kod jednog frenda i čini mi se dosta ispeglan. Github klijent za windowse (koji je ujedno i običan git klijent) isto dosta hvale. Postoji i SmartGIT.

      Za mercurial meni smeta par sitnica kod branchanja i to što moram preimenovati fajl preko njegovih komandi ako hoću sačuvati povijest fajla. No, to su sitnice. Mercurial je općenito OK i preporučio bih ga bilo kome.

  4. kepica kaže:

    ovo mi je zaista uljepšalo dan. Tomo – pozdrav od ( puno starijeg ) kolege s PMF-a. dok sam čitao ovaj izvrstan članak, narastao sam pet centimetara. zaista motiviraš. hvala i tebi 4ndY – izvrstan članak

  5. Dejan kaže:

    Open source knjiga o gitu, napisana u latexu i hostana na gihubu.
    Tri od meni pet najdražih alata (možda i četiri, vidim tamo neke .py fajlove ;) ).
    Svaka čast!

  6. 4ndY kaže:

    Da dodam u komentar: autor knjige promijenio je licencu izbacivši -NC uvjet čime se otvara put da se knjiga nađe i u službenim repozitorijima distribucija :-)

Ostavi komentar

© 2014 Linux Za Sve. | Impressum | Sadržaj je licenciran pod CC-SA-3.0 ako nije drugačije naznačeno.
Proudly designed by Theme Junkie.