Ljubavno pismo učenju
Početkom devedesetih godina lični računari već su ulazili u domove, učionice i male kancelarije, ali je svet ozbiljnih operativnih sistema još bio okružen visokim tehničkim, pravnim i ekonomskim preprekama. Unix je decenijama oblikovao način na koji su programeri razmišljali o procesima, datotekama, mrežama, višekorisničkom radu i povezivanju malih programa u složene celine, dok su njegove najmoćnije mogućnosti uglavnom ostajale vezane za univerzitetske računare, skupe radne stanice i komercijalne licence. Vlasnik pristupačnog računara sa Intelovim procesorom mogao je da koristi DOS, prilagođen jednostavnijem načinu rada, ili da se okrene obrazovnim i komercijalnim varijantama Unixa, čija dostupnost i sloboda menjanja nisu odgovarale radoznalosti ljudi koji su želeli da upoznaju svaki sloj sopstvene mašine.
Važno mesto u tom vremenu pripadalo je MINIX-u, Unixu sličnom sistemu koji je profesor Endru Tanenbaum razvio kao nastavno sredstvo. Zahvaljujući njemu, studenti su mogli da proučavaju procese, upravljanje memorijom, sistem datoteka i unutrašnju organizaciju operativnog sistema, umesto da računar doživljavaju kao zatvorenu napravu koja izvršava naredbe čiji smisao ostaje skriven. Njegova obrazovna namena istovremeno je određivala granice razvoja: arhitektura je morala ostati dovoljno pregledna da bi se mogla objasniti u udžbeniku i na predavanjima, dok rani uslovi distribucije nisu pružali sve slobode koje su priželjkivali ljudi spremni da sistem proširuju i prilagođavaju svakodnevnom radu.
U istom istorijskom trenutku GNU projekat već je izgradio veliki deo slobodnog Unixu sličnog okruženja. Postojali su kompajler, komandna ljuska, biblioteke, programerski alati i brojni drugi delovi potrebni za upotrebljiv sistem, dok je odgovarajuće jezgro još bilo u razvoju. Upravo u tom otvorenom prostoru susreli su se višegodišnji napori pokreta slobodnog softvera i eksperiment jednog studenta Univerziteta u Helsinkiju. Linus Torvalds želeo je da bolje upozna mogućnosti procesora Intel 386 i da na računaru kupljenom na otplatu dobije radno okruženje koje će moći da istražuje, menja i prilagođava sopstvenim potrebama.
Počeo je od programa koji mu je omogućavao povezivanje sa univerzitetskim računarima, proučavajući prebacivanje procesora između zadataka, rad terminala, prekide i komunikaciju sa uređajima. Svaki rešeni problem otvarao je sledeći sloj: za čuvanje podataka bilo je potrebno upravljanje diskom, za pokretanje programa organizovanje memorije i procesa, a za stabilan rad jasno određene veze između programa i hardvera. Eksperiment koji je u početku ličio na terminalski emulator postepeno je prerastao u jezgro operativnog sistema. Torvalds nije unapred raspolagao potpunom mapom budućeg Linuxa; napredovao je pažljivim rešavanjem konkretnog problema koji se u tom trenutku nalazio pred njim.
Jezgro, ili kernel, zauzima nevidljivo, presudno mesto između programa i fizičkog računara. Ono raspoređuje procesorsko vreme, čuva granice između različitih delova memorije, omogućava čitanje i upisivanje podataka, upravlja uređajima i usklađuje zahteve programa koji se izvršavaju gotovo istovremeno. Greška u običnoj aplikaciji najčešće ugrožava njen rad, dok greška u jezgru može poremetiti čitav sistem. Pisanje kernela zato traži duboko razumevanje hardvera i programskih apstrakcija, ali i strpljenje za granične slučajeve koji postaju vidljivi tek kada kod izađe iz autorove sobe i počne da radi na tuđim računarima.
Prve verzije Linuxa bile su čvrsto vezane za arhitekturu Intel 386 i razvijane uz MINIX i GNU C kompajler. Taj spoj omogućio je da se Unixova kultura, nastala radom Kena Tompsona, Denisa Ričija i mnogih njihovih naslednika, preseli na hardver pristupačan studentima, entuzijastima i manjim organizacijama. Jezik C pružao je dovoljno blizak dodir sa mašinom, uz znatno veću prenosivost od programa pisanih isključivo u asemblerskom jeziku. Linux je tako nastavio istoriju već postojećih ideja, ali ih je postavio u novo okruženje u kojem su učenje, eksperiment i stvarna upotreba mogli da se razvijaju zajedno.
Prvo objavljeno jezgro bilo je skromno, nedovršeno i prilagođeno uskom krugu računara. Oslanjalo se na postojeće GNU alate, zahtevalo veliko tehničko znanje i nije nudilo udobnost kasnijih distribucija. Ipak, sadržalo je osobinu koja je odredila njegovu budućnost: moglo se preuzeti, pročitati, prevesti, pokrenuti, ispitati, pokvariti, popraviti i ponovo podeliti. Nedovršenost je postala poziv na učešće. Ljudi nisu dobijali samo program koji treba koristiti, nego i mogućnost da u njemu prepoznaju problem koji umeju da reše.
U avgustu 1991. godine Torvalds se obratio korisnicima diskusione grupe posvećene MINIX-u, napisavši da radi na slobodnom operativnom sistemu za računare sa procesorima 386 i 486. Projekat je opisao kao hobi i zamolio druge da mu kažu koje osobine postojećih sistema vole, a koje bi želeli da promene. U toj skromnoj poruci nalazila se odluka dalekosežnija od prvobitnog koda: rad je izašao iz privatnog direktorijuma i postao otvoren razgovor. Torvalds je pokazao dokle je stigao, priznao ograničenja sopstvenog rešenja i omogućio ljudima koje nikada nije sreo da u njegovom pokušaju pronađu mesto za svoje iskustvo.
Saradnja se ubrzo pretvorila u osnovni razvojni mehanizam. Korisnici su prijavljivali greške, proveravali ponašanje sistema na različitom hardveru, tražili podršku za nove uređaje, predlagali izmene i popravljali tuđi kod. Neko je bolje razumeo procesore, neko mreže, neko datotečne sisteme, a neko neobičnu grešku koja se pojavljivala samo u određenoj konfiguraciji. Znanje je prestalo da bude zatvoreno u jednoj glavi, dok je svaki doprinos postajao deo šire provere. U takvoj radnoj atmosferi greška nije morala da bude dokaz neuspeha; mogla je da postane zajednički problem oko kojeg se okupljaju različita iskustva i iz kojeg nastaje pouzdanije rešenje.
Torvalds je rano pokazao poseban dar za uređivanje kolektivnog tehničkog dela. Njegova uloga nije se iscrpljivala u pisanju sopstvenog koda, jer je morao da proceni kako se tuđe izmene uklapaju u celinu, koje rešenje uvodi nepotrebnu složenost, gde se krije posledica koju autor nije predvideo i kada dobra zamisao zahteva drugačiju izvedbu. Linux je rastao kroz spoj široko raspoređene inicijative i pažljivo usmeravanog objedinjavanja. Svako je mogao da pročita kod, predloži promenu i obrazloži njenu vrednost, dok su održavaoci čuvali doslednost pojedinih podsistema i prosleđivali zrele izmene prema glavnoj razvojnoj grani.
Takva organizacija donela je važnu pouku o timskom učenju. Velika grupa ljudi ne postaje zajednica samim tim što svi rade na istom projektu; zajedništvo nastaje kada postoje jasni putevi razmene znanja, poverenje u stručnost drugih, odgovornost za sopstveni doprinos i spremnost da se rešenje popravi posle argumentovane kritike. Održavaoci Linuxa nisu morali da znaju svaki detalj čitavog kernela, ali su morali da umeju da prepoznaju čije je znanje merodavno za određenu oblast i kako da trag odluka učine vidljivim drugima. Javni razgovori, istorija izmena i pregled koda pretvorili su projekat u ogromnu živu učionicu u kojoj se ne uči samo čitanjem dokumentacije, nego i posmatranjem razloga zbog kojih je jedna ideja prihvaćena, a druga vraćena na doradu.
Prelazak Linuxa na GNU Opštu javnu licencu, verziju 2, dao je toj saradnji stabilan pravni temelj. Ljudi su mogli da koriste, proučavaju, menjaju i distribuiraju kernel, uz obavezu da distribuirane izvedene izmene ostanu dostupne pod odgovarajućim slobodama. Univerzitet je mogao da ga koristi u nastavi, pojedinac da ga prilagodi sopstvenom računaru, a kompanija da razvija proizvode, zapošljava programere i prodaje stručnu podršku. Zajedničko znanje moglo je da stvara ekonomsku vrednost, dok je licenca čuvala mogućnost da se poboljšanja vraćaju u prostor iz kojeg su nastala.
Na toj tački povezale su se dve različite tradicije. Ričard Stolman i GNU projekat izgradili su etički i pravni okvir slobodnog softvera, zajedno sa velikim brojem neophodnih alata. Torvalds je doneo funkcionalno jezgro za pristupačan hardver i pragmatičan razvojni postupak zasnovan na ranim izdanjima, javnoj proveri i brzom prihvatanju dobrih doprinosa. Njihovi pogledi na značenje slobode, naziv sistema i prioritete pokreta često su se razlikovali, ali je veza Linux kernela sa GNU alatima omogućila nastanak potpuno upotrebljivih slobodnih sistema. Ta istorija podseća da velika zajednička dela mogu nastati i među ljudima koji ne dele istu filozofiju, ukoliko njihovi doprinosi mogu da se dopunjuju.
Kako je projekat rastao, odgovornost se raspoređivala među održavaocima procesorskih arhitektura, datotečnih sistema, upravljanja memorijom, mrežnog sloja, bezbednosti i hiljada upravljačkih programa. Izmene su prolazile kroz više krugova javnog pregleda, testiranja i povezivanja, ostavljajući trag autorstva i tehničkog obrazloženja. Autoritet se sticao znanjem, pouzdanošću i dugotrajnim radom, a mogao se izgubiti ukoliko bi zajednica prestala da veruje nečijem sudu. U otvorenom projektu svako može da napravi sopstvenu razvojnu granu, pa središnje mesto traje zahvaljujući kvalitetu odluka i poverenju saradnika, a ne zahvaljujući tome što je drugačiji put zabranjen.
Distribucije su zatim povezale kernel sa bibliotekama, komandnim alatima, instalacionim programima, sistemima za upravljanje paketima, dokumentacijom, grafičkim okruženjima i aplikacijama. Debian, Slackware, Red Hat, SUSE i brojne kasnije zajednice birale su različite odnose između stabilnosti i brzine promena, jednostavnosti i korisničke kontrole, dobrovoljnog rada i komercijalne podrške. Jedno zajedničko jezgro omogućilo je nastanak sistema namenjenih školama, serverima, radnim stanicama, istraživanju, bezbednosti, multimediji i specijalizovanim uređajima, a svaki novi način upotrebe vraćao je projektu nova pitanja i iskustva.
Linux je naročito snažno napredovao zajedno sa internetom. Njegove mrežne mogućnosti, prilagodljivost i dostupnost izvornog koda odgovarale su administratorima koji su želeli da razumeju sistem, automatizuju rad i prilagode ga sopstvenom opterećenju. Kompanije su mogle da grade poslovanje na podršci, integraciji, hardveru i dugoročnom održavanju, dok su njihovi programeri doprinosili zajedničkom kernelu. Učešće proizvođača procesora, mrežne opreme i drugih uređaja donelo je novac, testiranje i stručnost, ali i potrebu da javna recenzija spreči pretvaranje zajedničkog projekta u zbirku međusobno nespojivih privatnih dodataka.
Prenos Linuxa na različite procesorske arhitekture dodatno je usavršavao njegovu unutrašnju organizaciju. Svako prilagođavanje novom hardveru otkrivalo je pretpostavke koje su ranije izgledale univerzalno i primoravalo programere da jasnije razdvoje opšte mehanizme od delova zavisnih od određene mašine. Tako je sistem koji je počeo na procesoru Intel 386 stigao do telefona, rutera, automobila, industrijskih uređaja, velikih servera i superračunara. Njegova snaga proistekla je iz sposobnosti da primi nova iskustva, preradi sopstvenu arhitekturu i sačuva zajedničku osnovu uprkos ogromnim razlikama među uređajima.
Android je najvidljiviji svakodnevni primer tog širenja. Ispod njegovih sistemskih servisa, biblioteka i korisničkog interfejsa nalazi se Linux kernel, pa trag studentskog projekta iz Helsinkija živi u milijardama mobilnih i drugih uređaja. Linux je postao i važna osnova računarstva u oblaku, gde njegovi mehanizmi za izolovanje procesa, ograničavanje resursa i upravljanje mrežama omogućavaju rad virtuelnih okruženja i kontejnera. Naučne ustanove oslanjaju se na njega u superračunarima koji obrađuju klimatske modele, astronomske podatke, simulacije i složene proračune. Torvalds nije osmislio sve te primene, ali je pomogao da nastane osnova dovoljno otvorena da drugi na njoj izgrade ono što prvobitni autor nije mogao predvideti.
Kada je rast kernela početkom novog veka prerastao mogućnosti dotadašnjih alata za praćenje promena, zajednica je morala da pronađe način da sačuva istoriju, autorstvo i hiljade paralelnih razvojnih tokova. Posle prestanka besplatne upotrebe vlasničkog sistema BitKeeper, Torvalds je 2005. godine započeo razvoj Gita. Novi sistem bio je brz, distribuiran i prilagođen velikim projektima sa brojnim granama koje se razvijaju istovremeno. Git je ubrzo prerastao prvobitni zadatak i postao jedna od osnovnih alatki savremenog programiranja, čime je organizacioni problem Linux zajednice proizveo novu infrastrukturu za saradnju širom digitalnog sveta.
Linuxova istorija pokazala je i da kvalitet radne zajednice zavisi od načina na koji ljudi razgovaraju. Dugogodišnja kultura veoma oštrih rasprava ponekad je brzo razotkrivala tehničke slabosti, ali je istovremeno udaljavala saradnike i stvarala atmosferu u kojoj su se pojedinci plašili da iznesu nedovršenu ideju. Postepeno je sazrevalo razumevanje da visoki standardi i ljudsko poštovanje pripadaju istoj odgovornosti. Kodeks ponašanja i šira rasprava o kulturi projekta priznali su da ponižavanje ne doprinosi pouzdanosti koda i da zajednica gubi znanje kada ljude primorava da biraju između dostojanstva i učešća.
U tome se nalazi jedna od najdragocenijih pouka Linuxa za svako radno i obrazovno okruženje. Najbolje rešenje često ne dolazi od najglasnije osobe, sa najviše formalne moći ili sa najčvršće izgovorenim uverenjem. Može ga pronaći nepoznati saradnik koji je pažljivo proučio problem, korisnik koji je primetio grešku u neobičnoj situaciji ili tim koji je spreman da spoji više nepotpunih uvida. Autoritet zasnovan na znanju ume da sasluša tuđi argument, pokaže razloge svoje odluke i promeni smer kada dokaz postane snažniji od prvobitne pretpostavke.
Priča o Linuxu zato prevazilazi istoriju jednog operativnog jezgra. Ona govori o učenju koje postaje zajedničko stvaralaštvo, o znanju koje dobija veću vrednost kada kruži među ljudima i o poverenju koje se gradi kroz vidljiv rad, odgovornost i spremnost na ispravku. Mladić iz Helsinkija napravio je početak dovoljno dobar da ga drugi isprobaju i dovoljno otvoren da ga mogu menjati. Hiljade ljudi zatim su u taj početak unosile sopstveno iskustvo, popravljale greške, preuzimale odgovornost i nalazile rešenja koja nijedan pojedinac ne bi mogao sam da osmisli.
Linus Torvalds nije planirao revoluciju u uobičajenom smislu te reči. Želeo je da razume sopstveni računar i napravi sistem koji mu nedostaje, a zatim je svoj rad pokazao ljudima od kojih je mogao da uči. Iz te jednostavne odluke izrasla je infrastruktura savremenog sveta i velika lekcija o zajedništvu: čovek ne mora da zna sve da bi započeo nešto vredno, ali mora da ostavi dovoljno prostora da znanje drugih uđe, ospori njegove pretpostavke i pomogne da prvobitna zamisao postane bolja nego što bi ikada mogla ostati u samo jednim rukama.