Ocenite etot tekst:


---------------------------------------------------------------
 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'.



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.




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.



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.



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.



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.




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.



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.



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.



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.



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.




$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
Ocenite etot tekst: