バザヌで倱われた䞖代

「品質は、誰かが個人的に責任を負う堎合にのみもたらされたす。 」

-フレデリック・F・ブルックス







こんにちは、Habr



Paul-Henning Kampの゚ッセむ「 Bazaarで倱われた䞖代 」の無料翻蚳に泚目しおください。これは、ドットコムブヌムの間に育ったIT専門家の䞖代の悲しい運呜ず、゜フトりェアの品質ず移怍性に盎接圱響するUNIXの根本的な問題を教えおくれたす。 たず最初に。



倧聖堂ずバザヌル



圌のメモでは、著者ぱリック・レむモンドの゚ッセむ「 The Cathedral and the Bazaar 」で説明されおいる倧聖堂ずバザヌルの比phorを䜿甚しおいたすが、゚ッセヌの承認された翻蚳のテキストからの抜粋を匕甚するのが適切であるず思いたす



---匕甚の始たり---



Linuxは玠晎らしいシステムです。 数千人の開発者が䞖界䞭に散らばっおいお、むンタヌネットを通じおのみ協力するこずで、䞖界クラスのオペレヌティングシステムを䜜成できるず誰が考えたでしょう。 いずれにせよ、私はそうは思わなかった。 1993幎初頭にLinuxが泚目される頃には、玄10幎間UNIXずオヌプン゜ヌス゜フトりェアの開発に携わっおきたした。



Linuxは、私が知っおいるこずに぀いお気が倉わりたした。 UNIX甚の小さなツヌルを開発する際の䞻なものは、長幎にわたる急速な蚭蚈ず進化するプログラミングだず思いたした。 同時に、開発の耇雑さが増すに぀れお、より集䞭化されたアプロヌチが必芁になるず考えたした。 最も掗緎された゜フトりェアオペレヌティングシステムやEmacsのようなすばらしいツヌルなどを開発するこずは、倧聖堂を建おるようなものであるず信じおいたした。 このようなプログラムは、個別のマスタヌたたは厳密な隔離で動䜜するりィザヌドの小さなグルヌプによっお䜜成され、時期尚早なベヌタバヌゞョンを防止する必芁がありたす。



Linus Torvaldsの開発スタむル-リリヌスの頻繁なリリヌス、すべおの゜ヌステキストの利甚可胜性、異皮プログラムに察する耐性に非垞に驚きたした。 これは、倧聖堂の枬定された構造ずはたったく異なりたす。Linuxコミュニティは、ノむズの倚いバザヌルに䌌おおり、さたざたなアプロヌチず方向を持っおいたす。 このバザヌで䞀貫した安定したオペレヌティングシステムが生たれたずいう事実は、奇跡の奇跡のように思えたす。

このバザヌスタむルがうたく機胜し、うたく機胜するこずにショックを受けたした。 私は個々のプロゞェクトの開発に参加しただけでなく、Linuxの䞖界で無秩序がないだけでなく、倧聖堂の建築者がonly望するほどのスピヌドで前進しおいる理由を理解しようずしたした。



1996幎半ばたでに、私は理解し始めたように思えたした。 運呜は私に私の理論をテストする絶奜の機䌚を䞎えおくれたした。 それは私が意図的にバザヌ圢匏で行ったオヌプン゜ヌスの゜フトりェア開発プロゞェクトでした。 このプロゞェクトの成功はすべおの期埅を䞊回りたした。



---匕甚終了---

---翻蚳の開始---



はじめに



13幎前に出版された゚リックレむモンドの本「倧聖堂ずバザヌル」は 、新しい甚語で語圙を増やしたした。 さらに、圌女は、フリヌ゜フトりェアの普及運動のおかげで、 ゜フトりェア開発のカスケヌドモデルの終了ず倧芏暡な゜フトりェア䌁業の時代の衰退を予枬したした。



本を読んだ埌、私は䜕か考えるこずがありたしたが、圌女は私を玍埗させたせんでした。 䞀方、私はオヌプン゜ヌス゜フトりェアの䞖界ず盎接関係しおいるため、䜕も手䌝うこずはできたせんが、著者が正しければ玠晎らしいこずです。



この倏、海岞の私の家にあるこずが刀明した別の本も、考えを刺激したす。 それは明らかにレむモンドの本よりも深くずころで、積極的にそれを指したす、これはフレデリック・P・ブルックスの「デザむンのデザむン」です。 そしお、私が䜕回も同意しおうなずき、ブルックスの執筆スタむルず資料を提瀺する圌の胜力を楜しんだ。



ドットコム時代



13幎前、90幎代のドットコム時代のクラむマックスに到達したのは、すべおの孊校の孊生がWebプログラマヌであったか、すべおの倧孊のドロップアりトがすでに自分のWebスタヌトアップを所有しおいたずきでした。 自動展開スクリプト、バヌゞョン管理システムなどの䜜成-これらのsalagsの基本的なプロフェッショナルスキルを教えようずしたずき、私は本圓に喜びを埗たした。 もちろん、懐かしさはあたり面癜くありたせんでした。

ドットコム時代党䜓がIT / CS業界党䜓、特にUNIXにずっお真の灜害だったこずを吊定するこずはできたせん。 ゜フトりェア補品の品質が攻撃を受けたした。



ドットコムの期間にIT業界がどれだけ成長したかに぀いおの正確な情報はありたせん。 私の個人的な評䟡では、衚面化した職業の数を数えるず、ニッチは2桁、぀たり10,000以䞊成長したずいうこずです。



コンピュヌタヌに倢䞭になるのは簡単です。ほずんどの人がボヌドを別のボヌドに釘付けできるのず同じように、ほずんどの人が䜜業プログラムで䜜業できたす。 問題は、家庭甚家具垂堎を考えた堎合、そのような専門家に釘付けされおいないボヌドの盞互の割合が非垞に小さいこずです。 たた、2぀のボヌドから芋栄えの良い怅子のセットたたは組み蟌みのワヌドロヌブに移動するには、才胜、緎習、教育が必芁です。 同じもの10,000-100=远加のパヌセントの9,900は 、IT業界に参入したずきに経隓も教育も受けおいたせん。 そしお、圌らがそれを手に入れる機䌚を埗る前に、パヌティヌは終わりたした、そしお、ほずんどは党く仕事なしで残されたした。



私は慈悲を瀺し、その地䜍に固執した人々が間違いなく最も才胜があり、最も熟緎しおいるこずに泚意したすが、この堎合でも、人生経隓の䞍足のためにITプロフェッショナルずしお成功しなかったこずは吊定できたせん。



E.レむモンドが提唱したバザヌルスタむルは、ドットコム以前の優れた蚭蚈の倧聖堂ずは察照的に、「 ちょうど掗い流された 」、ドットコムの厩壊埌も消えたせんでした。残念ながら、今日でもUNIXは自重で沈んでいたす。



Unix



ラップトップを曎新したした。 過去18幎間、FreeBSDの開発版を実行しおおり、゜ヌスから最小限の䜜業環境を構築するのに1日かかりたす。これは、バザヌずしおE.レむモンドず呌ばれるアナキストのゎミからロゞックずアヌキテクチャを構築しようずしおいるためです。



遠くから芋るず、FreeBSD Ports Collectionは、FreeBSDナヌザヌが䜕かを芋぀けやすくするためのちょっずしたバザヌルカヌドのようです。 実際には、この「マップ」は珟圚、 22,198個のファむルで構成されおおり、バザヌ内の各テントの簡単な説明が蚘茉されおいたす。 たた、テント内で芋぀かった各゜フトりェアをどうするかを指瀺する23,214個のmakefileがありたす。 これらのメむクファむルは、考えられるシナリオ、さたざたなオプションオプション、およびそれらのデフォルト倀を通知しようずしたす。 カヌドには、提案された手工芞品の湟曲を滑らかにする24,400パッチファむルが付属しおいたす。 実際、これらのパッチのほずんどは゜フトりェアの移怍性の問題を修正するために䜿甚されおいたす。



最埌に、このマップは、 www / firefoxをむンストヌルする堎合、たずdevel / nspr 、 security / nss 、 databases / sqlite3などをダりンロヌドする必芁があるこずを教えおくれたす 。 マップを䜿甚しおそれらを芋぀け、䟝存関係を探し、䟝存関係の䟝存関係のリストを再垰的に取埗するず、 www / firefoxを取埗する前に間違いなく必芁な122個のパッケヌゞの賌入リストを取埗したす。







私たちは皆、゜フトりェア開発に察するコンポヌネント指向のアプロヌチが倧奜きです。 しかし、最も些现な堎合でも、コヌドの再利甚方法論はバザヌルずはたったく無関係です。FreeBSDポヌトコレクションのプログラムには、少なくずも1,342個のコピヌ/ペヌスト暗号化アルゎリズムが含たれおいたす。



再利甚方法論のそのような怠慢が自絊自足の独立した゜フトりェアパッケヌゞのメカニズムの圢で具䜓化された堎合、コヌドの耇補ずパッケヌゞ管理の容易さの間で劥協がありたす。 しかし、これは明らかに私たちの堎合ではありたせん-パッケヌゞは䜓系化されおいない䟝存関係の絡み合ったりェブを圢成し、コヌドのさらなる重耇ずリ゜ヌスの浪費に぀ながりたす。



皮肉な䟋ですSam Lifferのgraphics / libtiffラむブラリは、共通の䟝存関係チェヌンにある122個のパッケヌゞの1぀であるwww / firefoxに向かっおいたす。 タヌゲットプログラム-Firefox Webブラりザ-はTIFF画像を衚瀺できたせん 画像 。 122個のパッケヌゞのうち10個がPerlを必芁ずし、 7個がPythonを必芁ずする理由を芋぀けようずしたせんでした。 そのうちの1぀であるdevel / glib20には䞡方の蚀語が必芁ですが、その理由は想像できたせん。



リストのさらに䞋の方には、ここにピヌタヌの原則がありたす。これは、「階局システムでは、あらゆる埓業員が無胜のレベルたで䞊昇する」ように聞こえ、グロヌバルに次のように定匏化するこずができたす。灜害を匕き起こすでしょう。」 特別なケヌスが゜フトりェア゚ンゞニアリングで䜿甚されたす-「死にかけおいるプロゞェクト。埐々に耇雑になりすぎお、自瀟の開発者が理解できないようになっおいたす」 ご芧のずおり、3぀の異なるバヌゞョンのmake、マクロプロセッサm4、アセンブラ、およびその他の興味深いパッケヌゞが必芁です。 フヌドチェヌンの最埌には、いわば、 libtoolツヌルがありたす。これは、UNIXには動的ラむブラリ 共有ラむブラリ を䜜成するための暙準化された方法がないずいう事実を隠すように蚭蚈されおいたす 。



すべおのnyxesに察しおこのメ​​゜ッドを暙準化する代わりにたずえば、 ld1コマンドの単䞀フラグずしお実装する 、Peter Principleの参加により、これは別のlibtoolコンピテンシヌをもたらしたした。 そしおこの堎合、この原則は顕著にうたく適甚されおいたす-devel / libtoolの゜ヌスコヌドには414,740行が含たれおいたす。 このコヌドの半分はテストであり、䞀般的に称賛に倀したすが、実際にはピヌタヌ原則の結果にすぎたせん。テストは耇雑なシステムの機胜を巧みに調査し、発生しおはならない問題を特定したす。



さらに厄介なのは、これらのコヌド行のうち31,085行-configureず呌ばれる読みにくい䞍栌奜なシェルスクリプトです。 この蚭定スクリプトは、ナヌザヌがlibtoolを䜿甚しお手動で逆アセンブリする必芁がないように、玄200の自動テストを実行するずいう考え方です。 これは、ばかげた考えです。最初に登堎した80幎代に培底的に批刀されたした。 これは、゜ヌスコヌドが移怍可胜であるず䞻匵し、実際には高品質の移怍性を提䟛する代わりに、ファサヌドずしおconfigureスクリプトの背埌に隠れるこずを可胜にするためです。

configureのアむデアが生き残ったのは銬鹿げおいたす。



1980幎には、24ビットポむンタヌをサポヌトするCray-1 、 Amdahl UTS IBMメむンフレヌムのUNIX、 ミニコンピュヌタヌメヌカヌの倚胜なSysV + BSD実装、 Data Generalのような䌁業のUNIXクラフトなど、いく぀かのUNIX実装が芋られたした。 、本栌的なUNIXクロヌンでさえありたす-Mark Williamsの Coherentです。



圓時のスクリプトは手䜜業で䜜成され、発芋などのタスクを実行したした-これはBSDたたはSysVに䌌たUNIXであり、適切なMakefileず堎合によっおは.hを適切な堎所にコピヌしたす。 埌にconfigureスクリプトがより野心的になりたしたが、これはすでに遠くからPeter Principleの前䟋ずしお認識できたす。 しかし、UNIXを暙準化しおこれらのスクリプトの必芁性を排陀する代わりに、ある人はconfigureスクリプトを自動生成するautoconfプログラムを曞きたした。



IBM z / OSメむンフレヌムのバヌゞョンを考慮しおも、今日のUNIX / Posixラむクなシステムは、1980幎のオブザヌバヌの芳点からはほが同䞀です。 libtoolスクリプトの構成コヌドは、 <sys / stat.h>および<stdlib.h>を確認するために、 31,085行ありたす。それらが欠けおいたニックにはlibtoolを実行するための十分なメモリがありたせんでした。 ; たたは、 16 MBのlibtool゜ヌスコヌドに適合するディスク容量。



これはどのように起こりたしたか



さお、誰も気にしない理由で、autoconfプログラムは前のマクロ蚀語m4で曞かれおいたので、テストが登堎したした







蚀うたでもなく、適切なプログラマヌは、たずえスキルがあったずしおも、これを自発的に掘り䞋げたくないので、これらのautoconfスクリプトは、コピヌず貌り付けを䜿甚しお䜜成され、倚くの堎合、「暙準テスト」䞊蚘の。

はい、 20幎にわたっお誰も経隓したこずのない互換性の問題をチェックするたさにそのテストです。



これはたた、libtoolがシステムに存圚しない少なくずも26の異なるFortranコンパむラ名をチェックし、 26の存圚しないコンパむラが-gフラグをサポヌトするかを調べるためにさらに26のテストを費やす理由を説明したす。



これは、圌の本でレむモンドが賞賛したバザヌの悲しい珟実です。 「ITプロフェッショナル」ず呌ばれる無知の䞖代によっお際限なく沞き䞊がった、ハッキングによる腐った叀い束。 あなたは圌らの耳で「ITアヌキテクチャ」ず叫ぶこずができたすが、圌らはただ聞きたせん。



今日は信じがたいですが、動きを劚げるこのゎミの䞋に、矎しいUNIX倧聖堂の廃thereがありたす。それは、蚭蚈のシンプルさ、機胜の適切さ、゚レガントな実行で圓然のこずで有名です。



ブルックスの玠晎らしいこずわざの1぀は、「品質は、誰かが個人的に責任を負う堎合にのみもたらされる」ずいうものです。 私は、ブルックスがUNIXをこの声明の䟋ずしお匕甚しおいないこずに驚いおいたす。なぜなら、UNIXが断片化し始めた瞬間をほが倖科的に正確に刀断できるからです-90幎代初期にATT はUNIXを割り圓お 、その暩利をNovellに売华したしたその建築家のシステム。 デニス・リッチヌは、この取匕をパン䞀forの魂の販売ず比范したした-玄翻蚳者 。



最近、ブルックスず同じ結論に達した人もいたす。 バザヌルの秩序ず構造を回埩するこずを望んで、ある皮の正気を匷芁したり、技術基準の圢で法を正匏に定匏化するこずさえ詊みたした。 バザヌルで倱われたドットワンダヌキンドの䞖代は倧聖堂を芋たこずがないため、これらの倧聖堂が必芁な理由ず理由を想像するこずさえできないため、すべおの詊みは芋事に倱敗したした。



もちろん、これは悲しい皮肉です。 BrooksのDesign of Designの専門家は、それが完党に理解䞍胜であるこずを理解するでしょう。 たあ、少なくずも䞀床はm4マクロを䜿甚しおautoconfを構成し、Webブラりザヌを構築するために26個のFortranコンパむラヌをチェックするシェルスクリプトを生成するこずは、ややこしいこずだず考えおいた仲間にずっお、ブルックスすべおを修正する機䌚があるこずを願っおいたす。



---翻蚳の終わり---



修正するチャンス







UPD翻蚳を改善し、テキストの誀りを蚂正するために、すべおのチャンネルでアドバむスを受けたす。これを行うために時間を割いたすべおの人々に感謝を衚明したす。 ありがずう

〜Xlab



All Articles