"Samo hobi, neće biti velik i profesionalan" (1991)
Jedan dosadan student u Helsinkiju samo je htio bolji terminal — pa je slučajno pokrenuo najveći kolaborativni projekt u povijesti čovječanstva.
# da, poglavlje ima pjesmu. ne, nitko ne zna zašto.
Helsinki, kraj kolovoza 1991. Sunce zalazi već prije osam navečer i dan za danom sve ranije — Finska je takva zemlja, pola godine mrak koji te uči strpljenju ili te dotuče, ovisi o dispoziciji. Nokia u to vrijeme ne pravi ništa što bi te iznenadilo da vidiš na ulici: čizme, gume, kartonsku ambalažu, pokoji televizor. Mobitel koji će cijelom svijetu učiniti to prezime sinonimom za telefon je još desetak godina daleko. Zasad je to samo jedna od stotina skandinavskih tvrtki koja pravi pomalo od svega, jer nitko još ne zna u čemu će se specijalizirati.
U studentskom domu Sveučilišta u Helsinkiju sjedi mladić po imenu Linus, treća godina informatike, i gleda u ekran računala kupljenog na kredit koji će vjerojatno vraćati dulje nego što će ga koristiti — 386-ica, ozbiljan novac za studenta, ali investicija koju je opravdao roditeljima kao nešto što će mu trebati za studij. Nije mu trebala za studij. Trebala mu je da se spoji na fakultetski sustav s doma i čita poštu i news grupe — tadašnji internetski oglasne ploče gdje su se ljudi dopisivali o svemu, od programiranja do toga tko je bolji, Star Trek ili Star Wars — bez šetanja do informatičkog kabineta po snijegu koji već stiže.
Problem je bio jednostavniji nego što zvuči, i baš zato bešćutniji: da se spojiš na Unix sustav fakulteta, treba ti nešto što se Unixu obraća njegovim jezikom. A Unix, taj legendarni operativni sustav na kojem je odrasla cijela generacija inženjera, u 1991. je pravno minsko polje. AT&T, tvrtka koja ga je izmislila, već godinama prijeti tužbom tvrtki iza jedne od slobodnijih, otvorenijih inačica Unixa, BSD-a, i ta prijetnja visi nad cijelom pričom kao Damoklov mač koji će sljedeće godine konačno pasti i zamrznuti baš tu granu razvoja u trenutku kad je svijetu najviše trebala. Nije to samo pozadinska buka za ovu priču — to je razlog zašto će priča uopće postojati, samo to još nitko ne zna.
Ostaje Minix — malen, elegantan operativni sustav koji je jedan profesor napisao za nastavu, ne za svakodnevni rad; zamisli ga kao maketu automobila u prirodnoj veličini, savršenu za učenje kako motor radi, ali ne baš za odlazak do dućana. Autor mu je stavio uvjete koji su, sasvim razumno s njegove strane, taj sustav držali na kratkom lancu: za komercijalnu upotrebu treba licenca, za veće promjene treba dopuštenje. Učionica sa zabranama — dobra za predavanje, loša za nekoga tko samo želi terminal koji radi ono što on hoće.
Zato je odlučio napisati vlastiti. Ne operativni sustav, ne proizvod — samo jezgru, kernel, ono najdublje što upravlja time kako se procesor, memorija i disk uopće razgovaraju, jer mu je to bilo zanimljivije od ispita koje je trebao učiti. Iz dosade, u mraku, sjedeći za svojim stolom, ispred vlastitog 386 računala, počelo je nešto što nitko u toj sobi te večeri nije mogao ni približno procijeniti.
Helsinki, 25. kolovoza 1991. Napolje je onaj finski kolovoz koji već pokušava biti studeni — vlažno, sivo, sunce ide na spavanje sve ranije, kao da vježba za onih šest mjeseci mraka koji dolaze. Negdje u studentskoj sobi, iza ekrana koji zrači onim mutnim zelenim sjajem starih monitora, sjedi dvadesetjednogodišnji student treće godine informatike i tipka poruku na jednu od onih internetskih grupa za rasprave iz doba prije Facebooka i foruma — zvale su se Usenet grupe, zamisli ih kao pretpotopni WhatsApp za nerde, gdje se ljudi javno i strastveno svađaju o operativnim sustavima, umjesto da rade nešto korisno sa svojim životom. Grupa se zove comp.os.minix. On piše post. I taj post će, bez ikakve namjere, postati jedan od najčitanijih dokumenata u povijesti informatike — ne zato što je bio pametan, nego zato što je bio potpuno, apsolutno, veličanstveno pogrešan.
Rečenica koja je sve to pokrenula glasi otprilike ovako: „radim (besplatni) operativni sustav, samo hobi, neće biti velik i profesionalan kao GNU” — GNU je u tom trenutku već poznat projekt slobodnog softvera koji je krenuo napraviti cijeli operativni sustav otvorenog koda, ono što bi danas zvali „velika liga”, i baš prema tom mjerilu se Linus skromno uspoređuje. Piše to isto kao što bi ti napisao status da si skuhao tjesteninu — usput, nezainteresirano, bez ni trunke svijesti da upravo piše rečenicu koju će ljudi citirati trideset i više godina kasnije, svaki put s istim osmijehom. Ne s podsmijehom. S onim toplim osmijehom koji rezerviraš za prijatelja koji je nekad rekao da mu neka ideja neće nikamo dovesti — a ta ideja mu je sad kupila kuću.
OK, hajde da razjasnimo tko je taj tip u tom trenutku, jer slika koju možda imaš u glavi — genijalni vizionar koji u mračnoj sobi crta arhitekturu budućnosti, svjestan da mijenja svijet — nema apsolutno nikakve veze sa stvarnošću. Linus Torvalds 1991. nije prorok. Nije ni posebno ambiciozan, u onom smislu u kojem to riječ obično znači. Cijeli plan bio je spojiti se na faks, ništa više.
Tvrdoglav, da. To mu nitko ne može oduzeti. Ali tvrdoglavost tu igra ulogu praktičara, ne sanjara — kad naiđe na problem, ne traži teoriju koja objašnjava zašto je problem nerješiv, nego traži najkraći put da ga makne s puta i vrati se poslu. Ta razlika će ga kasnije, u sukobu s profesorom čije će ime za par poglavlja postati sinonim za akademsku eleganciju nasuprot inženjerskoj grubosti, odrediti na koju će stranu stati cijela industrija.
Zato je ta rečenica iz posta — misli se na poruku koju je Linus objavio na Usenetu, u diskusijskoj skupini posvećenoj Minixu, kao neku vrstu javne objave da je nešto sklepao i da bi ga zanimalo je li ikome još to zanimljivo — toliko dobra, ne kao proročanstvo, nego kao dokaz da ni sami akteri velikih trenutaka nemaju pojma da su u velikom trenutku. Nitko ne ulazi u povijest s fanfarama. Ulazi se slučajno, u papučama, dok vani pljušti kiša koja neće stati do travnja, s porukom koja počinje riječima „samo hobi”. Da je Linus znao što će od toga narasti, vjerojatno bi tu rečenicu napisao ozbiljnije, uglađenije, s više poštovanja prema samom sebi. Umjesto toga napisao je istinu onakvu kakvu je u tom trenutku i osjećao — i baš zato je ta rečenica preživjela. Laž bi se zaboravila. Iskrena podcjena ostaje zauvijek, uokvirena, citirana, s ljubavlju ismijavana na svakoj konferenciji o softveru otvorenog koda.
Naravno, taj post sam po sebi ne bi značio ništa da se dogodio u vakuumu — da nije bilo baš te 1991., baš tog trenutka kad su se dvije stvari poklopile kao zupčanici u satu koji je čekao da ga netko navije. O tome više za koji trenutak. Za sada je bitno samo ovo: dvadesetjednogodišnjak je upravo, potpuno nesvjesno, napisao najavu za projekt koji će jednog dana pokretati telefone u tvom džepu, servere na kojima sjedi pola interneta i računala koja simuliraju vrijeme prije nego što ono stigne. A mislio je da pravi tek zamjenu za terminal.

Pravna rupa kao kolijevka
Da bi shvatio zašto se 1991. u Helsinkiju uopće otvorio prostor za dvadesetjednogodišnjaka s idejom o kernelu, moraš na trenutak skočiti u Kaliforniju, u sudsku dvoranu, gdje se u to vrijeme vodio rat koji nije imao nikakve veze sa studentskim domovima ni s 386-icama kupljenima na kredit. AT&T je tužio Berkeley — točnije, tužio je firmu koja se zvala Berkeley Software Design, Inc. — jer je BSD Unix, ta akademska, otvorena, elegantna varijanta Unixa koju su ljudi na Berkeleyu godinama gradili, po AT&T-u sadržavao preveliku količinu njihova originalnog koda. Spor je formalno počeo 1992., ali napetost i strah od tužbe postojali su i ranije, cijelo to razdoblje. I to je bitno: najbolji, najzreliji, najotvoreniji Unix na svijetu bio je efektivno zamrznut. Ne tehnički — pravno. Nitko normalan ne želi graditi biznis, ili čak hobi-projekt, na temeljima o kojima odvjetnici odlučuju hoće li se sutra srušiti.
Sad, normalna reakcija na takvu situaciju bila bi: pa dobro, netko će jednostavno napisati Unix od nule, čist, bez ni retka tuđeg koda, i problem riješen. I netko je to zapravo već pokušavao — Richard Stallman i njegov GNU projekt, još od 1983. GNU je do 1991. imao gotovo sve što je Unixu trebalo: kompajler (gcc), uređivače teksta, shell (ljusku — program koji ti otvori onaj crni ekran s kursorom u kojeg upisuješ naredbe, umjesto da klikaš mišem po ikonicama), alate za sve i svašta, cijelu tu bogatu ekosustavsku šumu — samo je nedostajalo jedno drvo, i baš to je bilo najvažnije. Kernel. Srce sustava, dio koji razgovara s hardverom, koji odlučuje tko dobiva procesor i kada, koji drži cijelu zgradu da se ne sruši. GNU-ov kernel se zvao Hurd, i Hurd je kasnio. Ne malo. Kasnio je toliko da su neki od najstrpljivijih ljudi u informatici — a Stallmanova ekipa je bila poznata po strpljivosti — počeli gledati na sat s nelagodom.
E sad — timing. Ako je ova serija poglavlja do sad nešto naučila, to je da pravna rupa nije nuspojava povijesti tehnologije, nego često njezin pravi motor. Vidjeli smo to već s kloniranjem IBM PC-a (K3), vidjet ćemo to opet. Svaki put kad veliki, spori, skupi sustav ostane zaključan iza patenta, licencije ili sudske zabrane, netko mlađi i gladniji upadne kroz prozor koji su odvjetnici, sasvim nenamjerno, ostavili otvoren. BSD je bio zaključan sudskim procesom. GNU je bio nedovršen jer je Hurd, po prirodi svog dizajna, jednostavno trebao još godinama — a dizajn je bio mikrokernel, pristup u kojem se sve, baš sve (upravljanje memorijom, komunikacija s diskom, mrežom...) razbije na sitne, odvojene programčiće koji međusobno šalju poruke, umjesto da sjede zbijeni u jednom velikom komadu koda. Filozofski čisto, elegantno na papiru, ali kao da gradiš auto od tisuću malih dijelova koji svaki put moraju jedni drugima dovikivati što rade — sporo za razviti i lako za zapetljati. Linus je umjesto toga napisao monolitni kernel, gdje je sve zbijeno na jednom mjestu i međusobno se doziva direktno, bez cijele te birokracije — manje elegantno, ali puno brže za sklepati i puno brže za pokrenuti. A onda se, u tom točnom, uskom, kratkom prozoru — 1991. — pojavio Linus s kernelom koji nije bio elegantan, nije bio filozofski čist, nije bio ni blizu dovršen. Ali bio je slobodan, bio je stvaran i bio je tu.
Zamisli to kao prazno parkirno mjesto u centru grada, u vrijeme kad svi ostali čekaju u redu za dozvolu parkiranja. Nije da je to mjesto najbolje na svijetu — jednostavno je slobodno, i to baš u trenutku kad ti hitno treba mjesto za auto. Linux nije pobijedio jer je bio tehnički superiorniji od BSD-a — po mišljenju mnogih Unix veterana, dugo nije ni bio blizu. Pobijedio je jer je BSD imao lisice na rukama, a GNU je čekao komad koji se nije stigao roditi. Linus nije morao biti genijalac da uskoči u tu prazninu. Morao je samo biti tu, imati vremena (studentski dom, Finska, pola godine mraka — vidi predgovor) i biti dovoljno tvrdoglav da ne odustane kad je stvar postala teška.
Ono što je zanimljivo — i što ćemo detaljnije obraditi malo dalje — jest da ta praznina nije bila samo tehnička rupa u kojoj je nedostajao jedan program. Bila je i pravna rupa u smislu da se, baš u tom trenutku, oblikovala jedna posve nova ideja o tome kako softver uopće smije postojati: ne kao vlasništvo koje se čuva sudskim nalogom, nego kao zajedničko dobro koje se štiti licencijom. Torvalds još nije znao da će njegova odluka o licenciranju — dolazi, strpljivo — biti ta koja spaja njegov nedovršeni kernel sa Stallmanovim dovršenim alatima u jedan sustav koji danas pokreće pola interneta. Za sada je znao samo jedno: da ima kernel koji radi i da ga treba negdje objaviti.

GPL odluka
Prvih mjeseci Linus nije puno mislio o licenci. Kod je bacio na FTP server — zamisli ga kao digitalni ormar na internetu, ostavljen otključan, odakle svatko može preuzeti datoteke koje si u njega spremio — i to pod uvjetima koji su bili, blago rečeno, improvizirani: smiješ ga kopirati, ne smiješ na njemu zarađivati, i nemoj mi slati račun ako ti negdje zapuca. To je bilo dovoljno dobro za hobi-projekt kojem, kako je i sam napisao, ne treba profesionalna infrastruktura. Ali kernel je rastao, ljudi su počeli slati zakrpe, i u jednom trenutku je postalo jasno da će netko, negdje, htjeti uzeti taj kod, zapakirati ga u kutiju i prodavati bez da ikad vidiš ni redak izvornog koda niti centa od te priče.
Rješenje je već postojalo. Richard Stallman ga je smislio nekoliko godina ranije za GNU projekt (o čemu je bilo riječi u Knjizi 3, poglavlje 21) — General Public License, GPL. Pravna genijalnost te licence je u jednom triku koji se zove copyleft, i koji zvuči kao igra riječi jer i jest: umjesto da kažeš »sva prava pridržana«, kažeš »sva prava proslijeđena — pod istim uvjetima«. Smiješ uzeti kod, smiješ ga mijenjati, smiješ ga prodavati. Ali čim ga distribuiraš dalje, moraš dati izvorni kod, i moraš ga dati pod istom licencom. Ne možeš uzeti tuđi trud, zabrtviti ga u vlasnički proizvod i zaključati vrata iza sebe.
U veljači 1992., u verziji 0.12, Linus je Linux prebacio na GPL. Godinama poslije, kad ga se pitalo koja je bila najbolja odluka koju je donio u vezi s Linuxom, odgovor nije bio ni jedna linija koda, ni jedan algoritam za raspoređivanje procesa, ni jedan sustav datoteka. Odgovor je bio: licenca. „Licenciranje pod GPL-om je najbolja odluka koju sam ikad donio”, rekao je — i kad razmisliš što je ta odluka pokrenula, teško mu je proturječiti.
Posljedica te jedne pravne rečenice bila je posve nepravna: lavina. Svaka firma, sveučilište ili pojedinac koji je poboljšao kernel — dodao podršku za novi hardver, ubrzao neki dio koda, popravio bug koji ga je nervirao u tri ujutro — morao je, ako je htio taj rad distribuirati dalje, vratiti izvorni kod natrag u zajednicu. Ne iz dobrote. Zato što je to bio uvjet igre. I dogodilo se to da su firme, umjesto da se bore protiv toga, počele gledati na suradnju kao na jeftiniju opciju od vječnog paralelnog održavanja vlastite tajne grane koda. Zašto plaćati inženjere da zauvijek čuvaju svoju tajnu granu, kad pola tog posla možeš prebaciti na tisuće ljudi koji rade to isto — besplatno, iz zabave, iz principa, ili iz svega toga odjednom?
Tako je GPL, licenca smišljena da spriječi krađu, postala i motor suradnje. Kod se slijevao unatrag u kernel brže nego što bi to ikad mogao jedan tim u jednoj tvrtki, jer svaki tim koji je nešto dograđivao bio je — htio ili ne htio — na istom brodu.
Ali kernel sam po sebi, koliko god elegantan, ne pokreće ništa. Kernel je motor bez karoserije, sjedala i volana — upravlja memorijom, procesorima, diskovima, ali ne otvara ti terminal, ne kompajlira ti kod, ne daje ti ljusku u koju možeš nešto upisati. Linus je imao kernel bez alata. GNU je imao alate bez kernela. Spoj tih dviju polovica, oboje pod istom licencom, dao je nešto što je konačno moglo sjesti na tvrdi disk i raditi kao potpun operativni sustav.
Zovi to kako hoćeš. Bitno je da je krajem 1991. i tijekom 1992. postojalo nešto što je funkcioniralo od dna do vrha, besplatno, pravno čisto, i — zahvaljujući GPL-u — konstruirano tako da svako poboljšanje mora ostati dio zajedničkog vlasništva. Student koji je htio samo terminal za spajanje na faks upravo je, bez da je to planirao, postavio pravna pravila igre za projekt koji će za dvadesetak godina pokretati većinu interneta. Nije loše za odluku donesenu, kako je i sam rekao, uglavnom iz sebičnosti.

Bazar u praksi
Dobro, imamo kernel, imamo licenciju koja tjera sve da vraćaju popravke. Sad treba objasniti kako se to stvarno radilo, jer ono što slijedi zvuči kao organizacijska noćna mora, a ispalo je jedna od najproduktivnijih struktura u povijesti softvera. Nema ureda. Nema šefa odjela. Nema sastanaka u devet ujutro gdje netko crta strelice na bijeloj ploči. Postoji mailing lista — obična e-mail adresa na koju se pretplatiš, i onda ti u sandučić stižu poruke svih ostalih pretplaćenih, kao neka grupna diskusija bez foruma i bez servera koji izgleda kao stranica.
To je to. Cijela infrastruktura projekta koji danas pogoni pola interneta i tvoj telefon u džepu bila je gomila e-mailova s naslovima poput »Re: Re: Re: patch za IDE driver, molim testirajte«. Ljudi iz Finske, Njemačke, Kalifornije, Australije — nikad se nisu vidjeli, nisu potpisali ništa, nisu imali NDA ni ugovor o radu, a slali su Linusu kod za komad hardvera koji je on osobno možda vidio jednom u životu. On bi pročitao, nekad prihvatio, nekad odbio, nekad samo nestao na tri dana jer je spao ispod snijega ili je imao ispit.
Filozofija je bila jednostavna do bezobrazluka: "release early, release often" - objavi rano, objavi često. Ne čekaj da bude savršeno, ne čekaj veliku verziju 1.0 s fanfarama i tiskovnom konferencijom - izbaci ono što imaš, neka ga ljudi razbiju, neka prijave što ne radi, popravi, izbaci ponovno. Sutradan. Ili preksutra. Nema kvartalnog ciklusa, nema odjela za odnose s javnošću koji mora odobriti bilješke o izdanju. Verzija 0.02 izašla je mjesec dana nakon onog famoznog posta na Usenetu - i bila je, da budemo iskreni, katastrofalna. Ali bila je vani, i to je bila poanta.
Zašto je to funkcioniralo umjesto da se raspline u kaos - to je pitanje na koje ćemo se vratiti detaljnije [K4, pogl. 9], jer zaslužuje vlastitu teoriju, ne samo divljenje. Ali evo skraćene verzije, dovoljne za sad: tisuće ljudi koji nešto rade bez plaće i bez ugovora ne rade to iz altruizma prema čovječanstvu. Rade to jer ih žulja isti problem koji žulja i tebe, i jer je popravak vidljiv za par dana, ne za par godina kroz sedam razina odobrenja. Motivacija je sebična, i upravo zato je iskrena - a iskrena motivacija skalira bolje nego bilo koja misija napisana na zidu recepcije.
A gdje je u svemu tome Linus? Ne kao vizionar koji je nacrtao arhitekturu operacijskog sustava za sljedećih trideset godina — takve priče su lijepe za biografije, manje za stvarnost. Njegova stvarna uloga bila je uže i, iskreno, manje glamurozna: ukus i veto. Netko mora odlučiti koji patch (komad koda koji netko drugi predlaže kao izmjenu ili popravak) ulazi, koji čeka, a koji se odbija jer je »ugly«, ružan — riječ koju je koristio bez ustručavanja, i to nije bila estetska primjedba, bila je tehnička presuda. Loš kod trune projekt iznutra čak i kad radi. Ružan kod je uvijek prvi korak prema kodu koji ne radi.
To se zove model benevolentnog diktatora, i zvuči kao oksimoron dok ga ne vidiš u praksi: jedna osoba ima zadnju riječ, ali ta riječ se poštuje isključivo dok ostaje dosljedna i pravedna, a ne zato što ima titulu na vratima. Nema vrata. Čim bi Linus počeo donositi loše odluke, projekt bi se »forkao« i nastavio bez njega — što jednostavno znači da bi netko uzeo cijeli kod, kopirao ga i nastavio ga razvijati u vlastitom smjeru, bez pitanja i bez dozvole, a to je mehanizam koji GPL izravno omogućuje, sjeti se prošle sekcije. Diktatura koja traje samo dok je dobra diktatura, s ugrađenim prekidačem za slučaj da nije. Rijetko elegantnije rješenje za problem koji je mučio svaku ljudsku organizaciju od pamtivijeka.

Od hobija do svega
Trideset i nešto godina poslije, taj kernel koji „neće biti velik i profesionalan” pokreće otprilike sve što se danas smatra računalnom moći. Krenimo od vrha: sva superračunala na svijetu, do jednog, vrte Linux. Ne devedeset posto, ne devedeset osam — sve. Kad znanstvenici u CERN-u razbijaju atome ili kad se simulira klima za sljedećih pedeset godina, ispod te matematike sjedi jezgra koju je student pisao u sobi u Helsinkiju dok mu je sunce izlazilo jednom u siječnju.
Serveri koji nose internet — velika većina njih. Kad učitaš stranicu, kad pošalješ mail, kad staviš nešto na cloud jer ti je lakše nego da to čuvaš na svom disku — negdje u pozadini radi kernel s istim porijeklom. Android, koji ti trenutno vjerojatno sjedi u džepu ili u ruci dok ovo čitaš — Linux kernel s Googleovim slojevima odozgo. Router u tvom stanu, onaj sivi ili crni kvadrat koji nitko ne gleda dok radi — Linux. Tvoj auto, ako je nešto noviji — Linux. Pametni televizor — Linux. Pametna kosilica za travu, ozbiljno govorim — Linux.
A sad, malo brojki o radnoj snazi, jer analitika smiruje čak i kad je tema ovako epska. Piramida u Gizi — po nekim procjenama dvadeset godina gradnje, deset do dvadeset tisuća radnika u sezoni. Katedrala u Kölnu — šest stotina godina, s pauzama, generacije zidara koje se nikad nisu upoznale. Linux kernel danas ima doprinose od preko dvadeset pet tisuća ljudi kroz svoju povijest, a u nekim godinama i po nekoliko tisuća pojedinačnih suradnika godišnje, iz gotovo svake zemlje s pristojnim internetom. Razlika je što graditelji piramide nisu doživjeli dovršetak projekta, a Linux se mijenja svaka dva-tri mjeseca — novi release, i onda ispočetka. Kolektivni projekt bez premca u ljudskoj povijesti, samo što ga nitko nije naručio, nitko nije platio unaprijed i nitko nije bio faraon.
Ali nemoj sad zamišljati ravnu crtu od studentske sobe do vladavine svijeta. Prije nego što je Linux postao ono što je danas, morao je preživjeti dvije stvari koje su ga mogle ugasiti puno prije nego što je stigao do prvog routera. Prva je bila akademska — pravi rat riječima s čovjekom koji je smatrao da je Linusov pristup dizajnu kernela zastario prije nego što je i napisan, i koji o tome nije šutio. Druga je bila poslovna — trenutak kad su ljudi u odijelima shvatili da besplatan kernel može donijeti novac, samo ne na način na koji su navikli da novac dolazi. O prvom ratu, i o profesoru koji je Linusu rekao da je njegov dizajn iz osnove pogrešan — sljedeće poglavlje. O drugom, i o tome kako se hobi pretvorio u biznis vrijedan milijarde — poglavlje iza toga.