% Linux Installation and Getting Started    -*- TeX -*-
% design.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@metalab.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\section{Zasnova in filozofija Linuxa}
%\markboth{Uvod v Linux}{Zasnova in filozofija Linuxa}
\namedlabel{sec-intro-design}{Zasnova in filozofija Linuxa}

Novi uporabniki imajo pogosto napačne predstave in pričakovanja o
Linuxu.  Pomembno je razumeti filozofijo in zasnovo Linuxa, če ga
želite uporabljati učinkovito.  Začeli bomo z opisom, kako Linux
\emph{ni} zasnovan.

V komercialnih razvijalskih hišah Unixa se celoten sistem razvija s
strogo politiko zagotavljanja kvalitete, ki izkorišča sisteme za
nadzor izvorne kode in popravkov, dokumentacijo, in postopke za
poročilo in odpravo hroščev.  Razvijalci najbrž ne bodo dodajali
lastnosti ali spreminjali poglavitnih delov kode zaradi muhavosti.
Spremembo morajo upravičiti kot odgovor na poročilo o hrošču in
zaporedno >>prijaviti<< vse spremembe nadzornemu sistemu izvorne kode,
tako da lahko po potrebi razveljavijo spremembe.  Vsakemu razvijalcu
je dodeljen eden ali več delov kode sistema in le ta razvijalec lahko
spreminja te dele kode, ko je ta >>v delu<< (se pravi, ko je koda pod
njegovim nadzorom).

V tej organizacijski shemi oddelek za zagotovitev kakovosti izvaja
temeljite preizkuse vsake nove različice operacijskega sistema in
poroča o hroščih.  Razvijalec odpravi odkrite hrošče.  Pred izdajo
naslednje različice se uporablja zapleten sistem statistične analize,
ki zagotavlja, da je določen odstotek hroščev odpravljen in da
operacijski sistem v celoti zadošča določenim kriterijem za izdajo.

Programsko podjetje mora imeti seveda kvantitativni dokaz, da je
naslednja različica operacijskega sistema pripravljena za prodajo;
odtod zbiranje podatkov in statistično analiziranje obnašanja
operacijskega sistema.  Razvoj komercialnega sistema Unix je ogromen
posel, pogosto dovolj velik, da zaposli na stotine, če ne tisoče,
programerjev, preizkuševalcev, tehničnih piscev in administrativnega
osebja.  Seveda noben komercialni proizvajalec Unixa ni povsem enak
drugemu, a to je splošna slika.

Model programskega razvoja za Linux zavrača celoten koncept
organiziranega razvoja, nadzornih sistemov izvorne kode,
strukturiranega poročanja o hroščih in statistične kontrole kvalitete.
Linux je, in bo verjetno vedno ostal, operacijski sistem hekerjev.  (Z
izrazom \emph{heker} (angl.\ hacker) mislimo mrzlično vnetega
programerja, ki uživa v izkoriščanju računalnikov in z njimi počne
zanimive stvari.  To je prvotna definicija tega izraza, za razliko od
drugega pomena \emph{hekerja} kot računalniškega falota ali
kriminalca.)

Za razvoj Linuxa ni odgovorna nobena organizacija.  Vsakdo z dovolj
znanja ima možnost pomagati pri razvoju in razhroščevanju napak jedra,
prenosu novega programja, pisanju dokumentacije in pomoči novim
uporabnikom.  Skupnost Linuxa najpogosteje komunicira prek
elektronskih spiskov in novičarskih skupin Useneta.  Pri razvojnih
naporih so se uveljavili nekateri dogovori.  Vsakdo, ki želi, da bo
njegova koda vključena v >>uradno<< jedro, jo pošlje Linusu Torvaldsu.
Ta jo preizkusi in jo vključi v jedro, če ne kvari obstoječih zadev
ali ne nasprotuje celotni zasnovi sistema.

Sam sistem je zasnovan z uporabo odprtega pristopa in z mislijo na
dodatke.  Vrsta novih dodatkov in kritičnih sprememb sistema se je v
zadnjem času zmanjšala, in splošno pravilo je, da se nova različica
jedra objavi vsakih nekaj tednov.  Seveda je to približna številka.
Kriteriji za novo različico vključujejo število odpravljenih hroščev,
povratne informacije uporabnikov, ki preizkušajo pred-izdane različice
kode, in količino spanca, ki jo je ta teden užil Linus Torvalds.

Dejstvo je, da med dvema izdajama niso odpravljeni vsi hrošči niti
niso rešene vse težave.  Če se zdi, da je izdaja očiščena kritičnih
ali ponavljajočih se hroščev, se reče, da je stabilna, in izdana je
nova različica.  Namen, skrit za razvojem Linuxa, ni izdaja popolne
kode brez hroščev, temveč razvoj proste izvedbe Unixa.  Linux je
namenjen razvijalcem bolj kot komurkoli drugemu.

Vsakdo, ki ima nov dodatek ali programsko aplikacijo, jo v splošnem
objavi kot \textbf{različico alfa} -- se pravi testno različico za
tiste pogumne uporabnike, ki bi radi izbrskali težave v prvotni kodi.
Ker skupnost Linuxa v veliki meri temelji na Internetu, se programje
alfa navadno postavi na eno ali več mest za FTP paketov za Linux
(glejte dodatek~\ref{app-ftplist-num}), sporočilo o dostopnosti in
načinu preizkušanja pa se objavi v eni od novičarskih skupin Useneta o
Linuxu.  Uporabniki, ki vzamejo in preizkusijo programje $\alpha$,
lahko avtorju po pošti sporočijo svoje izide, popravke napak in
vprašanja.

Ko se odpravijo prvotni hrošči, izvorna koda vstopi v stanje
\textbf{preizkusa beta}, v katerem se navadno pojmuje za stabilno,
a ne za popolno.  Deluje, a vse lastnosti morda še niso prisotne.
Programje gre lahko tudi direktno v zadnje stanje, kjer se predpostavi
njegova kompletnost in uporabnost.

Zavedajte se, da so to le dogovori -- ne pravila.  Nekateri razvijalci
morda tako zaupajo v svoje programje, da se odločijo, da različici
$\alpha$ in $\beta$ nista potrebni.  Takšne odločitve vedno sprejema
razvijalec.

Morda vas preseneča, kako lahko nestrukturiran sistem prostovoljcev,
ki preizkušajo in razhroščujejo celoten sistem Unix, sploh kaj naredi.
Kot se je izkazalo, je to eden od najbolj učinkovitih in motiviranih
razvojnih timov, kar se jih je zbralo.  Celotno jedro Linuxa je
napisano \emph{iz ničesar}, brez kode lastniškega izvora.  Za prenos
vsega prostega programja pod soncem na Linux je potrebnega ogromno
dela.  Knjižnice so napisane in prenesene, datotečni sistemi so
razviti in strojni gonilniki napisani za veliko priljubljenih naprav
-- vse zaradi dela prostovoljcev.

Programje za Linux se v splošnem izdaja kot \textbf{distribucija},
nabor vnaprej pripravljenega programja, ki sestavlja celoten sistem.
Za večino uporabnikov bi bilo težko zgraditi popoln sistem od začetka,
začenši z jedrom, dodajajoč pripomočke in nameščujoč vse potrebno
programje na roko.  Namesto tega je dostopnih veliko distribucij
programja, ki vključujejo vse potrebno za namestitev in pogon
popolnega sistema.  Ni ene same, standardne distribucije -- več jih
je, in vsaka ima svoje prednosti in pomanjkljivosti.  Namestitev
različnih distribucij Linuxa opisujemo, začenši s
stranjo~\pageref{sec-install-distributions}.
