要約

  • 1995年2月、Brian BehlendorfとCliff Skolnickは、ウェブ管理者がNCSA httpdの修正を持ち寄るためのメーリングリストと開発基盤を整えた。
  • グループはNCSAを基にしたApacheを自分たちのサーバーで試験したが、公開しただけでは外部の運用者が導入して実行しているとは証明できなかった。

Apache HTTP Serverの出発点は、白紙からの設計ではなく、複数の運用者に分散した保守の課題だった。Rob McCoolが1994年にNCSAを離れた後、NCSA httpdの開発は停滞した。各地のウェブ管理者がそれぞれ拡張や不具合修正を重ねており、必要だったのは変更を交換し、一つにまとめる共通の場所だった。

Apache HTTP Server Projectの公式史は、Brian Behlendorfがその仕組みづくりに担った役割を具体的に記している。Cliff Skolnickとともに、メーリングリスト、情報共有スペース、開発者用ログインを整えた。拠点はカリフォルニアのベイエリアにあるマシンで、回線帯域はHotWiredが提供した。だからといって、Behlendorf一人をApacheの作者と呼ぶことはできない。1995年2月末には8人が最初のApache Groupを構成し、ほかにも貢献者がいた。公式の貢献者一覧は、彼の仕事を開発基盤を支える多様な活動と記している。

最初の境界は、個別の修正を共通の土台へ渡すこと

グループはNCSA httpd 1.3を基に、公開済みの修正や有用な改善を集め、自分たちのサーバーで結果を試し、1995年4月にApache 0.6.2を初の公式公開版として出した。ここには異なる状態が並ぶ。修正が作られる。参加者が選び、統合する。彼ら自身のサーバーで一式を試す。そして版を公開する。どの段階も、それだけでは外部の管理者が何を導入したかを示さない。

NCSAとの境界も、単純な決別ではなかった。同じ時期にNCSA側も開発を再開した。NCSAサーバー開発チームのBrandon LongとBeth Frankは、両プロジェクトが発想や修正を共有できるよう、3月に名誉メンバーとしてリストへ加わった。最初のApacheの共通基盤は、プロジェクトをまたぐ交流の中にあった。

公開版には、もう一段の試験が必要だった

最初のApacheは利用者を得たが、作業はそこで終わらない。公式史によれば、1995年5〜6月にはRobert ThauがShambhalaアーキテクチャを設計した。モジュール構造とAPI、プール型メモリー割り当て、適応的なpreforkモデルを含む設計だ。グループは7月に新しい土台へ移り、Apache 0.8.8は8月に公開された。Apache 1.0は12月1日、幅広いベータ試験、一般的でないプラットフォームへの移植、新しい文書、標準モジュールの追加を経て登場した。

この経過が示すのは、「公開済み」と「稼働中」は違うということだ。貢献者は自分たちのマシンでビルドを試してから公開できる。外部の運用者には、機材、設定、モジュール、保守時間、切り戻し方という固有の条件が残る。プロジェクト史は、Apacheが1996年にNCSAを追い抜き、インターネットで最も広く使われるサーバーになったとする。同年5月のNetcraft調査では、回答したサイトの30%がApache、25%がNCSAだった。これは採用が大きく広がった証拠だが、全ホストの悉皆調査でも、各稼働プロセスの版を追う記録でもない。

Behlendorfの確認できる貢献は、この受け渡しにある。分散した保守が共通のリリースにつながるよう、通信と開発の足場を支えた。実装と試験はより大きなグループが担い、その後の設計には明確な設計者がいた。そして、公開された版を使うかどうかは各サーバー運用者の別個の判断だった。この仕組みは共通版がどう可能になったかを説明するが、普遍的な採用を意味しない。

Note 64は分析の視点であり、Apacheの起源ではない

Heng LuのNote 64は、公開された提案と、参加者による実装・配置・採用を区別する。Apacheの経緯を現在の視点から考えるうえで有用だが、同ノートはApacheの歴史資料ではなく、創設者たちがその考えを予見していた根拠もない。Note 64が述べる設計対象には分散台帳または同等の検証可能な状態機構が含まれる。一方、Apacheは共同で保守されたWebサーバーであり、後には公式なプロジェクト統治も持った。比較は一点に限る。版の公開を発表しても、運用者のサーバーが自動的にその版で動くわけではない。

運用者にとっては、上流のタグより先まで証拠を追う必要がある。採用するパッケージやビルドを特定し、手元の設定とモジュールで試験し、段階的に配置し、切り替え後のプロセスを確認し、切り戻しを保つ。リポジトリは保守者が何を公開したかを示すだけだ。特定のサービスで何が動いているかは、運用者が管理する検査で確かめる。

出典