Open-source: o revoluție în software?

(C) Mihai Budiu -- mihaib+ at cs.cmu.edu, http://www.cs.cmu.edu/~mihaib

mai 1996, revizuit mai 1998

Nota: de la publicarea articolului denumirile de "Open Software" si "Free Software" s-au rafinat si diferentiat intre ele.

Subiect:
publicarea codului sursa al programelor
Cuvinte Cheie:
Free Software, Proiectul GNU, Linux
Nivel Tehnic:
divertisment
Cunoștințe necesare:
programare de orice fel


Contents




Calculatoarele sunt o apariție relativ recentă pe scena tehnologiilor; cu toate acestea, au devenit o componentă din ce în ce mai importantă a societății. Anul acesta se estimează că aproximativ 40% din produsul intern brut al Statelor Unite ale Americii provine din tehnologii înalte, ceea ce înseamnă mai ales hardware, software și telecomunicații.

Importanța fenomenului economic reprezentat de calculatoare este și mai recentă: companiile de gen au căpătat greutate mare la bursă abia la sfîrșitul anilor '70. Cel mai bogat om din lume este Bill Gates, patronul companiei Microsoft, al cărei capital s-a clădit cu precădere din comercializarea de software.

Programele calculatoarelor (software) reprezintă din ce în ce mai multă valoare. Dar programele sunt totodată foarte diferite de majoritatea celorlalte creații ale umanității. ``Cum trebuie privite software-ul de către societate'' este o întrebare al cărei răspuns nu este încă pe deplin formulat (în pofida importanței economice fenomenale pe care o are deja!). Ca dovadă fenomenele de neimaginat în urmă cu cîțiva ani cărora le suntem martori, și care sunt subiectul acestui articol. Mă refer cu precădere la răspîndirea paradigmei software-ului ``liber'', care nu are restricții de acces, copiere și citire, cel mai faimos reprezentant al categoriei fiind sistemul de operare Linux împreună cu utilitarele aferente.

Despre drept

Copyright, licențe, patente și secrete comerciale

Mecanismele juridice cu care societatea protejează software-ul sunt cu precădere adaptate de la mecanismele dezvoltate pentru a proteja alte creații ale spiritului uman (prin opoziție cu bunurile materiale). De aceea vom arunca întîi o privire asupra acestor mecanisme, ca să înțelegem mai bine unele dintre dilemele contemporane legate de software. Probabil că inadecvarea acestor mecanisme ``improvizate'' este o cauză a tranziției căreia îi facem față.

Noțiunile pe care le discut în secțiunile următoare sunt prezentate așa cum sunt formulate de legislația Statelor Unite ale Americii. Cu certitudine, această țară este cel mai important jucător din domeniu la ora actuală, după volumul veniturilor, numărul de indivizi angrenați sau aproape orice altă metrică. Nu știu în ce măsură legislația din România este similară, dar cred că este oricum instructiv să aruncăm o privire la formulele americane.

Patente

Patentul este un contract între societate și un inventator privitor la o invenție a acestuia:

Ideea este destul de naturală: dacă inventatorul nu ar fi protejat în vreun fel, ar putea veni un altcineva mai puternic, care să beneficieze de truda inventatorului, să aplice invenția și să strîngă toți banii. Inventatorul are prin patent o perioadă de autonomie în care să-și fructifice ideea, fără frica unei astfel de concurențe.

Societatea este cîștigată, la rîndul ei, în două forme:

Inventatorul are toate drepturile asupra ideii sale pentru perioada acoperită de patent; el poate decide să nu facă absolut nimic cu ideea, să încerce să o fructifice de unul singur, sau să facă o asociere cu alți indivizi prin care să o exploateze. De pildă poate face un contract cu o firmă, prin care-și vinde drepturile exclusive asupra ideii.

Societatea, prin biroul de patente, oferă inventatorului care și-a descris ideea o dovadă de întîietate. Dacă cineva încalcă drepturile inventatorului (de pildă o firmă fabrică niște aparate bazate pe ideea patentată), inventatorul poate da în judecată firma, iar tribunalul îi poate acorda despăgubiri proporționale cu daunele suferite de lipsa exclusivității.

Primul individ care depune o înscriere la patent obține dreptul exclusiv de folosire, chiar dacă altcineva inventează același lucru, fără a avea cunoștință de invenția anterioară.

Nu orice lucru se poate patenta. De exemplu în Statele Unite nu se pot patenta idei care erau în circulație cu mai mult de un an de la depunerea înscrierii la patent. Nu mă pot deci trezi mîine și patenta motorul Carnot; e prea tîrziu. Nu se pot de asemenea patenta formulele matematice sau procesele cognitive.

Copyright

Copyright-ul este o altă formă de protecție a unei creații intelectuale. Copyright, literal ``drept de copiere'', stabilește că numai autorul unei creații are dreptul să multiplice și distribuie acea creație. Drepturile acestea, în sistemul american, durează pînă la moartea autorului plus 50 de ani.

Spre deosebire de patente, copyright-ul nu protejează o idee, ci modul de exprimare al ideii. Cu alte cuvinte nu pot proteja la copiere idila între Romeo și Julieta, dar Shakespeare ar fi putut proteja piesa cu pricina. Scenariul unui film despre Romeo și Julieta este o cu totul altă creație decît piesa, și autorul scenariului are drepturi exclusive de copiere asupra sa.

Iarăși, spre deosebire de patente, copyright-ul apare automat. De îndată ce am fixat într-un mediu permanent expresia mea, am drept de copyright asupra ei, fie că este vorba de un text literar, un manual școlar, o simfonie sau o pictură.

Drept de copiere exclusiv am asupra creațiilor mele; problema este cum pot să dovedesc în fața instanței acest lucru, la nevoie, dacă altcineva îmi ia manuscrisele, le multiplică și le vinde? Pentru a beneficia de astfel de protecție pot să-mi înregistrez creația la un organism oficial; ștampila lor este dovada de care am nevoie.

Faptul că un obiect este protejat de copyright este indicat de obicei de semnul (C) (c într-un cerculeț). Pentru înregistrările muzicale avem de-a face cu fonograme în loc de litere (phonograms), așa că semnul folosit este (P).

Copyright-ul este mai puțin restrictiv decît patentele: alți indivizi au dreptul să folosească fragmente din creația mea dacă o fac în scopuri dezinteresate și nu îmi cauzează daune. Aceasta este așa numita clauză fair use.

De exemplu un autor poate fi citat, fără ca prin asta să se încalce copyright-ul. Care este limita între ``fair use'' și încalcare, tribunalele stabilesc de la caz la caz, în funcție de circumstanțe.

Ca și în cazul patentelor, un autor poate decide să vîndă altora o parte din drepturile sale exclusive asupra obiectului în schimbul unor compensații.

Anumite lucruri nu pot fi protejate de copyright; în pofida aparențelor, titlurile (cărților, filmelor, produselor) nu pot intra în această categorie. Sloganuri, obiecte de uz general (forma lor mai exact), cărțile de telefon nu pot fi protejate de copyright. Obiectele protejate trebuie să fie într-o oarecare măsură originale. (Un slogan sau un simbol pot fi protejate însă printr-o marcă comercială, dar asta e altă poveste care ne interesează mai puțin.)

Domeniul public

Ce se întîmplă după expirarea perioadei de validitate a unui patent sau copyright? Bunurile protejate intră în domeniul public: oricine are voie să le folosească fără a fi îndatorat cuiva. Sunt bunuri ale întregii societăți.

Astfel, piesele lui Shakespeare pot fi jucate pe scenă de către oricine, fără ca prin aceasta să fie încălcate drepturile sale de copyright.

Licențe

Licența este un contract prin care posesorul unor drepturi exclusive vinde o parte din aceste drepturi altcuiva. Cele două părți în mod normal semnează un contract, prin care se specifică întinderea transferului (de exemplu un autor poate licenția o carte pentru a se face o piesă după ea, dar nu pentru un film).

Secrete comerciale

Cînd ai pus mîna pe o găselniță cu potențial ai două posibilități:

Secretele comerciale au avantaje și dezavantaje față de patente. Un avantaj este că atîta vreme cît reușești să păstrezi secretul, beneficiezi singur de el, pe cînd un patent expiră după o vreme; de pildă compoziția băuturii ``Coca-Cola'' este un secret comercial păzit cu grijă de mai bine de un secol.

Un dezavantaj este că oricine poate -- teoretic -- avea aceeași idee și o poate patenta. Atunci adio avantaje, ba chiar dimpotrivă.

Legea apără într-o oarecare măsură secretele comerciale. Anumite activități, ca spionajul, sunt ilegale tocmai din astfel de motive. Companiile care au secrete comerciale se apără de proprii lor angajați folosind contracte speciale numite Non-Disclosure Agreements, NDA: înțelegeri de ne-divulgare. Practic angajatul semnează cu compania un act cum că nu va divulga nimănui informațiile secrete, etc., iar compania îl poate da în judecată pentru încălcarea contractului dacă o face. (Pe de altă parte odată secretul divulgat e bun dus; ``trădătorul'' va plăti atunci daune.)

Situația în software

După atîtea ocolișuri ``legale'' să vedem care este situația în domeniul care ne interesează -- în software.

Ei bine, toate ingredientele de mai sus apar și în software. Astfel:

Să observăm că (lucru valabil și pentru patente și copyright în general) o firmă poate angaja indivizi care să inventeze/creeze pentru ea, iar produsele devin posesiunea firmei, și nu a indivizilor care le-au creat. Acest lucru este de obicei specificat în contractele de muncă ale inșilor. Majoritatea firmelor software aplică acest model.

Tipuri de protecție legală a creatorilor de software

Varietatea de protecții aplicate în software este însă foarte mare, în parte și pentru că un program poate fi văzut la două nivele: al codului sursă, în limbajul în care este scris (C, Pascal, Java, etc.), sau la nivelul programului obiect, executabil, așa cum iese dintr-un compilator. Iată unele dintre categoriile cele mai răspîndite de software1:

Public domain:
sunt programe care nu sunt supuse nici unei protecții, pentru că autorii lor nu au luat măsurile necesare de protecție. Oricine poate folosi aceste programe în orice fel, inclusiv le poate include în programe mai mari care sunt secrete sau sunt protejate de copyright.

Proprietary:
(în proprietatea cuiva) sunt programe a căror modificare, folosire și redistribuire sunt supuse la restricții de către posesorii lor. Semi-free software, de mai jos, intră în această categorie.

Semi-free:
anumite programe sunt disponibile fără constrîngeri dacă sunt folosite în scopuri non-profit, dar sunt supuse la restricții pentru alte utilizări. Un exemplu este pachetul PGP (Pretty Good Privacy).

Shareware:
shareware este un tip de program care se poate folosi într-o formă restrînsă (fără funcționalitate completă, sau doar pentru o anumită vreme) gratuit, dar care trebuie cumpărat în versiunea completă. Practic un fel de software cu mostre gratuite pentru a momi cumpărătorii. În general ``shareware'' este o formă de software ``proprietary''.

Freeware:
acest termen este ambiguu și nu se bucură de o interpretare unanim acceptată.

Comercial:
software-ul comercial este vîndut de o companie pentru bani. În mod paradoxal, software-ul comercial nu este același lucru cu software-ul ``proprietary''! Poate exista software comercial free, cum explică următoarea categorie!

Free/Open Source:
aceasta este de fapt creatura cea mai interesantă, care este scopul central al acestui articol. Software free este orice software care:

Termenii ``open source'' și ``free software'' sunt sinonimi. Cel de-al doilea este mai tradițional, dar puțin mai confuz, pentru că ``free'' înseamnă în engleză atît ``liber'' (de restricții) cît și ``gratuit''. Free software nu înseamnă gratuit, ci ``liber de restricții''.

Garanțiile software-ului

E interesant de văzut ce fel de garanții oferă firmele în general atunci cînd livrează programe, cel puțin în cazul consumului de masă (ce se întîmplă cu software-ul scris pentru a monitoriza centrale nucleare este o altă poveste).

Cînd cumperi soft de la Microsoft (sau orice alt mare producător) vei avea surpriza să observi că nu ți se oferă nici o garanție asupra calității sale! Dacă ați avut răbdarea să citiți un astfel de contract, care de obicei apare cînd pornești prima oară un program, ați observat că firma producătoare nu promite că programul face ceva bine cu siguranță 100%.

Desigur, programele nu sunt în realitate inutile, pentru că nu le-ar cumpăra nimeni. Ele nu sunt însă nici complet fiabile. În general merg, însă producătorul nu este răspunzător de nici o malfuncție.

Situația programelor este complet diferită de cea a tuturor celorlalte bunuri de larg consum; o fabrică de mașini este obligată să garanteze ca motorul nu poate lua foc (desigur, în condiții rezonabile).

Această diferență de atitudine este posibilă pentru că în general software-ul nu are un impact imediat asupra lumii materiale: ți se blochează calculatorul, îl scoți din priză, îi dai drumul, poate ai pierdut ceva din munca ta, dar merge din nou. Complexitatea programelor a ajuns atît de mare încît este virtual imposibil să fie garantată corectitudinea lor, nici măcar din punct de vedere statistic. O viață de om nu ajunge pentru a citi toate cele 20 de milioane de linii sursă ale sistemului de operare Windows NT, cu atît mai puțin pentru a garanta corectitudinea lor.

Este pe deplin acceptat că fiabilitatea unui program este funcție (crescătoare) de vechimea lui: cu cît un program a fost folosit mai mult și peticit mai tare, cu atît este mai sigur. Din această cauză marile bănci rulează în continuare software scris prin anii '70, scris în Cobol: riscul unei pierderi este prea mare pentru a încerca o altă soluție.

Free Software

Noțiunea de free-software (sau open-source) este aparent paradoxală: dacă oricine poate lua un program și-l poate multiplica, cum poate acel program să mai poarte valoare pentru cel care l-a creat? Cum se pot face bani scriind program pe care apoi oricine le poate folosi?

Orice economist o să exclame: ``nu se poate''! Absurd! Așa ceva nu există.

Bine, dar atunci cum explicăm cele 7 milioane de servere din lume pe care sunt instalate Linux?

Pentru a vedea geneza acestui fenomen misterios trebuie să facem un pic de istorie.

Apariția valorii în software

La început a existat numai hardware. La începutul anilor '60 calculatoarele erau mari, puține și extrem de scumpe (milioane de dolari). Timpul lor era foarte prețios, și cei care știau să le ``descînte'' erau puțini.

Cu vremea hardware-ul a devenit din ce în ce mai ieftin; ``încrucișarea'' s-a produs undeva la începutul anilor '70, cînd oamenii au realizat că programele care se execută pe computere sunt cel puțin la fel de importante economic ca și computerele însele.

Dacă programele au valoare economică atunci ele trebuie protejate, nu? Cum? Făcîndu-le secrete comerciale. Practica ne-publicării surselor programelor și interzicerii multiplicării datează din această perioadă.

Aparent modelul funcționează de minune: companiile care scriu software fac o grămadă de bani din asta; programatorii sunt în mare cerere și salariile lor sunt impresionante. Costul de producție al software-ului nu este deloc scăzut: randamentul unui programator este destul de mic. Cea mai mare parte a efortului este cheltuită în întreținerea și depanarea programelor. Microsoft are pentru fiecare programator doi indivizi care testează! Ceea ce face software-ul profitabil este ușurința cu care este multiplicat. Un program popular este scris o singură dată (și întreținut cu un efort continuu), dar este vîndut în milioane de copii.

O altă mare sursă de venit al companiilor de software este ``customer support''. Compania oferă o formă limitată de asistență tehnică utilizatorilor săi, răspunzînd la întrebări și ajutîndu-i în anumite proceduri (service). Compania nu promite, dar încearcă, să corecteze malfuncțiile programelor.

Deși acest statut juridic/economic al software-ului funcționează de minune, poate de fapt nu este cel mai potrivit. Obiecții pertinente se ivesc una cîte una.

Contracurentul: Richard Stallman și proiectul GNU

Cea mai importantă figură a opoziției noțiunii de ``proprietary software'' (software secret, cu restricții de publicare și copiere) este cu certitudine Richard Stallman. Dacă nu este cea mai importantă figură, Stallman este cu siguranță cea mai pitorescă.

Stallman este un ``hacker'' cu o experiență impresionantă: a început să programeze încă din anii '60. Stallman a lucrat o vreme îndelungată la Universitatea MIT (Massachusetts Institute of Technology2) ca programator de sistem în laboratorul de Inteligență Artificială. După aceea și-a dat demisia ca să se consacre în întregime proiectului său GNU despre care o să vorbesc ceva mai jos.

Cea mai răspîndită creație a lui este editorul de texte Emacs, pe care l-a conceput cît timp era la MIT. Astăzi Emacs este probabil unealta preferată pentru interacțiunea cu calculatorul a majorității profesioniștilor din calculatoare din lume. (Un articol despre Emacs am publicat în PC Report din mai 1997; articolul este disponibil din pagina mea de web.)

De asemenea Stallman este arhitectul și realizatorul excelentului compilator de C numit GNU C Compiler, pe scurt GCC. Este singurul compilator care, ca și Emacs dealtfel, funcționează pe cîteva zeci de mașini diferite arhitectural (de la PC-uri și stații de lucru la supercalculatoare).

Stallman este însă extraordinar prin proiectul său GNU, și prin fundația pe care a creat-o pentru a-l duce la capăt. Despre proiectul GNU puteți afla o sumedenie de lucruri din pagina sa de web de la http://www.gnu.org.

Stallman este cel puțin un excentric. Cei care l-au văzut cu ocazia vizitei sale la București în 1994, la conferința ROSE, nu-l vor uita prea curînd. Despre rațiunile sale și concepția sa despre programare puteți afla din paginile mai sus citate; excelent reprezentativ este textul unei conferințe ținute în 1986 la Institutul Regal de Tehnologie din Stockholm.

Pe scurt, Stallman crede că a face software-ul secret și a împiedica diseminarea sa este imoral, pentru că privează societatea de accesul la valoare. Mai mult decît atît, acest lucru înseamnă risipă: pentru că nu poți copia (și îmbunătăți) software, trebuie să-l rescrii. Asta se vede destul de clar în sumedenia de sisteme de tip Unix care există: fiecare firmă mare a dezvoltat propria ei versiune, ușor incompatibilă cu toate celelalte. (Un articol despre istoria sistemului de operare Unix și variantele sale am publicat în BYTE din august 1996.)

Stallman spunea:

Pentru ca astfel de lucruri să nu se mai poată întîmpla m-am hotărît să scriu un set complet de software de sistem, pe care să îl pot da oricui îl vrea să îl folosească. [Pachetul ăsta de programe poartă denumirea de GNU]. Odată ce GNU va fi scris, oricine va fi capabil să obțină software de sistem de calitate, fără a face vreun efort.

Nu-i așa că sună nebunește?

Proiectul GNU a debutat în 1984. GNU urma să fie un set complet de programe necesare pentru a utiliza un sistem de tip Unix, plus un nucleu de sistem de operare stil Unix. Iar totul urma să fie ``free software'', spre deosebire de Unix, care este o marcă comercială.

Numele este o abreviere recursivă, (Stallman este un mare programator în Lisp): GNU = Gnu is Not Unix (G este prescurtare la rîndul său de la Gnu).

Programele din sistemul GNU însă încearcă să remedieze unele din deficiențele tradiționale de implementare a UNIX-ului (în multiplele variante ale diferitelor firme), păstrînd multele sale calități.

Stallman a înființat o societate non-profit, Free Software Foundation (FSF), pentru a duce la bun sfîrșit proiectul GNU.

Primele programe scrise de Stallman pentru proiectul GNU au fost GCC, o implementare complet ``free'' a editorului Emacs, și un generator de parsere Bison. În timp proiectul GNU a dezvoltat majoritatea utilitarelor necesare oricărui sistem Unix tradițional. Și într-adevăr, acestea sunt excelent implementate, cu mai puține bug-uri și eficiență mai mare decît cele pe care se dau bani grei. Toate aceste programe pot fi copiate gratuit prin Internet sau pot fi cumpărate de la FSF.

În 1996 a fost lansată și prima versiune a nucleului sistemului de operare GNU, numit ``The Herd'' (ciurda). Din rațiuni pe care le vom evidenția mai jos (recte popularitatea Linux), The Herd nu este încă foarte populară.

FSF angajează programatori care scriu pentru proiectul GNU. Cele mai multe din programele GNU însă sunt rodul muncii unor entuziaști din întreaga lume, care scriu programe pe care le pun la dispoziția fundației, sau care contribuie cu optimizări sau indicații de bug-uri la programele existente. Fundația scrie și documentații și manuale pentru produsele ei, pe care le tipărește și le vinde. Periodic face CD-ROM-uri pe care ultimele versiuni ale programelor GNU se află în totalitate, și care pot fi cumpărate la prețuri derizorii. Fundația mai trimite cui vrea contra cost benzi cu programe. Acestea sunt în principiu mijloacele ei de subzistență.

Stallman s-a așteptat și la suport financiar din partea unor corporații mari care dezvoltă soft pentru Unix:

Mă așteptam ca toți să mă sponzorizeze pentru ca eu să le fac soft de excelentă calitate pe care să-l folosească toți, iar ei să se poată ocupa de lucruri mai serioase, decît să refacă fiecare același lucru în felul lui.

În viziunea lui Stallman, cea mai importantă calitate a software-ului este că poate fi citit de oricine și îmbunătățit de oricine. Or asta se poate numai dacă software-ul este ``free''.

Free înseamnă două lucruri esențiale independente:

Desigur, acestea sunt atribute adevărate ale oricărei creații care este în domeniul public: oricine o poate copia, modifica și distribui. Dar asta nu e suficient pentru a o face utilă: ce folos dacă cineva ia un program public, îl îmbunătățește și apoi îl face secret?

Acesta este pericolul de care trebuie să ne apărăm. Dar cum?

GNU Public License (GPL)

Pentru a proteja soft-ul pe care FSF îl scrie, acesta nu este pus pur și simplu în domeniul public, unde oricine și l-ar putea însuși pentru scopuri personale. Soft-ul GNU este protejat de exact mijlocul pe care marile firme îl folosesc pentru a-și apăra produsele împotriva copierii: copyright-ul și licențele.

Stallman e elaborat celebra GPL, ``General Public License'', care se aplică programelor GNU. Programele GNU sunt deci protejate de copyright, dar licența GPL dă următoarele drepturi utilizatorilor:

Pentru Stallman, a face cunoștințele ``secrete'' este profund imoral. El observa, corect, că existentă suportului tehnic și a garanțiilor nu are absolut nici o legătură cu proprietatea software-ului de a fi secret sau ``free'':

Utilizatorii cumpără software de firmă pentru că li se spune că vor căpăta asistență tehnică și garanții. Este desigur un lucru foarte util, dar dacă se vor gîndi ce legătura poate să aibă asta cu vînzarea de soft, sau cu interdicția de a-l studia, vor realiza că nu e prea clar. Nu există nici o garanție ca soft-ul de firmă va primi suport tehnic bun.

[...] În realitate lumea crede că GNU Emacs este mai bine întreținut decît variante comerciale ale programului. Unul dintre motive este eu că sunt un hacker mai bun decît cei care scriu celelalte Emacs-uri, dar celălalt motiv este că toată lumea are sursele și sunt așa de mulți interesați să-l folosească la tot felul de lucruri încît de fapt nu trebuie să fie întreținut de mine.

Acesta este un lucru deosebit de interesant, asupra căruia o să revenim mai jos, în secțiunea consacrată modelului ``open-source''.

Linux

Geneza

În 1987 un profesor de la Universitatea Vrije din Amsterdam, pe nume Andrew S. Tanenbaum,3 scrisese o carte excelentă despre arhitectura sistemelor de operare, care era însoțită de codul unui nucleu complet, numit Minix. Minix arăta pentru un utilizator ca un Unix foarte mic (de aici și numele), dar era construit folosind o arhitectură complet deosebită de cea a Unix-ului tradițional (Minix era un micro-nucleu).

Minix era distribuit în categoria ``semi-free'' de mai sus, adică fără restricții pentru cei care-l foloseau non-profit. Codul era folosit pentru instruirea în sisteme de operare în universitățile din întreaga lume. Grupurile de discuții pe Internet (news) despre arhitectura nucleului, unde lumea sugera variante și îmbunătățiri, se bucurau de un interes crescînd.

În 1991 proiectul GNU pornise deja de 6 ani și dezvoltase toate utilitarele necesare, mai puțin nucleul unui sistem de operare. Utilitarele GNU erau folosite de multă lume, dar nimeni nu avea încă la dispoziție ceea ce Stallman își dorise: un sistem complet free, de la un cap la altul.

Sudura s-a produs datorită unui student finlandez de la universitatea din Helsinki. Linus Torvalds a adăugat inițial un modul de memorie virtuală la Minix și și-a făcut publică creația. Foarte mulți entuziaști au început să folosească îmbunătățirile aduse de Linus.

Linus a început încetul cu încetul și a rescris feluritele părți din Minix folosind o arhitectură monolitică4. Noul sistem era dezvoltat inițial folosind Minix (compilatoarele, utilitarele pentru scrierea sistemului se executau pe Minix). A urmat o ceartă publică (pe Internet) între Linus și Tanenbaum, care era nemulțumit de evoluția arhitecturii nucleului său. Tanenbaum este un cercetător renumit în sistemele de operare distribuite, și crede că arhitectura micro-nucleu este mai potrivită pentru evoluția sistemelor viitoare. Linus pe de altă parte s-a bazat foarte mult pe arhitectura Unix-ului tradițional (despre care s-a publicat foarte mult, și care este relativ bine înțeleasă; trebuie reținut că design-ul Unix-ului tradițional nu este patentat; codul său este sub copyright, dar asta nu înseamnă deloc că altcineva nu poate scrie noi sisteme care să arate ca Unix). În momente de înfierbîntare Tanenbaum a declarat că Linus ar pica dacă ar fi student la cursul său de sisteme de operare.

Linus atunci și-a luat jucăriile și a plecat, redenumind propriul lui nucleu Linux5. După o vreme Linux avea un nucleu suficient de complet încît să nu mai fie nevoie de mediul de dezvoltare oferit de Minix. În locul utilitarelor de pe Minix, Linus a ales să folosească sculele de dezvoltare de software de la GNU. De asemenea, Linus a pus codul Linux sub protecția licenței GPL, făcînd codul ``free''.

Așa a început ceea ce ar putea fi ``noua revoluție în software''...

Explozia

Linux a început să strîngă tot mai mult aderenți, în dauna Minix-ului. Unul dintre motive era entuziasmul cu care Linus accepta modificările sugerate de alții și le introducea în codul lui (Tanenbaum era mult mai conservator). Un alt motiv era faptul că Linus a implementat anumite trăsături foarte utile unui sistem de operare, cum ar fi memoria virtuală. (Tanenbaum a spus că așteaptă vremea cînd RAM-ul o să fie atît de ieftin încît nu va mai fi nevoie de memorie virtuală.)

Cert este că evoluția numărului de utilizatori a fost explozivă, exponențială. În 1995 cînd Linus a fost la București la conferința ROSE a prezentat un grafic care arăta cam așa:

An Număr de utilizatori Linux
1991 50
1992 500
1993 5.000
1994 50.000
1995 500.000

De atunci încoace numărul de utilizatori a continuat să crească spectaculos. Cifra actuală (1998) este estimată undeva între 4 milioane și 24 de milioane, dar este imposibil de afirmat cu precizie cîți. Unul dintre motive este că Linux este distribuit ``free'', și oricine poate să-l citească de pe Internet, fără a da socoteală cuiva. Nu se pot deci contabiliza încasările pentru a afla popularitatea sa.

Sistemul a crescut din ce în ce mai mult, și a căpătat din ce în ce mai multă funcționalitate. Modelul de dezvoltare este în esență același ca cel din urmă cu 7 ani: Linus menține un control relativ strîns al arhitecturii interne a sistemului și proiectează interfețele. Contribuțiile unor programatori din întreaga lume sunt înglobate în nucleu și rapoartele despre erori ale celor care testează sunt imediat luate în considerare.

În clipa asta Linux este pe locul doi în lume ca număr de sisteme de operare multi-utilizator instalate (nu socotim Windows95, DOS și alte sisteme mono-utilizator), după Windows NT al lui Microsoft6. Linux a bătut toate Unix-urile comerciale ca popularitate (care există de 25 de ani)! E natural la prețul pe care îl are...o distribuție Unix de firmă costă între cîteva sute și cîteva zeci de mii de dolari, depinzînd de utilitarele livrate.

Linux mai deține și alte recorduri interesante: este cel mai portabil nucleu de tip Unix, care rulează nu numai pe PC-uri cu procesoare din familia Intel Pentium, ci și pe calculatoare Sun cu procesoare SPARC, calculatoare Digital cu procesoare Alpha, pe procesoare PowerPC de la IBM și Motorola, Motorola m68k, MIPS de la Silicon Graphics, ARM de la Intel (fost la Digital), etc.

Linux a devenit un sistem de operare redutabil, înzestrat cu toată funcționalitatea necesară dezvoltării de software, rulării de programe pentru servicii Internet (servere Web, de poștă electronică, etc.), cercetare, etc. Nucleul este în întregime supus licenței GPL, ca și majoritatea utilitarelor sistemului.

Pe de altă parte din ce în ce mai multe firme încep să dezvolte software care merge (și) pe Linux; grupul de discuții comp.os.linux.announce este foarte populat cu noi anunțuri de software, cel mai adesea software free. Anumite programe esențiale folosite nu sunt neapărat supuse licenței GPL, cum ar fi sistemul grafic de ferestre X Windows. Acesta este ``aproape free'': cei care l-au scris îl oferă gratuit în surse, însă oferă posibilitatea dezvoltării de versiuni ``proprietary'' (și există astfel de versiuni).

Din ce în ce mai multe companii adoptă Linux pentru a rula servicii care au nevoie de fiabilitate (Windows NT este din punctul ăsta de vedere mult inferior). Soluția server-ului de Web Apache peste un nucleu Linux este ideală din punctul de vedere al unui administrator de sistem. Multă publicitate s-a făcut în jurul folosirii sistemului Linux de către compania Digital Domain pentru a realiza efectele speciale din filmul Titanic. Avînd de ales între Windows NT, IRIX (de la Silicon Graphics) și Linux a fost preferat cel din urmă. NASA plătește programatori care dezvoltă software pentru a transforma Linux într-un mediu pentru programare distribuită (proiectul Beowulf). Poșta Americană folosește 900 de stații cu Linux pentru a face recunoașterea scrisului de pe plicuri și cartarea automată. Și exemplele de aplicații ``serioase'' ar putea continua. Universitățile găsesc Linux un sistem din ce în ce mai tentant: e ieftin, e public, e bine întreținut, este răspîndit și are o bază largă de aplicații. Plus faptul că sursele sunt complet disponibile îl face un vehicul ideal pentru cercetare: cînd faci cercetare pe nuclee obținute semnînd NDA (non-disclosure agreements) anumite rezultate nu pot fi publicate.

Modelul Open-Source

Așa ceva este imposibil, știe toată lumea. Microsoft este o firmă cu un buget uriaș, mii de programatori și testeri, care investește enorm în dezvoltarea de software și cercetare, cu o experiență remarcabilă în domeniu, care angajează oameni plătiți full-time pentru a scrie programe, și nu a fost în stare să producă un sistem de aceeași calitate. De unde atunci valoarea din Linux? Cine produce valoare dacă recompensa este aparent imposibilă datorită modelului de distribuție liber, și dacă restricțiile la copiere nu împiedică ``furturile''?

Sau poate software-ul are o natură complet diferită, și criteriile despre conservarea valorii din alte domenii nu i se aplică?

De fapt Linux nu este decît exemplul cel mai evident dintr-o suită întreagă de alte exemple. Modelul acesta de dezvoltare este mai răspîndit decît pare.

Unul dintre dezvoltatorii de software ``free'', Eric Raymond a încercat să explice modelul de supraviețuire și înflorire al Linux-ului dintr-o perspectivă cît mai largă: economică, tehnică, socială. Un articol de-al său pe această temă a devenit faimos: ``Catedrala și Bazarul''. Dl. Raymond contrapune în acest text (http://www.earthspace.net/~esr/writings/cathedral-bazaar) modelul de dezvoltare ``tradițional'' (catedrala) cu modelul Linux (bazarul) și încearcă să explice meritele celui din urmă. Acest articol a fost foarte important pentru a conceptualiza fenomenul.

Pe data de 6 martie 1998 s-au întîlnit în Silicon Valley cîțiva dintre cei mai importanți actori din arena software-ului ``free''. S-a putut observa cu această ocazie că o mare parte din software-ul care constituie infrastructura Internet-ului este de fapt free! (Conferința de presă era disponibilă la http://www.news.com/News/Item/0,4,20913,00.html?st.ne.fd.mdh.) Iată cei mai importanți participanți:

Linus Torvalds,
creatorul Linux;
Larry Wall,
creatorul limbajului Perl, folosit în majoritatea serverelor de Web din lume;
Brian Behlendorf,
fondator al grupului Apache, al căror server web free rulează pe mai mult din 50% din serverele din Internet;
Eric Allman,
creatorul programului sendmail care asigură livrarea poștei electronice în mai mult de 70% din Internet;
Paul Vixie,
creator al programului bind (Berkeley Internet Name Daemon), piesa centrală din managementul numelor din Internet;
Phil Zimmermann,
creatorul pachetului de criptografie Pretty Good Privacy PGP;
John Gilmore,
întemeietor al firmei Cygnus Solutions, prima companie care trăiește exclusiv din întreținerea și vînzarea de software ``free'';
Guido van Rossum,
creator al limbajului Python;
John Ousterhout,
creator al interpretorului Tcl folosit pentru dezvoltarea rapidă de interfețe cu utilizatorii și generarea de pagini de web;
Tim O'Reilly,
patron la editura O'Reilly & Associates, care nu scrie software free, dar face bani grei publicînd cărți despre software free;
Tom Paquin și Jamie Zawinski,
reprezentînd site-ul mozilla.org al companiei Netscape7.

Unul dintre rezultatele întîlnirii a fost propunerea de a schimba numele ambiguu de ``free'' software (care poate sugera ``gratuit'', ceea ce am văzut că nu e adevărat) cu ``open-source''. Eric Raymond a înregistrat marca comercială Opensource și a înființat un ``site'' web consacrat acestui subiect; îl puteți vizita la http://www.opensource.org. Acest nume a fost ales pentru că cea mai importantă caracteristică a software-ului de acest gen este că trebuie publicat în ``surse'' (în limbajul în care a fost scris).

În acest ``site'' Eric Raymond expune o serie de motive foarte convingătoare care încearcă să explice succesul modelului de dezvoltare open-source. Argumentele încearcă să fie justificate din cît mai multe puncte de vedere (în contrast cu viziunea lui Stallman, pentru care prerogativele morale erau dominante: ``nu e cinstit să ascunzi software'', spunea el).

O să trec în revistă argumentația sa pe scurt; pentru detalii parcurgeți paginile de web indicate.

Meritele ``open-software''

Iată o serie de motive pentru care software-ul poate fi dezvoltat (mai bine) în stil ``liber'' decît ca secret comercial. Care dintre ingrediente este majoritar, rămîne de văzut.

  1. ``Dacă ai destui ochi, orice ``bug'' devine evident''. Altă formulare a acestui dicton este ``depanarea se poate face în paralel''. Cu cît mai mulți inși utilizează un program cu atît e mai simplu de depistat ce nu merge bine. Atunci cînd utilizatorii au la dispoziție sursele programului pot investiga cauzele reale ale erorii, și adesea le pot înlătura fără intervenția autorului programului.

  2. Linux a introdus un model de dezvoltare software cu reacție extrem de rapidă; Linus pune în circulație o versiune nouă de nucleu odată la 2-3 zile (cîteodată apar două nuclee pe zi!). În felul acesta reparațiile și sugestiile sunt foarte rapid implementate.

  3. Fiabilitatea programelor free este mult mai bună decît a celor comerciale, datorită faptului că practic oricine poate căuta și depana bug-uri. Două studii prezentat la conferința ``Usenix'' a dezvoltatorilor de Unix din 1990, respectiv 19958, comparau cantitativ robustețea utilitarelor din mai multe sisteme de operare comerciale, a celor produse de GNU și a celor folosite cu Linux (cele din urmă se suprapun). Studiile observa două lucruri oarecum surprinzătoare:

    Asta demonstrează că firmele nu sunt de fapt cu adevărat capabile sau interesate să înglobeze reparațiile sugerate de utilizatori, lucru mai puțin adevărat în cazul programelor ``free''. Atunci cînd codul este secret numai firma care îl posedă îl poate repară; un program public poate fi reparat de către oricine se pricepe.

  4. Contrar aparențelor, se pot cîștiga bani din dezvoltarea de software ``open''. Există mai multe companii de succes care manipulează numai software ``free''; pe piața Linux una dintre cele mai celebre este RedHat software, care vinde CD-ROM-uri, documentație și asistență tehnică cu o cantitate mare de software pentru Linux. Deși produsele software RedHat pot fi copiate direct de pe rețea de către oricine, gratuit, compania a vîndut peste 400.000 de CD-ROM-uri cu Linux, pentru mai multe platforme.

  5. O observație foarte interesantă se impune despre natura creației de software: mai mult (cel puțin pe scara temporală) decît activitate creatoare, scrierea de software este întreținere și depanare! Cu alte cuvinte, a livra software de calitate seamănă mai mult cu prestarea de servicii pentru clientul tău. Dar aceste din urmă activități sunt cu siguranță ajutate de prezența codului sursă și de o bază largă de utilizatori (care sunt atrași de disponibilitatea software-ului).

  6. Rata de inovare este mult sporită de prezența software-ului free; o soluție odată descoperită este disponibilă tuturor, și pe baza ei se poate construi o alta și mai eficace.

  7. O motivație de natură socială: scriind software ``free'' poți deveni faimos. Cîtă lume știe numele arhitectului șef al sistemului de operare NT (David Cutler)? Și cîtă lume a auzit de Linus? O companie mare ``înghite'' individualitățile angajaților ei.

Ce ne rezervă viitorul în privința modelelor de dezvoltare software este foarte greu de prevăzut. Tot ce putem face este să așteptăm și să vedem.

Ah, și să contribuim la îmbunătățirea unor programe ``free'' pe care le folosim!



Footnotes

... software1
Descrierile de aici sunt adaptate din pagina de web a proiectului GNU, despre care voi vorbi mai jos: http://www.gnu.org; reproducerea este permisă de copyright-ul din acea pagină.
... Technology2
MIT este considerată liderul universităților americane în cercetare în calculatoare.
... Tanenbaum,3
Da, este același Tanenbaum care a scris cartea de Rețele de Calculatoare publicată de Editura Agora în limba română.
... a4
Am publicat un întreg articol despre lupta dintre micronuclee și monoliți într-un PC Report din septembrie 1997.
... Linux5
Cronologia mea este puțin imprecisă privitor la aceste evenimente ``primordiale''; ele s-au petrecut cu siguranță, dar nu sunt sigur de ordinea lor.
... Microsoft6
Cineva observa că cifrele lui Microsoft pentru NT includ toate PCurile care sunt vîndute cu NT, chiar dacă după aceea utilizatorii aleg să șteargă NT și să pună Linux.
...Netscape7
Ca urmare a lobby-ului dl-ui Raymond în sprijinul software-ului ``free'', compania Netscape a decis să facă publice sursele celebrului lor browser de web, devenind astfel cel mai important (din punct de vedere economic) susținător al modelului open-source.
... 19958
Studiul din 1995 este disponibil din pagina de web de la GNU.