|rik S.Rejmond. Sobor i Bazar
---------------------------------------------------------------
Original perevoda raspolozhen na sajte "Urbansoft"
http://www.usoft.spb.ru/Graphic/Russian/FreeSoftware/baz.html
---------------------------------------------------------------
YA proanaliziroval odin iz uspeshnyh proektov otkrytoj razrabotki -
fetchmail, kotoryj ya ispol'zoval, chtoby proverit' nekotorye teoreticheskie
soobrazheniya o razrabotke programmnogo obespecheniya, voznikshie iz istorii
Linux'a. YA obsuzhdayu eti soobrazheniya s pozicij dvuh sovershenno raznyh stilej
razrabotki: modeli "sobora", rasprostranennoj v kommercheskom mire, ili
modeli "bazara", predlozhennoj v mire Linux'a. YA pokazal, chto eti modeli
proishodyat ot raznogo podhoda k zadache otladki programm.
1. Sobor i Bazar.
2. Problemy s peresylkoj pochty.
3. Kak vazhno imet' pol'zovatelej.
4. Vypuskat' relizy nuzhno chasto i rano.
5. Roza ili ne Roza?
6. Popclient prevrashchaetsya v Fetchmail.
7. Fetchmail rasshiryaetsya.
8. Neskol'ko urokov iz opyta raboty nad fetchmail'om.
9. Neobhodimye usloviya dlya razrabotki v stile bazara.
10. Social'nyj kontekst otkrytyh programm.
11. Blagodarnosti.
12. Dlya dal'nejshego chteniya.
13. |pilog: Netscape privetstvuet Bazar!
14. Versiya i istoriya izmenenij.
Linux - udivitel'naya sistema. Kto by mog podumat', chto neskol'ko tysyach
razrabotchikov, razbrosannyh po vsej planete i sotrudnichayushchih tol'ko cherez
Internet, smogut sozdat' operacionnuyu sistemu mirovogo klassa. YA vo vsyakom
sluchae tak ne dumal. K tomu vremeni kak Linux okazalas' v pole moego zreniya
v nachale 1993 goda, ya uzhe okolo desyati let uchastvoval v razrabotke UNIX'a i
otkrytyh programm. YA byl odnim iz pervyh uchastnikov GNU v seredine 80-h. YA
byl avtorom mnogih otkrytyh programm, i v chastnosti uchastvoval v razrabotke
nethack, Emacs VC i GUD modes, xlife, kotorye shiroko ispol'zuyutsya i po sej
den'. YA dumal, chto ya znayu, kak eto delaetsya.
Linux perevernula moi predstavleniya o tom, chto ya znayu. YA schital, chto
osnovnym v razrabotke nebol'shih instrumentov dlya UNIX'a yavlyaetsya ih bystroe
proektirovanie i evolyucioniruyushchee programmirovanie v techenie mnogih let. I v
to zhe vremya ya veril, chto po mere togo kak slozhnost' razrabotki
uvelichivaetsya, neobhodim bolee centralizovannyj podhod. YA veril, chto
razrabotka samogo slozhnogo programmnogo obespecheniya (naprimer, operacionnyh
sistem ili prosto bol'shih instrumentov, takih kak Emacs) dolzhna byt' podobna
stroitel'stvu sobora. Takie programmy dolzhny sozdavat'sya
masterami-individualistami ili nebol'shimi gruppami volshebnikov, rabotayushchimi
v strogoj izolyacii, ne dopuskaya prezhdevremennyh beta-versij.
Menya ochen' udivil stil' razrabotki Linusa Torval'dsa - chastyj vypusk
relizov, dostupnost' vseh ishodnyh tekstov i terpimost' k raznorodnym
programmam. |to sovsem nepohozhe na razmerennoe stroitel'stvo sobora,
soobshchestvo Linux skoree napominaet shumnyj bazar, s mnozhestvom razlichnyh
podhodov i napravlenij. To, chto na etom bazare rozhdaetsya soglasovannaya
stabil'naya operacionnaya sistema, kazhetsya chudom iz chudes.
Menya potryaslo, chto etot bazarnyj stil' rabotaet i rabotaet horosho. YA ne
tol'ko uchastvoval v razrabotke individual'nyh proektov, no takzhe pytalsya
ponyat', pochemu v mire Linux'a ne tol'ko ne voznikaet besporyadka, no naprotiv
on dvizhetsya vpered so skorost'yu, kotoroj stroiteli sobora mogut tol'ko
pozavidovat'.
K seredine 1996 goda mne pokazalos', chto ya nachal ponimat'. Sud'ba
predostavila mne prekrasnyj shans proverit' moyu teoriyu. |to byl proekt
razrabotki otkrytogo pgorammnogo obespecheniya, kotoryj ya soznatel'no provel v
bazarnom stile. Uspeh etogo proekta prevzoshel vse ozhidaniya.
V etoj stat'e ya rasskazhu vam istoriyu etogo proekta, i na ego primere pokazhu
neskol'ko pravil effektivnoj razrabotki svobodnogo programmnogo obespecheniya.
Ne vse eti priemy ya uznal iz mira Linux'a, no esli ya prav, oni pomogut
ponyat', pochemu soobshchestvo Linux'a proizvodit stol'ko poleznyh programm i
pomogut vam povysit' proizvoditel'nost'.
2. Problemy s peresylkoj pochty.
C 1993 goda ya zanimalsya resheniem tehnicheskih problem nebol'shogo svobodno
dostupnogo ISP, kotoryj nazyvalsya Chester Counter InterLink (CCIL). YA byl
odnim iz osnovatelej CCIL i napisal svoyu sobstvennuyu BBS (vy mozhete
proverit' eto, sdelav telnet na locke.ccil.org). Segodnya on podderzhivaet
pochti tri tysyachi pol'zovatelej na devyatnadcati liniyah. Blagodarya etoj
rabote, ya imel neogranichennyj dostup k Internet cherez liniyu 56K! Itak, mne
prishlos' ispol'zovat' pochtu Internet. Po nekotorym prichinam mne bylo slozhno
soedinit' CCIL i moyu domashnyuyu mashinu po protokolu SLIP. V konce koncov,
kogda mne eto udalos', okazalos', chto ochen' neudobno delat' telnet dlya
proverki svoej pochty. YA hotel, chtoby kogda pochta prihodila na snark, ya
poluchal ob etom soobshchenie i mog by obrabatyvat' ee lokal'nymi instrumentami.
Prostoj sendmail mne pomoch' ne mog, potomu chto moya domashnyaya mashina ne vsegda
nahoditsya v seti i ne imeet staticheskogo IP adresa. Mne nuzhna byla
programma, kotoraya by cherez SLIP soedinie zabirala moyu pochtu. YA znal, chto
takie veshchi sushchestvuyut, i bol'shinstvo iz nih ispol'zuet prostoj protokol POP
(Post Office Protocol). K tomu zhe v operacionnuyu sistemu BSD/OS na locke byl
vklyuchen POP3 server.
Mne nuzhen byl POP3 klient. Odnu takuyu programmu ya nashel cherez set' (na samom
dele ya nashel tri ili chetyre). Nekotoroe vremya ya ispol'zoval pop-perl, no v
nem otsutstvovala odna neobhodimaya vozmozhnost' : on ne umel vybirat' adresa
tak, chtoby mozhno bylo pravil'no otvechat' na pis'ma.
Problema zaklyuchalas' v sleduyushchem. Dopustim, chto kto-to po imeni 'joe'
prislal mne na locke pis'mo. Esli ya pytalsya otvetit' na nego, posle togo kak
zabral ego na snark, moj mailer pytalsya adresovat' ee nesushchestvuyushchemu joe na
snark. Ispravlyat' vruchnuyu '@ccil.org' bylo utomitel'no.
Nuzhnye mne vozmozhnosti byli ochevidny, no ni odin iz sushchestvuyushchih POP
klientov ne znal kak eto sdelat'. |to privodit nas k pervomu uroku:
1. Vse horoshie programmy poyavlyayutsya dlya lichnyh nuzhd razrabotchikov.
Neobhodimost' - mat' izobreteniya. Slishkom chasto programmisty rabotayut nad
programmami, iz kotoryh oni ne mogut izvlech' ni pol'zy ni udovol'stviya -
nichego krome deneg. No v mire Linux - vse po-drugomu, i eto ob流asnyaet
vysokoe kachestvo programm dlya Linux.
Vy dumaete, ya tut zhe nachal razrabatyvat' svoj POP3 klient, sorevnuyas' s uzhe
imeyushchimisya? Ni v koem sluchae! YA vnimatel'no osmotrel vse POP utility,
kotorye byli u menya pod rukoj, i sprosil sebya, kotoraya iz nih naibolee
sootvetstvuet moim trebovaniyam. Potomu chto
2. Horoshie programmisty znayut, chto mozhno napisat'; a velikie znayut, chto
mozhno perepisat'.
YA ne pretendoval na velikogo programmista, a popytalsya ego imitirovat'.
Harakternaya cherta velikih - eto ih len'. Oni znayut, chto sudyat ne po usiliyam,
a po rezul'tatam. Pochti vsegda legche nachat' s chego-to sdelannogo, chem s
nulya.
Linus Torval'ds, naprimer, ne pytalsya napisat' svoyu sistemu s nulya. On nachal
ispol'zovat' idei i ishodniki ot Minix, nebol'shoj UNIX-podobnoj sistemy dlya
386 mashin. Pochti ves' ishodnyj tekst Minix byl perepisan, odnako, on
posluzhil osnovoj dlya togo chto pozzhe stalo Linux'om.
Dejstvuya v tom zhe duhe, ya nachal iskat' sushchestvuyushchuyu POP utilitu, chtoby
ispol'zovat' ee kak osnovu dlya razrabotki.
V mire UNIX'a vsegda sushchestvovala tradiciya delat' ishodnye teksty otkrytymi
i druzhestvennymi k povtornomu ispol'zovaniyu koda. Imenno poetomu proekt GNU
vybral UNIX kak osnovnuyu operacionnuyu sistemu. Mir Linux'a polnost'yu perenyal
etu tradiciyu. Zdes' vy mozhete najti terabajty ishodnyh tekstov, i poetomu
shansov najti chto-nibud' podhodyashchee v mire Linux'a vyshe, chem gde by to ni
bylo.
Mne eto podoshlo. Vmeste s temi programmami, kotorye ya nashel ran'she, u menya
okazalis' devyat' kandidatov: fetchpop, PopTart, get-mail, gwpop, pimp, pop-
perl, popc, popmail i upop. Snachala ya ostanovilsya na fetchpop, avtorom
kotoroj yavlyaetsya Seung-Hong Oh. YA dobavil tuda moyu proceduru perepisyvaniya
zagolovka i drugie vozmozhnosti, kotorye avtor prinyal v versii 1.9
Neskol'kimi nedelyami pozzhe ya natknulsya na kod 'popclient' - programmu,
napisannuyu Karlom Harrisom - i obnaruzhil odnu problemu. Hotya u fetchpop byli
original'nye idei (naprimer, rezhim demona), no napisan on byl lyubitelem. Kod
Karla byl znachitel'no professional'nee, no ego programme nedostavalo
neskol'ko vazhnyh vozmozhnostej, v tom chisle i teh, kotorye ya realizoval dlya
fetchpop'a.
CHto delat'? Ostavit' vse kak est' ili nachat' zanovo? Esli by ya nachal zanovo
mne prishlos' by pozhertvovat' svoimi programmami radi bolee nadezhnoj osnovy
dlya razrabotki.
Samym sushchestvennym povodom dlya togo chtoby nachat' zanovo, byla podderzhka
neskol'kih protokolov. POP3 odin iz naibolee chasto ispol'zuemyh post-office
protokolov servera, odnako on daleko ne edinstvennyj. Fetchpop i drugie
podobnye programmy ne ispol'zuyut POP2, RPOP ili APOP, a u menya uzhe poyavilas'
mysl' ispol'zovat' IMAP - nedavno razrabotannyj, ochen' moshchnyj post - office
protokol.
3. "Dazhe esli vy ne planirovali vybrasyvat' pervuyu versiyu; vybrasyvaya ee, vy
vse ravno vyigryvaete." (Fred Bruks "The Mythical Man-Month", glava 11)
Drugimi slovami, kogda vy pervyj raz realizuete kakoelibo reshenie, vy chasto
ne ponimaete problemu do konca. Vo vtoroj raz vy uzhe nabiraete dostatochno
znanij, chtoby sdelat' eto pravil'no. Itak, esli vy hotite napisat'
chto-nibud' stoyashchee, luchshe hotya by odin raz nachat' vse zanovo.
YA skazal sebe, chto izmeneniya v fetchpop byli moej pervoj popytkoj. Itak, ya
reshil nachat' vse zanovo.
25 iyunya ya poslal nabor programm dlya popclient'a Karlu Harrisu i obnaruzhil,
chto on prakticheski poteryal interes k etoj rabote. Kod byl ne ochen'
akkuratnyj, i soderzhal neskol'ko oshibok. Mne prishlos' sdelat' mnogo
izmenenij, i my soglasilis', chto mne sleduet stat' vladel'cem programmy.
YA i ne zameitl, kak proekt nachal rasshiryat'sya. YA bol'she ne pisal programmy,
dopolnyayushchie popclient. YA stal rabotat' s celoj programmoj. V moej golove uzhe
kipeli idei o global'nyh izmeneniyah.
Esli kul'tura programmirovaniya privetstvuet razdelenie ishodnyh tekstov, to
eto samyj estestvennyj sposob razvitiya proekta. YA rukovodstvovalsya
sleduyushchim:
4. Pri pravil'nom otnoshenii interesnaya problema najdet vas sama.
Otnoshenie Karla Harrisa bol'she ne imelo znacheniya. On ponyal, chto :
5. Kogda vy teryaete interes k programme, vasha poslednyaya obyazannost' peredat'
ee kompetentnomu preemniku.
Karl i ya znali, chto nasha obshchaya cel' - poisk nailuchshego resheniya. Mne nuzhno
bylo tol'ko dokazat' svoyu kompetentnost'. Kak tol'ko ya eto sdelal, on bystro
predal mne vse polnomochiya. Nadeyus', chto kogda-nibud' ya postuplyu takzhe.
3. Kak vazhno imet' pol'zovatelej
Itak ya unasledoval popclient. No gorazdo vazhnee to, chto ya unasledoval
pol'zovatelej popclient'a. Imet' pol'zovatelej - eto zamechatel'no. Ne tol'ko
potomu chto eto oznachaet, chto vy predostavlyaete nuzhnuyu uslugu. Delo v tom,
chto pravil'no vospitannye pol'zovateli mogut stat' sotrudnikami.
Sil'naya tradiciya Unix'a, a osobenno Linux'a zaklyuchaetsya v tom, chto
bol'shinstvo pol'zovatelej yavlyayutsya hakerami. Tak kak ishodnyj tekst programm
dostupen, oni mogut stat' effektivnymi hakerami. |to mozhet znachitel'no
umen'shit' vremya otladki. Esli vy smozhete voodushevit' pol'zovatelej, oni
budut diagnostirovat' problemy, predlagat' resheniya i pomogat' uluchshit' kod
namnogo bystree, chem smozhete eto sdelat' vy.
6. Esli pol'zovateli budut vashimi sotrudnikami, to vam obespecheny uluchshenie
koda i effektivnaya otladka.
Sila etogo effekta chasto ne doocenivaetsya. Na samom dele vse my,
razrabotchiki mira otkrytyh sistem, sil'no nedoocenivali naskol'ko eto mozhet
povysit' chislo pol'zovatelej i umen'shit' slozhnost' sistemy, poka Linus
Torval'ds ne pokazal nam eto.
YA dejstvitel'no dumayu, chto naibolee znachitel'noe i rezul'tativnoe tvorenie
Linusa - eto ne sozdanie yadra Linux'a, a izobretenie modeli ego razrabotki.
Kogda ya podelilsya s nim svoim mneniem, on ulybnulsya i prosto povtoril to, o
chem chasto govoril: "YA prosto ochen' lenivyj chelovek, kotoromu nravitsya
poluchat' pol'zu ot togo, chto delayut drugie lyudi." Lenivyj, kak lisa, ili,
kak skazal by Robert Hejnlejn, slishkom lenivyj chtoby proigrat'.
Odin iz uspeshnyh metodov raboty v stile Linux'a mozhno bylo nablyudat' pri
razrabotke GNU Emacs Lisp - biblioteki i koda Lisp'a. V otlichie ot sobornogo
stilya, razrabotka yadra Emacs S , a takzhe mnogih drugih FSF instrumentov v
znachitel'noj stepeni upravlyalas' pol'zovatelyami. Vse ishodnye teksty byli
prepisany tri ili chetyre raza, prezhde chem prinyali svoyu okonchatel'nuyu formu.
Moej pervoj uspeshnoj programmoj, razrabotannoj v stile Linux'a, stal VC
rezhim Emacs'a. YA razrabotal ee s tremya lyud'mi, sotrudnichaya po e-mail'u. S
odnim iz nih ( eto Richard Stollmen - avtor Emacs i osnovatel' FSF ) ya
vstrechayus' i po sej den'. Razrabotka VC byla uspeshnoj, potomu chto v otlichie
ot Emacs, kod Emacs Lisp mozhet bystro projti cherez pokoleniya
release/test/improve.
Pri popytkah FSF legal'no vstroit' kod v GPL obnaruzhivaetsya neozhidannyj
storonnij effekt. Ispol'zovat' model' bazara dlya FSF slozhnee, tak kak
neobhodimo poluchat' copyright na kazhdye 20 strochek koda.
4. Vypuskat' relizy nuzhno chasto i rano
Rannie i chastye relizy - eto sushchestvennaya chast' modeli razrabotki Linux'a.
Ran'she bol'shinstvo razrabotchikov, vklyuchaya menya, schitali, chto eto plohaya ideya
dlya bol'shih proektov. V rannih versiyah vsegda ochen' mnogo oshibok, i nikto ne
hochet chtoby pol'zovateli poteryali terpenie.
Tak utverdilas' razrabotka v stile stroitel'stva sobora. Dlya togo chtoby
pol'zovateli videli kak mozhno men'she oshibok, vy vypuskaete reliz ne chashche,
chem raz v shest' mesyacev, a ostal'noe vremya mezhdu relizami uporno rabotaete
nad otladkoj. YAdro Emacs C razrabatyvalos' imenno takim sposobom, a
biblioteka Lisp'a razrabatyvalas' po-drugomu. Delo v tom, chto sushchestvuet
ochen' mnogo arhivov Lisp'a vne kontrolya FSF, gde kazhdyj mozhet najti novuyu
versiyu ishodnogo teksta, nezavisimo ot cikla relizov Emacs'a.
Naibolee vazhnyj iz etih arhivov - arhiv v shtate Ogajo, perenyal mnogie cherty
segodnyashnih arhivov Linux'a. Primerno v 1992 godu ya sdelal pervuyu ser'eznuyu
popytku dobavit' ishodniki etogo arhiva v oficial'nuyu Emacs Lisp biblioteku.
Mne prishlos' vstupit' v politicheskuyu bor'bu, kotoraya zakonchilas' neudachno.
Godom pozzhe, po mere togo kak Linux stanovilas' vse bolee rasprostranennoj
sistemoj, stalo yasno, chto hotya idei razrabotki etoj sistemy otlichayutsya ot
tradicionnyh, v nih ochen' mnogo zdravogo smysla. Provodimaya Linusom politika
otkrytoj razrabotki byla sovershenno protivopolozhna stilyu stroitel'stva
sobora. Poyavilis' arhivy sunsite i tsx-11, mnogochislennye distribucii
Linux'a, i vse eto pri chastyh relizah yadra sistemy.
Linus sotrudnichal so svoimi pol'zovatelyami naibolee effektivnym sposobom.
7. Vypuskajte rannie relizy. vypuskajte chastye relizy. Slushajte svoih
pol'zovatelej.
Izobretenie Linusa zaklyuchaetsya ne tol'ko v tom, chto on delal (nechto pohozhee
dolgoe vremya bylo tradiciej mira UNIX'a). Udivlyaet uroven' intensivnosti i
slozhnosti togo, chto on razrabatyval. V nachale raboty (okolo 1991 goda)
byvali sluchai, kogda novaya versiya yadra vyhodila chashche, chem odin raz v den'.
|to rabotalo, potomu chto Linus prizyval svoih pol'zovatelej k sotrudnichestvu
cherez Internet, aktivnee, chem kto-libo drugoj.
No kak eto rabotalo? Bylo li tam chto-nibud', chto ya mog povtorit' ili delo
bylo v genial'nosti Linusa Torval'dsa?
YA tak ne dumal. Linus - otlichnyj hakker (kto iz nas smozhet polnost'yu
razrabotat' kachestvennoe yadro operacionnoj sistemy?), no Linux ne yavlyaetsya
principial'nym skachkom vpered. Linus - eto ne genij razrabotki, takoj kak,
naprimer, Richard Stolmen ili Dzhejms Gosling (NeWS ili Java). Linus kazhetsya
mne skoree geniem inzhenernogo masterstva, obladayushchim shestym chuvstvom
izbegat' oshibki, dovodit' razrabotku do konca i s minimal'nym usiliem
nahodit' kratchajshij put' iz tochki A v tochku V.
Postavlennyj takim obrazom vopros otvechaet sam na sebya. Sohranyaya postoyannym
otnoshenie chisla hakerov k chislu pol'zovatelej, Linus poluchal i stimul i
voznagrazhdenie. Stimul - udovletvorennost' svoimi dejstviyami, voznagrazhdenie
- ezhednevnoe uluchshenie svoej raboty.
Linus stremilsya maksimizirovat' kolichestvo cheloveko-chasov, zatrachennyh na
otladku i razrabotku, dazhe cenoj nestabil'nosti, esli kakaya-to oshibka
okazhetsya trudno ustranimoj. Linus schital chto:
8. Pri dostatochnom kolichestve beta-testerov i sotrudnikov, pochti lyubaya
problema budet bystro obnaruzhena i okazhetsya dlya kogo-to ochevidnoj.
Ili menee formal'no: "Pri dostatochnom kolichestve glaz, oshibki vyplyvayut na
poverhnost'." YA nazovu eto - zakonom Linusa.
Moe sobstvennoe utverzhdenie sostoit v tom, chto vsyakaya problema yavlyaetsya dlya
kogo-to prozrachnoj. Odnako po mneniyu Linusa, chelovek, kotoryj ponimaet
problemu i nahodit ee reshenie, ne vsegda pervyj ee obnaruzhivaet. "Kto-to
nahodit problemu", - govorit on, - "A kto-to eshche ee ponimaet. I ya chasto
zamechayu, chto poisk trebuet naibol'shego navyka." Sut' zaklyuchaetsya v tom, chto
i to i drugoe dolzhno proishodit' bystro.
Sushchestvennaya raznica zdes' v razlichii sobornogo i bazarnogo stilya. S tochki
zreniya sobornogo stilya programmirovaniya, oshibki - hitrye, kovarnye i
strashnye yavleniya. Mesyacy raboty, ne imeyushchej otnosheniya k razrabotke, uhodyat
na to, chtoby vylovit' vse oshibki. Takim obrazom my poluchaem dlitel'nye
promezhutki mezhdu relizami i razocharovanie, kogda stol' dolgozhdannye relizy
okazyvayutsya daleki ot sovershenstva.
S drugoj storony pri rabote v stile bazara, vy ne schitaete oshibki
nepreodolimym prepyatstviem. Po krajnej mere oni pokazhutsya takimi tysyacham
pol'zovatelyam, rabotayushchim nad kazhdym novym relizom. Vy vypuskaete relizy
chasto, chtoby poluchit' bol'she ispravlenij.
Vot i vse. Esli zakon Linusa neveren, to pri razrabotke slozhnoj sistemy,
takoj kak yadro Linux'a, mnogimi pol'zovatelyami, v nekotoryj moment vremeni,
sistema razvalitsya iz-za plohogo vzaimodejstviya i nedosmotrennyh ser'eznyh
oshibkah. S drugoj storony, esli etot zakon veren, to on ob流asnyaet
otnostitel'noe otsutstvie grubyh oshibok.
Vozmozhno, eto ne tak udivitel'no, kak kazhetsya. Neskol'ko let nazad sociologi
otkryli, chto srednee mnenie lyudej, v ravnoj stepeni yavlyayushchihsya libo
ekspertami, libo diletantami bolee verno, chem mnenie odnogo sluchajno
vybrannogo nablyudatelya. |to nazyvaetsya "effektom Delphi". Linus pokazal, chto
eto primenimo dazhe v otladke operacionnoj sistemy, - effekt Delphi mozhet
umen'shit' slozhnost' proekta dazhe na urovne razrabotki yadra OS.
YA blagodaren Dzheffu Datki (Jeff Dutky), za to chto on pokazal mne, kak mozhno
perefrazirovat' zakon Linusa: "Otladka mozhet byt' parallel'noj." Dzheff
schitaet, chto hotya vo vremya otladki lyudyam nuzhno obshchat'sya drug s drugom s
pomoshch'yu kakogo-nibud' koordinatora-razrabotchika, eto ne trebuet ser'eznoj
koordinacii mezhdu testerami. |to znachitel'no umen'shaet izderzhki pri
dobavlenii testerov.
Na samom dele teoreticheskaya poterya effektivnosti ot togo, chto chast' raboty
po otladke dubliruetsya, v mire Linux'a ochen' nebol'shaya. |ffekt ot chastogo
vypuska relizov umen'shaet veroyatnost' dvojnoj raboty, tak kak oshibki
fiksiruyutsya ochen' bystro.
Privedem zamechanie Bruksa:" Obshchaya stoimost' podderzhki shiroko ispol'zuemoj
programmy - eto ne men'she 40% ot stoimosti ee razrabotki." Udivitel'no, chto
eta stoimost' zavisit ot chisla pol'zovatelej. Bol'she pol'zovatelej najdut
bol'she oshibok.
Bol'she pol'zovatelej najdut bol'she oshibok, potomu chto novye pol'zovateli
dobavlyayut novye sposoby otladki programmy. |tot effekt usilivaetsya, kogda
pol'zovateli yavlyayutsya sotrudnikami. Kazhdyj iz nih podhodit k probleme
vyyavleniya oshibok pod svoim sobstvennym uglom. |ffekt Delphi v etom sluchae
horosho rabotaet.
Itak, esli my dobavlyaem bol'she beta-testerov, to s tochki zreniya
razrabotchikov, my ne uvelichivaem slozhnost' vozmozhnoj ser'eznoj oshibki, no
uvelichivaem veroyatnost', chto kto-to etu oshibku obnaruzhit, i dlya nego ona
okazhetsya prozrachnoj.
Na samom dele v yadre Linux'a sushchestvuyut ser'eznye oshibki. Odnako, numeraciya
yadra Linux'a proizvoditsya takim obrazom, chto potencial'nye pol'zovateli
mogut vybrat': ispol'zovat' stabil'nuyu versiyu ili risknut' i rabotat' s
novymi osobennostyami poslednej versii. |ta taktika eshche ne sovsem
podderzhivaetsya bol'shinstvom hakkerov Linux, hotya vozmozhnost' vybora delaet
ee privlekatel'noj.
Izuchaya rabotu Linusa i formiruya moyu sobstvennuyu teoriyu o tom, pochemu Linux
imeet takoj uspeh, ya reshil proverit' svoi izmyshleniya na moem novom,
znachitel'no menee slozhnom proekte. Snachala ya reorganizoval i uprostil
popclient. Realizaciya Karla Harrisa byla neplohoj, odnako mnogo S -
programmistov nahodilo v nej massu slozhnyh i nenuzhnyh veshchej. Kod schitalsya
central'noj chast'yu, a struktury dannyh byli prosto podderzhkoj koda. V
rezul'tate kod byl horosh, no dizajn struktur dannyh po vysokim standartam
hakkera, programmiruyushchego na LISP'e, byl po men'shej mere uzhasnym.
Odnako, u menya byla drugaya cel', otlichnaya ot uluchsheniya koda i organizacii
dannyh. Mne bylo nuzhno polnoe ponimanie togo, chto ya delayu. Soglasites', ne
ochen'-to zdorovo otvechat' za ispravlenie oshibok v programme, kotoruyu ty ne
ponimaesh'.
V techenie pervogo mesyaca, ya prosto sledoval dizajnu Karla Harrisa. Pervym
izmeneniem, kotoroe ya sdelal stala podderzhka IMAP-protokola. YA realizoval
eto, reorganizovav mashinnye protokoly v obshchij drajver i tri tablicy metodov
(dlya POP2, POP3 i IMAP). |to i predydushchie izmeneniya prodemonstrirovali obshchij
princip, kotoryj sleduet pomnit' horoshemu programmistu, osobenno tem kto
pol'zuetsya S - podobnymi yazykami:
9. Horoshie struktury dannyh i plohoj kod rabotayut neskol'ko luchshe, chem
horoshij kod i plohie dannye.
Bruks Glava 9: "Esli vy pokazhete mne kod i skroete struktury dannyh, ya
nichego ne pojmu v vashej programme. Odnako, esli vy pokazhete mne struktury
dannyh, kod skoree vsego ne ponadobitsya. On budet ocheviden. " Proshlo shest'
mesyacev, i ya nachal podumyvat' ob izmenenii imeni - eto byl uzhe ne prosto
popclient. Odnako, ya kolebalsya,potomu chto v dizajne ne bylo nichego
principial'no novogo. Dlya unikal'nosti moej versii popclient'a eshche ochen'
mnogogo ne hvatalo.
Vse znachitel'no izmenilos', kogda fetchmail nauchilsya napravlyat' pochtu v SMTP
port. Nastupil den', kogda ya prishel k etomu. YA uzhe govoril, chto ya reshil
ispol'zovat' etot proekt dlya proverki moej teorii o tom, chto dejstviya Linusa
Torval'dsa byli pravil'nymi. Vy sprosite, kak ya delal eto? YA ispol'zoval dlya
etogo sleduyushchie sposoby:
1. YA chasto vypuskal relizy( ne rezhe chem kazhdye 10 dnej, a vo vremya periodov
intensivnoj razrabotki kazhdyj den'.)
2. YA uvelichil spisok beta testerov, dobaviv k nemu kazhdogo, kto
kontaktiroval so mnoj na temu fetchmail'a.
3. Kazhdyj raz kogda ya delal reliz, ya rassylal ob流avleniya beta-testeram,
priglashaya lyudej aktivno sotrudnichat'.
4. YA slushal svoih beta-testerov i podderzhival s nimi obratnuyu svyaz'.
|ffekt ot etih prostyh dejstvij byl nezamedlitel'nym. S samogo nachala
proekta ya poluchal otchety ob oshibkah, za kotorye razrabotchikov sledovalo by
ubit'. CHasto k etim otchetam prilagalis' elegantnye resheniya. YA poluchal
kritiku, ya poluchal interesnuyu pochtu, ya poluchal ostroumnye resheniya. Vot k
chemu eto privelo:
10. Esli vy otnosites' k vashim beta-testeram kak k samomu cennomu resursu,
ochen' skoro oni stanut vashim samym cennym resursom.
Ochen' interesno bylo nablyudat' za uvelicheniem spiska beta-testerov - druzej
feetchmail'a. Na vremya napisaniya v nem bylo 249 chlenov, i kazhduyu nedelyu k
nim dobavlyalis' dva-tri cheloveka.
V mae 1997 goda spisok nachal teryat' svoih chlenov po ochen' interesnoj
prichine. Lyudi stali otkazyvat'sya ot podpiski, potomu chto fetchmail rabotal
dlya nih nastol'ko horosho, chto neobhodimost' dorabotki koda otpala.
6. Popclient prevrashchaetsya v Fetchmail.
Vse reshitel'no izmenilos', kogda Harri Hochhejzer prines mne nabrosok
ishodnogo teksta dlya pochty v SMTP port klientskoj mashiny. YA srazu ponyal, chto
nadezhnaya realizaciya etoj osobennosti sdelaet drugie rezhimy dostavki
prakticheski nenuzhnymi.
Razmyshlyaya ob SMTP forwarding, ya ponyal, chto popclient mozhet delat' ochen'
mnogo veshchej. YA razrabotal transportnogo pochtovogo agenta (mail transport
agent) i agenta lokal'noj dostavki (local delivery agent). Ispol'zuya SMTP
forwarding, ot MDA mozhno bylo izbavit'sya sovsem i ispol'zovat' chistyj MTA,
dostavlyaya pochtu drugim programmam primerno tak zhe, kak eto delaet sendmail.
Zachem nuzhna vsya eta putanica s konfigurirovaniem agenta pochtovoj dostavki
ili s ustanovleniem na pochtovyj yashchik lock-and-append, esli 25-yj port pochti
navernyaka nahoditsya na kazhdoj platforme s podderzhkoj TCP/IP ?
Otsyuda mozhno izvlech' neskol'ko urokov. Vo-pervyh ideya ob SMTP-forwarding
byla glavnym voznagrazhdeniem, kotoroe ya poluchil za to, chto pytalsya
vosproizvesti metody Linusa. Pol'zovateli podkinuli mne etu ideyu i vse, chto
mne ostavalos' sdelat' - eto ponyat' vyvody.
11.Inogda ispol'zovat' idei pol'zovatelej luchshe, chem ispol'zovat' svoi idei.
Interesno, chto chem bol'she vy soznaete, skol'kim vy obyazany drugim lyudyam, tem
bol'she lyudej schitayut, chto programma napisana vami ot nachala do konca. |to
osobenno zametno u Linusa. (Kogda ya chital etu stat'yu na konferencii po
Perl'u v avguste 1997 goda, Larry Wall sidel na pervom ryadu. Kak tol'ko ya
proiznes vyshenapisannye stroki, on voskliknul:" Skazhi, skazhi im, brat!". Vse
v zale zasmeyalis', potomu chto znali, chto on tozhe rabotal nad sozdaniem
Perl'a.)
Posle neskol'kih nedel' raboty nad proektom v takom duhe, ya nachal
chuvstvovat' gordost' ne tol'ko pered svoimi pol'zovatelyami, no i pered
ostal'nymi lyud'mi, kotorye uznavali obo mne. YA snova i snova smotrel na svoyu
pochtu i udivlyalsya, neuzheli, moya zhizn' nastol'ko stoyashchaya.
Odnako, sushchestvuyut bolee fundamental'nye uroki, kotorye ne imeyut otnosheniya k
politike, zato imeyut otnoshenie k obshchemu stilyu razrabotki.
12. CHasto samye udivitel'nye resheniya prihodyat ot ponimaya togo, chto
postanovka zadachi byla nepravil'noj.
YA pytalsya reshit' problemu, razrabatyvaya popclient kak kombinirovannyj
MTA/MDA co vsevozmozhnymi rezhimami lokal'noj dostavki pochty. Razrabotku
fetchmail'a trebovalos' peresmotret' s pozicij chistogo MTA.
Kogda vo vremya razrabotki programmy vy natykaetes' na prepyatstvie, kogda vam
prihoditsya ser'ezno razmyshlyat' nad sleduyushchim shagom, samoe vremya podumat': no
ne nad tem pravil'nyj li vy poluchili otvet, a nad tem pravil'nyj li vy
postavili vopros. Vozmozhno zadachu sleduet pereformulirovat'.
Itak, ya pereformuliroval svoyu problemu. Ochevidno, chto nuzhno bylo (1)dobavit'
podderzhku SMTP forwarding v rodovoj drajver,(2) sdelat' eto rezhimom po
umolchaniyu, (3)vybrosit' vse ostal'nye rezhimy dostavki, osobenno vozmozhnosti
dostavki v fajl i dostavki v standartnyj vyhodnoj potok.
Nekotore vremya ya ne reshalsya delat' shag 3, chtoby ne podvodit' pol'zovatelej,
zavisyashchih ot al'ternativnyh metodov dostavki. Teoreticheski, chtoby poluchit'
tot zhe samyj effekt oni mogli pereklyuchit'sya na ispol'zovanie .forward fajlov
ili ih ne sendmail'ovskie ekvivalenty. Prakticheski, takoj perehod mog
vyzvat' problemy.
Odnako, kogda ya reshilsya na etot shag, on prines mnogo pol'zy. Znachitel'naya
chast' koda drajvera ischezla, konfiguraciya zametno uprostilas',stalo ne nuzhno
zabotit'sya ob MDA, pol'zovatel'skom mailbox'e, podderzhke blokirovki fajlov
operacionnoj sistemoj.
K tomu zhe ischez edinstvennyj sposob poteryat' pochtu. Esli u vas opredelena
dostavka pochty v fajl, a disk okazyvaetsya perepolnennym, to pochtu vy
teryaete. |to ne mozhet sluchit'sya pri SMTP forwarding, tak kak SMTP listener
ne vernet OK, do teh por poka soobshchenie ne budet dostavleno ili otlozheno dlya
bolee pozdnej dostavki.
Takzhe uluchshilas' proizvoditel'nost' ( hotya pri edinichnom zapuske vy by etogo
ne zametili). Drugoe neznachitel'noe uluchshenie zaklyuchalos' v tom, chto
spravochnaya sistema (manual page) stala koroche.
Pozzhe, mne prishlos' dobavit' dostavku cherez lokal'nyj MDA opredelennyj
pol'zovatelem, dlya togo chtoby spravit'sya s nekotorymi situaciyami svyazannymi
s dinamicheskim SLIP'om. Odnako, ya nashel dlya etogo bolee prostoj sposob.
Kakoj zhe iz etogo mozhno sdelat' vyvod? Ne kolebajtes' vybrasyvat' ustarevshie
osobennosti, esli vy mozhete sdelat' eto bez poteri effektivnosti. Antuan de
Sent- |kzyuperi - chelovek, kotoryj byl letchikom i aviakonstruktorom, skazal:
13. Sovershenstvo v razrabotke dostigaetsya ne togda, kogda nechego dobavit', a
togda kogda nechego ubrat'.
Esli vash kod stanovitsya odnovremenno i luchshe i proshche, vy postupaete
pravil'no. V processe razrabotki fetchmail priobrel svoe sobstvennoe lico,
otlichnoe ot starogo popclient'a.
Nastupilo vremya dlya smeny imeni. Novyj dizajn bol'she pohodil na dvojstvennyj
sendmail, chem staryj popclient. Itak, cherez dva mesyaca ya pereimenoval ego v
fetchmail.
7. Fetchmail rasshiryaetsya.
V rabote nad etoj programmoj ya ispol'zoval mnogo izyashchnyh novovvedenij.
Programma rabotala horosho, potomu chto ya ispol'zoval ee kazhdyj den', i chasto
prislushivalsya k moim beta-testeram. YA vdrug osoznal, chto eto ne prosto
trivial'naya hakkerskaya zadacha, kotoraya mozhet byt' polezna razve lish'
neskol'kim lyudyam. U menya byla programma nuzhnaya kazhdomu hakkeru, imeyushchemu
UNIX-mashinu i SLIP/PPP soedinenie. Blagodarya ispol'zovaniyu SMPT-forwarding,
eta programma mogla by stat' "ubijcej kategorii", t. e. programmoj, kotoraya
nastol'ko plotno zapolnyaet svoyu nishu,chto vse ostal'nye okazyvayutsya prosto
zabytymi.
YA dumayu, chto nel'zya zaplanirovat' takoj rezul'tat zaranee. Obychno v
razrabotku vas vtyagivayut nastol'ko moshchnye idei, chto rezul'taty kazhutsya
estestvennymi i neizbezhnymi. Edinstvennyj sposob najti takuyu ideyu - eto
postoyanno imet' mnozhestvo vsyakih svoih sobstvennyh idej, ili obladat'
talantom zaimstvovat' horoshie idei u drugih lyudej, prezhde chem oni ih
osoznayut.
U |ndryu Tanenbauma byla ideya postroit' prostuyu UNIX-podobnuyu sistemu dlya 386
mashiny, chtoby ispol'zovat' ee kak obuchayushchij instrument. Linus Torval'ds
ispol'zoval idei Minix, prezhde chem |ndryu ponyal, chto iz nih mozhet poluchit'sya.
|tot proekt vyros v nechto znachitel'nooe. Ispol'zuya etot zhe sposob (tol'ko v
gorazdo men'shem masshtabe), ya pozaimstvoval idei u Karla Harrisa i Garri
Hochhejzera. Vryad li kogo-nibud' iz nas mozhno nazvat' geniem. Odnako, obychno
nauchnaya, inzhenernaya i promyshlennaya razrabotka sovershaetsya ne geniyami,
hakkerami.
Rezul'taty etoj raboty byli i bystrymi, i horoshimi. |to byl uspeh, kotorogo
hakker zhdet vsyu zhizn'. Teper', chtoby uluchshit fetchmail, ya pisal kod ne
tol'ko dlya sebya, no takzhe dobavlyal nekotorye osobennosti, neobhodimye drugim
lyudyam. Programma zhe pri etom ostavalas' i prostoj, i racional'noj.
Pervoe i naibolee vazhnoe dobavlenie sostoyalo v podderzhke multidrop -
osobennosti, pozvolyayushchej vybirat' pochtu iz yashchikov, prednaznachennyh dlya
gruppy pol'zovatelej, a zatem napravlyat' ee poluchatelyu.
YA realizoval etu osobennost' chastichno potomu, chto ob etom prosili
pol'zovateli, a chastichno potomu, chto eto pomoglo obnaruzhit' oshibki v
single-drop. Mne prishlos' obobshchit' problemu adresacii. Usiliya sebya
opravdali. Izuchenie RFC 822 zanyalo u menya ochen' mnogo vremeni, tak kak
prishlos' izuchit' mnozhestvo nesvyazannyh medzhu soboj detalej.
Multidrop-adressaciya byla zamechatel'nym resheniem. Vot chto ya iz nee vynes:
14. Lyuboj instrument dolzhen byt' polezen dlya teh celej, dlya kotoryh on
razrabatyvalsya. Velikij instrument stanovitsya poleznym tam, gde ot nego
nichego podobnogo ne ozhidali.
Drugim vazhnym izmeneiem, sdelannym po pros'be moih beta-testerov, stala
podderzhka 8-bitovoj operacii MIME. Realizovat' eto bylo prosto, potomu chto ya
staralsya ostavit' kod 8-bitnym. Ne potomu chto ya chuvstvoval, chto pridetsya
realizovyvat' etu osobennost', a potomu chto ya staralsya sledovat' sleduyushchemu
pravilu:
15. Kogda vy razrabatyvaete gateway software, starajtes' ne vmeshivat'sya v
potok dannyh, poka vas k etomu ne vynudyat.
Esli by ya ne stal sledovat' etomu pravilu, podderzhka 8-bitovogo MIME, stala
by ochen' trudnoj. A tak mne prosto prishlos' prochitat' RFC 1652.
Nekotorye evropejskie pol'zovateli prosili menya dobavit' vozmozhnost'
ogranichivat' chislo pisem za odin seans (chtoby oni mogli kontrolirovat'
izderzhki svoih dorogih telefonnyh setej). YA dolgo soprotivlyalsya etomu, i do
sih por ne uveren, chto postupil pravil'no. Odnako esli vy pishete ne tol'ko
dlya sebya, vy dolzhny slushat' vashih pokupatelej. Nezavisimo ot togo poluchaete
li vy ot nih den'gi.
8. Neskol'ko urokov iz opyta raboty nad fetchmail'om.
Prezhde chem my vernemsya k obshchim rekomendaciyam po razrabotke programm, ya
rasskazhu o neskol'kih urokah, kotorye ya vynes iz opyta raboty nad
fetcnmail'om.
Sintaksis fajla rc, vklyuchaet v sebya nekotorye 'shumnye' klyuchevye slova,
kotorye polnost'yu ignoriruyutsya sintaksicheskim analizatorom. Predlagaemyj
sintaksis (napominayushchij anglijskij yazyk) znachitel'no bolee chitaemyj, chem
tradicionnye pary slovo-znachenie, kotorye vy poluchite posle togo, kak
uberete vse lishnee.
|tot eksperiment nachalsya pozdno noch'yu, kogda ya zametil, naskol'ko ob流avleniya
v fajle rc stali napominat' nebol'shoj imperativnyj yazyk. (Vot pochemu ya
zamenil klyuchevoe slovo 'server' na 'poll').
Tradicionno programmisty stremyatsya ispol'zovat' tochnye i kratkie upravlyayushchie
konstrukcii. |to pravil'no, potomu chto vychislitel'nye resursy dorogie, i
process sintaksicheskogo analiza dolzhen byt' maksimal'no prostym i deshevym.
Potomu brat' za osnovu anglijjskij yazyk nevygodno, tak kak v nem okolo 50%
izbytochnyh konstrukcij.
Dlya menya eto ne yavlyaetsya prichinoj, chtoby izbegat' sintaksisa estestvennogo
yazyka. Deshevoe ispolnenie instrukcij i kratkost' ne dolzhny stat' konechnoj
cel'yu. V pervuyu ochered' yazyk dolzhen byt' udobnym dlya lyudej, a ne deshevym dlya
komp'yuterov.
Sushchestvuyut eshche neskol'ko povodov dlya bespokojstva. Vo-pervyh, nezhelatel'no,
chtoby vozrosshaya stoimost' sintaksicheskogo analiza, stala sama po sebe
istochnikom oshibok. Vo-vtoryh, pri popytke sdelat' yazyk "anglopodobnym",
chasto trebuetsya, chtoby "anglijskij" poteryal svoyu formu nastol'ko, chtoby on
pohodil na estestvennyj yazyk, ne bol'she, chem tradicionnyj sintaksis. (|to
mozhno chasto videt' v yazykah zaprosov "chetvertogo pokoleniya" i yazykah
kommercheskih baz dannyh.)
V upravlyayushchih konstrukciyah fetchmail'a etih problem udalos' izbezhat', tak
kak oblast' dejstviya yazyka sil'no ogranichena. On prakticheski ne yavlyaetsya
obshchecelevym yazykom,i poetomu neslozhno perejti ot nebol'shogo podmnozhestva
anglijskogo yazyka k dejstvitel'nomu yazyku upravleniya. Otsyuda mozhno izvlech'
eshche odin urok:
16. Esli vash yazyk ne yavlyaetsya polnym po T'yuringu, dobav'te nemnogo
sintaksicheskogo sahara.
Drugoj urok kasaetsya bezopasnosti. Nekotorye pol'zovateli fetchmail'a
prosili menya izmenit' programmu tak, chtoby ona hranila zashifrovannye paroli
v fajle rc.
YA ne sdelal etogo, potomu chto eto ne dobavlyaet nikakoj zashchity. Lyuboj
chelovek, imeyushchij pravo chitat' vash fajl, mog by zapustit' fetchmail pod vashim
imenem i, vozmozhno, dekodirovat' vash parol'. SHifrovanie parolya v
.fetchmailrc moglo by dat' lyudyam lozhnoe chuvstvo zashchishchennosti. Obshchee pravilo
zdes' sleduyushchee:
17. Sistema bezopasnosti nadezhna, poka nadezhny ee sekrety. Izbegajte
psevdo-sekretov.
9. Neobhodimye usloviya dlya modeli bazara.
CHitateli rannih versij etoj stat'i obyazatel'no podnimali vopros o
neobhodimyh usloviyah dlya razrabotki proekta v stile bazara, Zdes' obychno
rassmatrivali kvalifikaciyu lidera proekta i sostoyanie sistemy na moment,
kogda prinimaetsya reshenie opublikovat' ishodnye teksty i sozdat' soobshchestvo
sotrudnichayushchih razrabotchikov.
Ochevidno, chto nikto ne smozhet nachat' razrabotku v takom stile s nulya. Mozhno
testirovat', otlazhivat' i uluchshat' programmy, rabotaya v stile bazara, no
nachat' proekt ochen' trudno, Ni ya, ni Linus dazhe ne pytalis' eto sdelat'.
Vashemu soobshchestvu razrabotchikov nuzhno chto-to, chto mozhno otlazhivat' i
testirovat'.
Kogda vy nachinaete sozdavat' sotrudnichayushchee soobshchestvo, vam neobhodimy
ubezhdayushchie dovody . Vasha programma mozhet ne vsegda pravil'no rabotat'. Ona
mozhet byt' nepolnoj, soderzhat' oshibki ili imet' plohuyu dokumentaciyu. Odnako,
ona dolzhna obyazatel'no ubedit' potencial'nyh sotrudnikov, v tom chto ih
sobirayutsya vovlech' v nechto stoyashchee.
Linux i fetchmail byli predstavleny publike kak programmy, imeyushchie stroguyu
osnovu. Mnogie lyudi, kogda-libo razmyshlyavshie o modeli bazara, ponachalu
otnosilis' k etomu utvverzhdeniyu kriticheski. Odnako pozzhe pochti vse oni
prihodili k mneniyu, chto lideru proekta krajne vazhno imet' vysokuyu
kvalifikaciyu i intuiciyu razrabotchika.
Odnako ne budem zabyvat', chto Linus zaimstvoval idei razrabotki ot UNIX. YA
zhe pozaimstvoval ih u rodovogo popmail'a (hotya mne prishlos' peredelyvat'
znachitel'no bol'she, chem Linusu). Tak li uzh neobhodim koordinatoru
isklyuchitel'nyj talant razrabotchika ili on mozhet ispol'zovat' chuzhie idei?
Po-moemu ne ochen' sushchestvenno, sposoben li koordinator na original'nyj
dizajn. Odnako, sovershenno neobhodimo, chtoby lider proekta byl sposoben
otlichit' horoshij dizajn ot vseh ostal'nyh .
I Linux, i fetchmail pokazali ochevidnost' etogo utverzhdeniya. Linus -
otlichnyj razrabotchik, kotoryj k tomu zhe pokazal svoe umenie raspoznavat'
horoshij dizajn i vstraivait' ego v yadro Linux. A ya, v svoyu ochered', uzhe
opisyval, kak edinstvennaya naibolee moshchnaya ideya v razrabotke fetchmail (SMTP
forwarding) byla poluchena so storony.
Prezhnie chitateli etoj stat'i otmechali, chto ya sklonen nedoocenivat'
pervonachal'nyj dizajn v proektah bazara, tak kak sam ya otlichno s nim
spravlyayus', i, poetomu prinimayu eto kak dolzhnoe. Vozmozhno, v etom est' dolya
pravdy, dizajn, v otlichie ot kodirovaniya i otladki, - moj konek.
Problema pervonachal'nogo dizajna zaklyuchaetsya v tom, chto vy nachinaete proekt,
uslozhnyaya sebe zadachu, v to vremya kak sleduet ostavlyat' ee prostoj i
ponyatnoj. Nekotorye moi proekty provalivalis' iz-za togo, chto ya sovershal etu
oshibku, i poetomu ya staralsya ne dopustit' ee pri razrabotke fetchmail.
Itak, ya uveren, chto fetchmail udalsya, potomu chto ya ogranichil svoyu
izobretatel'nost'. Davajte rassmotrim Linux. Predpolozhim, chto Linus
Torval'ds stremilsya ubrat' osnovnye izobreteniya v dizajne operacionnyh
sistem, razve poluchili by my takoe moshchnoe i stabil'noe yadro?
Konechno, opredelennye znaniya v oblasti dizajna, a takzhe navyk kodirovaniya
neobhodimy, no mne kazhetsya, chto kazhdyj, kto vser'ez dumaet o takoj
razrabotke, prevoshodyat trebuemyj minmium. Reputaciya vnutrennego rynka
otkrytyh programm okazyvaet davlenie, kotoroe predosteregaet nedostatochno
kompetentnyh lyudej.
Sushchestvuet drugoe vazhnoe kachestvo, ne menee vazhnoe dlya uspeha proekta v
stile bazara. Koordinator takogo proekta dolzhen imet' horoshij opyt obshcheniya s
lyud'mi.
Neobhodimost' etogo ochevidna. Dlya sozdaniya soobshchestva razrabotchikov, vam
neobhodimo kak-to privlech' lyudej, zainteresovat' ih tem, chto vy delaete.
Tehnicheskaya chast', konechno, ochen' sushchestvenna, no i vasha lichnost' imeet
nemalovazhnoe znachenie.
Linus ne sluchajno yavlyaetsya simpatichnym parnem, kotoryj nravitsya lyudyam, i
kotoromu lyudi s udovol'stviem pomogayut. Takzhe ne yavlyaetsya sovpadeniem to,
chto ya - ochen' energichnyj ekstravert, kotoromu nravitsya rabotat' v komande.
Esli vy znaete kak ponravit'sya lyudyam, eto ochen' sil'no pomozhet vam v
razrabotke modeli v stile bazara.
10. Social'nyj kontekst otkrytyh programm.
Verno skazano: luchshie programmy nachinayutsya s resheniya problem avtora, s
kotorymi on stalkivaetsya kazhdyj den', i rasshiryayutsya, potomu chto eti problemy
okazyvayutsya tipichnymi dlya bol'shogo klassa pol'zovatelej. |to vozvrashchaet nas
k pervomu pravilu, kotoroe mozhno sformulirovat' bolee tochno:
18. CHtoby reshit' interesnuyu problemu, najdite problemu kotoraya vas
zainteresuet. |to proizoshlo s Karlom Harrisom i ego rodovym popclient'om,
eto proizoshlo so mnoj i fetchmail'om. V etom net nichego novogo, gorazdo
interesnee drugoe. Istoriya s Linux'om i fetchmail'om ukazyvaet na sleduyushchuyu
stadiyu v evolyucii programmnogo obespecheniya - aktivnoe soobshchestvo
pol'zovatelej i razrabotchikov.
V "The Mythical Man-Month" Fred Bruks rassmatrival razlichnye zavisimosti
vremeni razrabotki. On pokazyvaet, chto slozhnost' proekta i ego
kommunikacionnye izderzhki kvadratichno zavisyat ot chisla razrabotchikov, v to
vremya kak prodelannaya rabota zavisit tol'ko linejno. |to utverzhdenie
nazyvaetsya "zakon Bruksa", i bol'shinstvo priznaet ego pravil'nym. Odnako,
esli by delo bylo tol'ko v zakone Bruksa, Linux ne mog by sushchestvovat'.
Pyat' mesyacev nazad, Dzheral'd Venberg v "Psihologii programmirovaniya"
predlozhil teoriyu, kotoruyu my mozhem rassmatrivat', kak zhiznennuyu popravku k
zakonu Bruksa. Obsuzhdaya "neegoistichnoe programmirovanie" (egoless
programming), Venberg zamechaet, chto esli razrabotchiki ne yavlyayutsya
bezrazdel'nymi vladel'cami ishodnikov programm i privetstvuyut, kogda drugie
lyudi pomogayut iskat' oshibki i predlagayut razlichnye uluchshniya, programma
progressiruet namnogo bystree.
Vozmozhno, terminologiya Venberga ne sposobstvuet tomu, chtoby ego utverzhdeniya
prinyali. Mnogie lyudi ulybayutsya pri opisanii hakerov Internet kak
"neegoistichnyh". Odnako, ya dumayu, chto ego argumenty luchshe vsego
sootvetstvuyut segodnyashnej situacii.
Istoriya UNIX podgotovila nas k tomu, chto my uznali ot Linux (i tomu, chto ya
proveril na nebol'shom proekte, kopiruya metody Linux'a). V to vremya kak
kodirovanie yavlyaetsya v osnovnom individual'noj deyatel'nost'yu, genial'nye
hakkerskie resheniya prihodyat ot vsego soobshchestva. Razrabotchik, kotoryj
rabotaet v zamknutom proekte i pol'zuetsya tol'ko svoej golovoj, ustupaet
razrabotchiku, sozdayushchemu otkrytyj proekt, v kotorom uchastvuyut sotni lyudej,
zanyatyh poiskom oshibok i predlagayushchih razlichnye uluchsheniya.
Odnako, v tradicionnom mire UNIX etot podhod ne yavlyaetsya edinstvennym. Odna
iz prichin - eto kommercheskie i torgovye sekrety, ogranicheniya razlichnyh
licenzij i t. d. Drugaya prichina zaklyuchaetsya v tom, chto Internet nedostatochno
horoshee sredstvo obshcheniya.
Prezhde chem poyavilas' deshevaya svyaz' cherez Internet, sushchestvovalo neskol'ko
geograficheski kompaktnyh soobshchestv, tradicii kotoryh pooshchryali "neegoistichnoe
programmirovanie", i razrabotchiki sotrudnichali drug s drugom. Bell Labs, MIT
AI Lab, UC Berkely stali rodinoj legendarnyh i do sih por moshchnyh
izobretenij.
Linux - eto pervyj proekt, kotoryj pytalsya sobrat' talanty po vsemu miru. YA
dumayu, chto period zarozhdeniya Linux nesluchajno sovpal s poyavleniem World Wide
Web. Linus byl pervym, kto ponyal, kak igrat' po novym pravilam, kotorye
stali vozmozhnymi blagodarya Internet.
Deshevyj Internet yavlyaetsya neobhodimym usloviem dlya razvitiya modeli Linux,
no, kak mne kazhetsya, nedostatochnym. Drugie zhiznennye faktory - eto stil'
rukovodstva i tradicii, pobuzhdayushchie razrabotchikov iskat' sotrudnikov dlya
dostizheniya maksimal'nogo effekta.
CHto zhe eto za stil' rukovodstva i kakovy eti tradicii? Oni ne mogut byt'
osnovany na prinuzhdenii, potomu chto togda by my ne poluchili takih
rezul'tatov.
Ranee ya ssylalsya na effekt Delphi, kak vozmozhnoe ob流asnenie zakona Linusa.
Takzhe dlya etogo bezuprechno podhodyat analogii s adaptivnymi sistemami v
biologii i ekonomike. Mir Linux vo mnogih otnosheniyah vedet sebya kak
svobodnyj rynok ili kak ekologicheskaya sistema. |to pohozhe na mnozhestvo
zainteresovannyh agentov, kotorye pytayutsya maksimizirovat' poleznost'. V
konechnom itoge sistema, gde eti agenty dejstvuyut nezavisimo, okazyvaetsya
bolee effektivnoj, chem ta, v kotoroj proishodit centralizovannoe
planirovanie.
Funkciya poleznosti, kotoruyu maksimiziruyut hakkery Linux, ne yavlyaetsya
klassicheskoj dlya ekonomiki. Ona zavisit ot ih samoudovletvoreniya i reputacii
sredi drugih hakkerov.(Mozhno bylo by nazvat' ih motivaciyu al'truisticheskoj,
odnako al'truizm sam po sebe yavlyaetsya sredstvom samoudovletvoreniya
al'truista.) Dobrovol'nye soobshchestva, rabotayushchie po etomu principu
vstrechayutsya dovol'no chasto. YA dolgoe vremya uchastvoval v soobshchestve lyubitelej
nauchnoj fantastiki, kotoroe, v otlichie ot soobshchestva hakkerov, priznaet
"egoboo" - uluchshenie reputacii sredi drugih fanatov - kak edinstvennuyu
dvizhushchuyu silu dobrovol'noj raboty.
Mozhno rassmatrivat' metod Linusa, kak sposob sozdat' effektivnyj "egoboo"
rynok. To est' soedinit' zainteresovannost' otdel'nyh hakkerov i zadachu,
kotoraya mozhet byt' reshena tol'ko v soobshchestve. V proekte fetchmail ya pokazal
(v men'shem masshtabe), chto eti metody mogut davat' horoshie rezul'taty.
Vozmozhno, ya dazhe sdelal eto bolee sistematicheski.
Mnogie lyudi (osobenno te, kotorye ne doveryayut svobodnym rynkam po
politicheskim prichinam) ozhidayut, chto podobnoe soobshchestvo egoistov budet
rastochitel'no, skrytno i vrazhdebno nastroeno. Odnako eti ozhidaniya
obmanyvayutsya, chto podtverzhdaetsya odnim yarkim prierom. |tot primer -
oshelomlyayushchee raznoobrazie, kachestvo i glubina dokumentacii Linux. Izvestno,
chto programmisty nenavidyat pisat' dokumentaciyu. Pochemu zhe togda dokumentaciya
Linux stol' obshirna? Ochevidno, chto v etom sluchae svobodnyj rynok Linux
rabotaet effektivnee, chem proizvoditeli kommercheskih programm.
Fetchmail i Linux pokazali, chto opytnyj koordinator mozhet ispol'zovat'
Internet dlya svyazi mezhdu razrabotchikami, ne opasayas', chto proekt prevratitsya
v haos. Poetomu zakonu Bruksa mozhno protivopostavit' sleduyushchee:
19. Esli u koordinatora razrabotki est' sredstvo svyazi, po men'shej mere
takoe kak Internet, i on umeet lidirovat' bez prinuzhdeniya, to luchshe
pol'zovat'sya neskol'kimi golovami, chem odnoj.
YA dumayu, chto budushchee svobodnogo programmnogo obespecheniya prinadlezhit lyudyam,
kotorye znayut kak igrat' v igru Linusa, kotorye ostavlyayut stil' sobora i
razrabatyvayut proekty v stile bazara. |to ne oznachaet, chto individual'nost'
ne igraet bol'she nikakoj roli. Naoborot, vperedi okazhutsya te, kto nachinal s
indvidual'nogo masterstv, a potom rasshiril ego cherez effektivnoe sozdanie
dobrovol'nyh soobshchestv.
Vozmozhno, eto budushchee ne tol'ko svobodnyh programm. Ni odin razrabotchik
kommercheskih programm ne smozhet sravnit'sya s soobshchestvom Linux v reshenii
problemy. Nemnogie smogut nanyat' dvesti chelovek, kotorye uchastvovali v
razrabotke fetchmail.
Veroyatno, v konce koncov svobodnoe programmnoe obespechenie pobedit, ne
tol'ko potomu chto kooperaciya pravil'na s tochki zreniya morali, no prosto
potomu, chto kommercheskij mir ne smozhet sostyazat'sya s soobshchestvami
free-software, kotorye mogut brosit' gorazdo bol'shie sily na reshenie odnoj
problemy.
|ta stat'ya byla znachitel'no uluchshena, blagodarya tomu chto ochen' mnogie lyudi
uchastvovali v ee obsuzhdenii. Osobenno ya blagodaren Dzheffu Datki
dutky@wam.umd.edu , za to chto predlozhil formulirovku "otladka mozhet byt'
parallel'noj" ("debugging is parallelizable") i pomog ee proanalizirovat'.
Takzhe ya blagodaren Nensi Lebovitc nancy@universe.digex.net. Mnogo
konstruktivnoj kritiki postupalo ot Dzhoan |slinger
wombat@kilimanjaro.engr.sgi.com i Marti Franc marty@net-link.net iz General
Technics. Pol |ggert eggert@twinsun.com otmetil konflikt mezhdu GPL i model'yu
bazara. YA blagodaren chlenam PLUG, gruppy Philadelphia Linux User's za
testirovanie pervoj publichnoj versii etoj stat'i. I, konechno, mne ochen'
pomogli kommentarii Linusa Torval'dsa.
12. CHto chitat' dal'she.
YA procitiroval neskol'ko otryvkov iz Mythical Man-Month Frederika Bruksa. YA
rekomenduyu ego 25-oe yubilejnoe dopolnenie ot Addison-Wesley (ISBN
0-201-83595-9), kotoroe dopolnyaet ego stat'yu "No Silver Bullet". Dzheral'd P.
Venbegr v Psychology Of Computer Programming (New York, Van Nostrand
Reingold 1971) predstavil neudachno nazvannoe ponyatie "neegoistichnogo
programmirovaniya". Hotya on ne smog osoznat' bespoleznost' "principa
komandy", on, veroyatno, byl pervym, kto rassmotrel etu problemu vsvyazi s
programmnym obespecheniem. Richard P, Gabriel, rassmatrivaya Unix do ery Linux,
sporit o prevoshodstve primitivnoj modeli bazara v svoej stat'e: Lisp:Good
News, Bad News, and How to Win Big.
De Marko i Lister Peopleware:Productive Projects and Teams (New York;Dorset
House, 1987; ISBN 0-932633-05-6) - eto bescennyj dzhem, gde ya s udovol'stviem
uvidel citaty iz Freda Bruksa. Hotya tol'ko nebol'shaya chast' iz vyskazyvanij
avtorov napryamuyu primenima k Linux, rassmatrivaemye usloviya, neobhodimye dlya
tvorcheskoj raboty, pomogut tem, kto popytaetsya perenesti nekotorye principy
modeli bazara v bolee kommercheskij kontekst.
13. |pilog: Netscape privetstvuet Bazar!
Ochen' stranno osoznavat', chto ty pomogal vershit'sya Istorii ...
22 yanvarya 1998 goda, priblizitel'no cherez sem' mesyacev posle togo kak ya
vpervye opublikoval etu stat'yu, Netscape Communications, Inc. ob流avila o
svoih planah sdelat' otkrytymi ishodnye teksty Netscape Communicator.
Odnako, ya i predstavit' sebe ne mog, chto predshestvovalo etomu ob流avleniyu.
|rik Hann, ispolnitel'nyj vice-prezident i glava tehnologicheskogo otdela
Netscape'a napisal mne: "Ot imeni vseh chlenov korporacii, ya hochu
poblagodarit' Vas za to, chto vy pomogli nam ponyat' etu problemu. Vashi
ubezhdeniya i vashi stat'i okazalis' naibolee veskimi dovodami v pol'zu
prinyatiya etogo resheniya."
Na sleduyushchej nedele ya vyletel v Silicon Valley dlya odnodnevnoj
strategicheskoj konferencii s ispolnitel'nymi i tehnicheskimi sotrudnikami
Netscape'a. My vmeste razrabotali licenziyu i strategiyu vypuskov relizov
ishodnikov Netscape'a, a takzhe sostavili plany po vneseniyu polozhitel'nyh
vkladov v open-source soobshchestvo. Eshche rano slishkom uglublyat'sya v detali, no
gde-nibud' cherez neskol'ko nedel' my poluchim podrobnosti.
Netscape gotov k tomu, chtoby proverit' model' Bazara na nastoyashchem
polnomasshtabnom proekte, vzyatom iz kommercheskogo mira. Dlya mira otkrytyh
sistem eto predsttavlyaet opasnost': ved' esli proekt Netscape'a ne budet
rabotat', to koncepciya open-source budet ochen' sil'no diskreditirovana v
kommercheskom mire.
S drugoj storony eto zamechatel'naya vozmozhnost' dlya eksperimenta.
Predvaritel'naya reakciya na prodvizhenie v storonu Wall Street byla
polozhitel'noj. My poluchaem shans pokazat' svoi sposobnosti. Esli, blagodarya
etomu proektu, Netscape vernet sebe sushchestvennuyu chast' rynka - eto budet
oznachat' zapozdaluyu revolyuciyu v komp'yuternoj promyshlennosti.
Sleduyushchij god obeshchaet byt' i pouchitel'nym i interesnym.
14. Versiya i istoriya izmenenij
$Id: baz14.txt,v 1.1 1998/07/03 10:27:42 aak Exp $
YA predstavil versiyu 1.16 na Linux kongresse 21 marta 1997 goda. YA dobavil
bibliografiyu 7 iyulya 1997 goda v versiyu 1.20
YA dobavil anekdot o Perl konferencii 18 noyabrya 1997 goda v versiyu 1.27
YA izmenil slova "free software" na "open source" 9 fevralya 1998 goda v
versii 1.27
YA dobavil "13. |pilog: Netscape privetstvuet Bazar!" 10 fevralya 1997 goda v
versiyu 1.31
Ostal'nye izmeneniya soderzhat nebol'shie redaktorskie ispravleniya.
Last-modified: Thu, 14 Jan 1999 13:25:29 GMT