Ce este Linux? – partea a II-a
Aceasta este partea a II-a a postului Ce este Linux?.
O să îmi spui acum că tu nu îți schimbi singur farurile de la mașină și că dacă ai avea vreodată nevoie să îți schimbi ceva ai merge la un specialist și ai plăti cât trebuie și ai face toate formalitățile. Și poate că ai avea dreptate. Gândește-te că în lume există mulți oameni care nu se mulțumesc cu mașinile așa cum vin ele din fabrică și simt nevoia să le modifice după bunul lor plac. Așa e și cu programele.
Ai fost vreodată cu unul dintre trenulețele acelea rutiere care sunt puse la dispoziția turiștilor pentru a face tururi ale unor orașe? Trenulețele acelea sunt făcute din piese care la origine erau destinate unor mașini sau altor dispozitive. Dacă producătorul mașinii pe al cărei șasiu e construit trenulețul nu ar fi permis modificarea șasiului decât după semnarea unui acord scris și plata unor sume de bani, în mod sigur ai fi făcut un tur turistic pe jos. Ceea ce poate că nu ar fi fost așa ce rău cum pare.
Softul liber este distribuit întotdeauna împreună cu codul sursă. Distribuirea codului sursă permite oricui să modifice respectivul cod sursă și să îl compileze, rezultând un program "făcut la comandă". De câte ori nu ți-ai dorit ca programul tău preferat de ascultat muzică să aibă unele dintre facilitățile pe care le au unele dintre programele concurente? Dacă ambele programe ar fi libere, sau open source, s-ar putea foarte ușor include funcționalitatea pe care ți-o dorești în programul tău (nu zic că ai putea chiar tu, pentru asta e nevoie de cunoștințe de programare).
Posibilitatea asta de a lua un program și de a-l modifica conform propriilor dorințe a permis ca programele open source să fie foarte portabile (o să folosesc alternativ termenii open source și software liber ca să te obișnuiesc cu ambele variante). Să îți explic. Din cauza naturii sale deschise (open source) Linuxul a ajuns să fie instalat pe tot felul de dispozitive cum ar fi console de jocuri, routere, computere de bord din mașini, playere mp3 sau telefoane mobile. Portabilitatea aceasta aduce avantajul prețurilor mai mici. Până acum o companie producătoare de telefoane mobile trebuia să creeze un nou model de telefon mobil și apoi să țină și un departament întreg (și destul de consistent) de oameni care să scrie și să actualizeze soft-ul care funcționează pe respectivul telefon. Odată cu apariția unor soft-uri libere cum este Android (bazat pe linux), compania poate să mențină un departament mult mai mic care să se ocupe de softul respectivului telefon mobil. Departament mai mic = economii mai mari = preț mai mic al telefonului. Capisci?
Hai să mai studiem un caz. Hai să presupunem că fiecare dintre noi doi este conducătorul unei țări. Țările noastre sunt prietene și fac tot felul de schimburi comerciale între ele, inclusiv de programe. Sistemul de operare pe care țara ta îl folosește este dezvoltat de o firmă din țara mea și licențiat țării tale. Toate agențiile de stat din țara ta folosesc sistemul de operare dezvoltat de țara mea. Într-o zi noi doi ne certăm și de decidem să ne războim unul cu celălalt, așa că tu îți scoți marea ta armată la luptă. Dar toate computerele pe care se bazează armata ta rulează sistemul de operare dezvoltat de țara mea, iar eu am impus firmei care îl dezvoltă să includă în fiecare versiune a sistemului de operare un buton ascuns care odată acționat imobilizează calculatorul pe care rulează respectivul sistem de operare. Eu decid acționarea respectivului buton și dintr-o dată toată mașina ta de război se oprește în loc. De fapt toată țara ta se oprește în loc. Nu mai funcționează sistemul bancar, apărarea, sistemul medical sau educațional, telefoanele, internetul și tot ce ține de telecomunicații. Cu alte cuvinte, te-am trimis în evul mediu. Acum pot să vin liniștit și să ocup complet țara ta. De ce inginerii tăi nu și-au dat seama că există un buton ascuns în fiecare sistem de operare? Păi din cauză că nu au acces la codul sursă al sistemului de operare, acesta fiind un sistem de operare proprietar (sau closed source) și nu unul liber (sau open source).
Sunt sigur că nu ai dori o asemenea soartă țării tale, așa că ai încerca să dezvolți propriul tău sistem de operare closed source. Dar țara ta este mică și deci nu ai nici pe departe numărul de programatori pe care îi are țara mea, în consecință sistemul de operare pe care tu o să îl produci este mult mult mai slab decât al meu. Acum tu poți încerca să te aperi, dar cum eu am mai mulți programatori și sistemul tău de operare este mai slab decât al meu, nu va dura mult timp până când inginerii mei vor reuși să spargă sistemul tău de operare și ajungem din nou la cazul de mai sus.
Hai să încercăm să ne imaginăm situația asta cu un sistem de operare deschis, hai să alegem linuxul pentru exemplul acesta (există și alte sisteme de operare open source, principiul e același și pentru celelalte). Din cauză că tu ai acces la codul sursă al sistemului de operare poți să te asiguri (mai bine zis, țara ta poate să se asigure) că nu există niciun buton ascuns care îl imobilizează. Dar țara ta nu are foarte mulți programatori. Nicio problemă. Natura deschisă a Linuxului permite ca oameni din întreaga lume să poată să lucreze la dezvoltarea Linuxului. Și uite cum de la o puțini programatori care să lucreze pentru tine, ai ajuns la programatorii din întreaga lume. Sistemul tău de operare va fi la fel de bun, sau mai bun decât sistemul de operare al țării mele. Cu alte cuvinte, în cazul unui conflict ai avea aceleași șanse ca și mine de a-l câștiga.
Specializarea
Ușurința modificării unui sistem de operare liber ca și Linuxul permite oamenilor să creeze foarte multe variante ale Linuxului numite și distribuții. E foarte important să înțelegi ce termenul de distribuție ca să eviți să devii confuz în momentul în care te decizi să încerci să folosești Linux. Din cauza faptului că totul este liber, oamenii pot să aleagă cum vor ca Linuxul lor să arate, să funcționeze și ce filozofie să aibă. Ansamblul de programe, setări și idei se numește distribuție. Cu alte cuvinte dacă eu iau nucleul Linuxului, îi adaug o serie de programe alese după un criteriu pot să îmi creez propria distribuție de Linux. Deși există unele diferențe între distribuțiile de Linux, toate sunt bazate pe același nucleu de Linux și toate seamănă (destul de mult) între ele. Cu alte cuvinte, dacă înveți să folosești o distribuție de Linux nu o să ai nicio problemă să treci la o altă distribuție de Linux. Și totuși de ce să nu facem o singură distribuție bună pentru orice?
Într-o lume ideală, cu putere nelimitată a calculatorului și cu utilizatori atotștiutori o distribuție unică ar fi răspunsul potrivit. Dar noi nu trăim într-o lume ideală. Linuxul în general e construit pe ideea modularității, adică e format din module care pot fi folosite sau nu, demontate sau nu. Hai să încercăm un exemplu! Crezi că un telefon mobil ar avea nevoie de modulele care îi spun cum să folosească cea mai nouă placă video de la Nvidia? Evindet că nu, telefonul mobil nu are și nici nu o să aibă în curând respectiva placă video încorporată. Atunci de ce să conțină respectivele module? Adăugarea respectivelor module la distribuția de Linux de pe respectivul telefon mobil ar însemna consum mai mare de memorie, procesor și timp, pentru că sistemul de operare ar trebui să decidă dacă are nevoie de respectivul modul și să îl dezactivele de fiecare dată când folosești telefonul. ȘI operațiile acestea cer timp. Specializarea distribuțiilor ajută la îmbunătățirea vitezei calculatoarelor care rulează Linux. De asemenea micșorează necesitățile hardware ale respectivei distribuții.
Hai să mai încercăm un exemplu! Internetul e bazat pe servere care nu sunt altceva decât calculatoare specializate pe oferirea unui sau mai multor servicii. Prin servicii aici înțelegem găzduirea de siteuri, telefonie prin internet, email și multe altele. Numărul mare de utilizatori care folosesc respectivele servicii face ca, în medie, să fie foarte mare, aproape de 100%. Prezența interfeței grafice (partea unui sistem de operare care se ocupă cu crearea ferestrelor, crearea pointerului mouse-ului și a butoanelor) implică un efort de procesare din partea calculatorului. Să zicem că efortul este de aproximativ 10% din procesor (efortul real variază, dar pentru simplitatea exemplului am ales numărul acesta). Asta înseamnă că un server care găzduiește un site și teoretic poate susține 100 de vizitatori simultan (siteuri ca facebook.com au mii de vizitatori simultan), din cauza interfeței grafice, va susține doar 90 de vizitatori simultan. Astfel, ca să poți susține cei încă 10 vizitatori de care mai ai nevoie pentru a ajunge la 100, ar trebui ori să mai cumperi un server care să facă aceeași treabă, ori să îmbunătățești hardware serverul pe care îl ai acum. Oricare dintre variante necesită bani. În cazul unei firme cu multe servere și mulți utilizatori simultan, sumele de bani necesare devin foarte mari. Specializarea Linuxului permite ca un server care rulează Linux să nu aibă interfață grafică și deci să nu folosească cei 10% din procesor, în consecință susținând 100 de vizitori fără nicio investiție în plus. Nu te întreba cum arată Linuxul fără interfață grafică, o să ajungem și la aia mai încolo. Important pentru tine acum e să înțelegi conceptul de specializare al unei distribuții și de ce este atât de benefic.