|rik S.Rejmond. Sobor i Bazar --------------------------------------------------------------- Original perevoda raspolozhen na sajte "Urbansoft" http://www.usoft.spb.ru/Graphic/Russian/FreeSoftware/baz.html ¡ 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. 1. Sobor i Bazar. 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¬yasnyaet 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¬yasnyaet 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. 5. Roza ili ne Roza? 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¬yavleniya 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¬yavleniya 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