山の上の木:オープンソースソフトウェアの昨日と今日

それは高く明るい方へ昇ろうとすればするほど、その根はますます力強く、必死に地中へ、下へ、暗闇へ、深みへ――罪へと伸びていく。

序章 - 脆弱 (?) なオープンソースソフトウェア

先日、doom-emacs の作者である Henrik Lissner 氏が約半年間の沈黙を破り、doom-emacs の Discord チャンネルで次のように発言しました。

image

大意は以下の通りです。

皆さん、こんにちは!私は約1ヶ月間、家庭の事情に追われてこのプロジェクトとコミュニティから離れていました。昨年経験した健康問題、ネットワーク問題、引っ越しの問題も含めると、さらに長い間です。さらに悪いことに、これらのことについて皆さんに適切に(あるいは事前に)お知らせすることができませんでした。ここでお詫び申し上げます。過去数ヶ月間の何度かの失敗した試みも重なり、Doom の将来とそのバスファクターについて、皆さんに心配をかけてしまったようです。

はっきりさせておきます:私は Doom を放棄するつもりはありません――これは単に私にとって不運で気が散る2年間だったのです。この時期はもう過ぎ去ったと願っています。

1週間かけて進捗を追い、PRをマージし、モジュールを更新した後、Discourse 上でより大きな発表を行い、現在の状況、プロジェクトの方向性、そして今後私がバスファクターやコミュニケーションの問題にどのように対処していくかについて詳しく説明します。

それまでの間は、#development チャンネルで私を見つけることができます。プロジェクトに関する質問がある方、最近私にDMやメールを送った方(返信を期待している方)、マージ準備ができている、または私の注目が必要なPRがある方は、ぜひそこでご連絡ください。

doom-emacs が何であるかはひとまず置いておくとして、Henrik 氏は Bus Factor(バスファクター) という非常に興味深い言葉を挙げています。

ウィキペディアによるこの言葉の説明は以下の通りです。

バスファクター(バス係数)は、ソフトウェア開発において、プロジェクトメンバー間での情報や能力の集中度合い、共有されていない度合いを測る指標です。「トラック係数」と呼ぶ人もいます。プロジェクトまたはプロジェクトの少なくとも数人のキーメンバーが参加できなくなった場合(「バスに轢かれる」とは、職業やライフスタイルの変化、結婚・出産、事故死など、あらゆる理由による欠席を指します)、プロジェクトが混乱し、麻痺して存続できなくなる時、そのメンバーの数がバスファクターとなります。

キーメンバーとは「プロジェクトに不可欠な存在」と解釈され、その人が持つプロジェクト情報(設計、ソースコード、知識など)が他の多くのメンバーに熟知・共有されていない状態を指します。バスファクターが高いプロジェクトでは、たとえ誰かが突然仕事をしなくなっても、関連するプロジェクト情報を十分に理解し、その人のポジションを引き継げる他の多くの人がいます。

そして、低いバスファクターは多くのオープンソースソフトウェアに共通する弱点です。もしあなたが長年 Github を閲覧しているなら、高い Star 数を獲得しているにもかかわらず、メンテナンス不足で放棄されてしまったプロジェクトを数多く目にしたことがあるでしょう。

最も極端な例は、2022年初頭に有名なオープンソースツール Faker.js の作者である Marak 氏が、意図的に GitHub 上のこのリポジトリを破壊し、プロジェクトのすべてのコードを消去し、コミットに “endgame” という言葉を残した事件です。その日、世界中のフロントエンドエンジニアは出勤すると、自分のプロジェクトが正常に動作せず、大量の文字化けが発生していることに困惑しました。

image Endgame の文字化け

さらに、彼が開発した別のライブラリ colors.js も影響を受けました。これら2つのオープンソースライブラリは、フロントエンドエンジニアリングにおいて極めて重要な基盤です。そのうち colors.js は npm 上だけで、週間ダウンロード数が2000万回を超えています(フロントエンドを扱う人はほぼ全員が使用していると考えて差し支えありません)。

Marak 氏は2020年、アパートの火災で家を失い、ホームレス状態に陥るという窮地に立たされました。彼がオープンソースプロジェクトから得ていたスポンサー収入は、日常生活を支えるには不十分でした。彼の生活はますます困窮し、2022年初頭には、この非常に残念でやむを得ない決断を下すに至りました。

この事件について、さまざまな見解が存在します: - 大企業に作品をただ乗りさせたくないのであれば、MIT License ではなく、GPL や AGPL のような伝染性のあるコピーレフトライセンスを使用すべきだという意見があります。MIT ライセンスは最初からすべての人にコードを自由に使用する権利を与えています。ただし、GPL を使用した場合、プロジェクトが今日のような影響力を持てたかどうかは別問題です(商業企業や商業製品は、一般にリリース前に法務部門がプロジェクト内のオープンソース依存関係を審査し、GPL ライセンスの依存関係がないことを確認します。そうでなければ、すべてオープンソース化しなければなりません)。 - プロジェクトがここまで発展した今、無数のオープンソース貢献者がコードを提供しており、すでにオープンソースコミュニティ全体の共同創作であるため、皆の努力を台無しにする権利はないという意見もあります。 - Marak 氏を支持する声もあり、例えば「これらの吸血虫は我々の血を吸いすぎた。少なくとも彼らに痛みを感じさせた!」というものがあります。 - ライセンスの観点から考える人もいます。確かに皆がコードを貢献しましたが、ライセンスにこだわるなら、これはあくまで Marak 氏の個人プロジェクトであり、MIT ライセンスはすべての権利を付与した後、作者に追加の義務を一切負わせないため、Marak 氏は法的に完全にこのような行動を取る権利があるという意見です。

open source クラウドインフラストラクチャのサプライチェーンの現状 xkcd-2347

同様に惜しまれる事件は他にもあります。例えば、Faker.js 事件の当事者である Marak 氏が言及した Aaron Hillel Swartz 氏です。彼は天才的なプログラマーで、初期の RSS 開発に参加し、Reddit の設立にも関わりました。彼は知識のオープンソース化を提唱し、インターネット海賊行為防止法に積極的に反対しました。その信念に基づき、大学から与えられたゲストアカウントを利用して、JSTOR 上の学術雑誌を大規模かつ系統的にダウンロードし、一般公開しました。米国連邦検察官はその後、彼に対して2件のネットワーク詐欺と11件の「コンピュータ詐欺及び濫用法」違反の訴訟を起こしました。彼は連邦検察官が提案した連邦刑務所での6ヶ月の服役を条件とする司法取引を拒否し、2日後、ニューヨーク・ブルックリン区の自宅アパートで首を吊って死亡しているのが発見されました。

image Aaron Hillel Swartz

歴史を振り返ると、オープンソース精神とオープンソースソフトウェアは、この時代において最も不思議なことの一つかもしれません。

一方で、オープンソースソフトウェア運動、フリーソフトウェア運動そのものが不可思議です。一群の知識人が自らの専門的な堀を自ら取り壊し、多くの場合、商業論理に反する形で「一人はみんなのために、みんなは一人のために」という天下大同の理念を実践しています。それはなぜでしょうか?世界は本来そうあるべきだから、社会全体の繁栄のため、そしてそれがとてもクールだからです。また、ソフトウェアを書くこと自体が作者に無限の喜びをもたらすからです――私自身、卒業時に思いました:わあ、コードを書くだけでお金がもらえるなんて、私の人生はなんて素晴らしいんだろう!

もう一方で、事実として、誇張なく言えば、オープンソースソフトウェアは今日のソフトウェア業界全体を支えており、ソフトウェア業界はオープンソースによって完全に変革されました。その結果、MIT 計算機科学科の有名な初回講義 6.001 - 有名な SICP(Structure and Interpretation of Computer Program) でさえ、現在は閉講されています。GJS 教授は「現代のソフトウェアエンジニアリングはあまりにも複雑になり、エンジニアリングというよりも科学に近いものになった。なぜなら、誰も大規模なシステムを一から構築する必要がなく、またその能力を持つ人もほとんどいなくなったからだ」と述べています。

あなたはこう嘆くかもしれません。事態が今日のようになり、一群の理想主義者がこのような境遇に立たされるとは、まさに理想の崩壊だ、と。

しかし、果たして本当にそうなのでしょうか?

オープンソースソフトウェアの力学

理想主義は素晴らしいですが、理想は現実に根ざしてこそ芽を出し、成長します。ここで、ピエール・ブルデューの「場・資本・ハビトゥス」という社会学理論を紹介し、このすべてをよりよく説明したいと思います。

[(ハビトゥス) (資本)] + 場 = 社会的実践

簡単に言えば、ある特定のテーマについて人が創造し構築した社会的空間(場)を一種のゲームと見なし、私たち一人ひとりがプレイヤーであると考えます。

プレイヤーとして、経験的には私たちはしばしば自由な行為者であると感じていますが、私たちが日々行うさまざまな決定は、多くの場合、予測可能で規定された行動や他者の態度、つまりこのゲーム自体との相互作用の中で形成された慣用的な戦略――一種の習慣(ハビトゥス)――に基づいています。

この習慣の影響下で、私たちは現在の地位(資本)に応じて、ゲームのルールと私たちが採用する戦略に従って駆け引きと闘争を行い、このゲーム内でより有利な地位を占めようとします。

以上の一連の主観と客観が一体となった有機体が、(非専門家である私が要約した極めて簡略化された)ブルデューの社会科学的世界観を構成します。

ゲームの比喩から現実世界に戻ると、同様に、何らかの利益のために行動しない人はいません。そして、その行動の目標は、おそらく自分が持つ資本を増やしたいという希望です。

image IEM 2023 で優勝した Oliveira。これで誰もが李哥を知ることになった

あなたはこう思うかもしれません。もしそうだとしたら、私たちが生産、実践、生活の中で目にする利他的行動、芸術や科学などの分野での献身的な精神、そしてこの記事で述べているオープンソース精神は、どう説明されるのでしょうか?

ブルデューの定義によれば、資本は経済資本だけでなく、文化資本、科学資本などの資本を含むシンボル資本も含まれます。異なる形態の資本が存在することを認識した上で、ブルデューは、社会的生産・生活の実践において、何の功利性もない行為は存在しないと考えています。彼は一種のゲーム理論的な視点から、人間のすべての行為は何らかの利益の計算を出発点としており、何らかの形態の資本を獲得するためであると見なしています――もしそれが私たちが考える一般的な意味での経済資本でないとしても。

異なる場では、異なる資本が主導的な役割を果たします――簡単に言えば、学術界では科学資本、芸術や文化の分野では当然ながら文化資本です。そして、異なる場における異なる資本の間にはある種の為替レートが存在するため、政治や文化のエリートが自分の影響力を発揮して経済資本を獲得したり、その逆の現象をしばしば目にすることができます。

ここで少し脱線しますが、ブルデュー理論の進歩性は、私の見解では、すべての場が人間によって創造されたものであり、人間社会から自然発生したものではないという点にあります。それは多くの現象がなぜそうなっているのかを説明すると同時に、一見根深い思想や社会現象が必ずしもそうである必要はない、つまり、ここには純粋に当為的な「天理」は存在しないことを示唆しています。そうすることで、覆し、進歩させる可能性が生まれるのです。歴史は終わっていません。

image 歴史が終わったとでも思ったのか。今こそ歴史の終焉が終わったことを教えてやる

本題に戻りましょう。この理論的枠組みの下でオープンソース精神を見ると、次のように説明できます。オープンソースソフトウェアの場において、ハッカーたち(注意:ハッカー Hackers とは、知性と創造的な方法で難題に挑戦することを好む人々であり、クラッカー Crackers、つまりコンピュータ犯罪者とは異なります。中国語圏のインターネットではこの2つがしばしば混同され、「ハッカー」という言葉に汚名が着せられています)は、「評判」などの文化資本を蓄積するために、この世界にオープンソースコードを貢献しているのです。

これは、農業社会が出現する以前、私たちの祖先が生活していた小規模な狩猟採集集団でよく見られた贈与文化と一脈通じるものです。自然の豊かな恵みの下で、社会関係はこの贈与文化によって支えられ、部族の首長たちはしばしば公に慈善行為を行いました。有名なハッカー文化文集『伽藍とバザール』が述べているように:オープンソースソフトウェアの場には、非常に希少な「生存必需品」は存在せず、初期のソフトウェアは自由に共有されていました。この物質的豊かさが、成功の唯一の基準を仲間内での評判にしたのです。

しかし、ハッカー文化とソフトウェアは、物産豊かな小さなコミュニティに留まりませんでした。フォン・ノイマン教授の予言「世界にはせいぜい5台のコンピュータがあれば十分だろう」とは異なり、今日、ソフトウェアは確かに世界を飲み込んでいます。これは素晴らしいことであり、人間の生産・生活の実践においてソフトウェアが代替不可能な巨大な役割を果たしていることを示しています。一方、資本主義の作用の下で、ソフトウェア業界が他の業界に浸透することは、必然的に場の重なりと融合を引き起こし、その結果、この業界はある程度、資本主義世界の論理に従わざるを得なくなります――コンピュータ技術とソフトウェア業界が、食べるのに困らないアメリカ中産階級のハッカーたちの小さなコミュニティ文化から世界全体へと広がり、人間の生産・生活の実践において不可欠な一部となった時、オープンソース精神の原始的な核心は必然的に挑戦を受けることになります。

したがって、オープンソースソフトウェアは、当初のユートピア的で、ごく一部の技術エリートだけのものだった牧歌的な状態から大衆へと向かい、この世界の70億人を支える資本主義と商業論理を受け入れ始めなければなりません。

無数の歴史が示しているように、一つの生産関係から別の生産関係への変化は必然的に陣痛を伴います。しかし、歴史的唯物論者として、私たちは古代ギリシャの都市国家のアテネ式民主主義から資本主義への道のりを歴史の逆行とは考えません。むしろ、これは大きな進歩なのです。

オープンソースソフトウェアの現状とその典型的なビジネスモデル

かつてのマイクロソフトがその悪名高い「Embrace, Extend, Extinguish(受け入れ、拡張し、絶滅させる)」戦略で当時のスターソフトウェア Netscape を絞め殺し、ブラウザ戦争に勝利した後、Netscape ブラウザは Mozilla Firefox(今日のFirefox)として復活し、オープンソース運動の幕開けをもたらしました。オープンソース企業 RedHat が1999年に上場に成功し、今日の “Microsoft Love Linux”(TODO:図)に至るまで、オープンソースソフトウェアに駆動されたスタートアップ企業が次々と生まれています。私は、少なくとも今日に至るまで、それが「軽蔑していた」資本主義の商業論理を受け入れたとしても、オープンソース運動が「失敗」という言葉からは程遠いと言えると考えます。

image CNCF landscape。クラウドネイティブ分野のエコシステム全体における様々なソフトウェアプロジェクトを列挙している

しかし、オープンソースソフトウェアは確かに2つの異なる形態に分化しています。

1つ目は、原初的な、ハッカーが自身のニーズから出発し、ソフトウェアを書き、より多くの他のハッカーと共に構築するためにオープンソース化する、ユートピア的な第一世代のオープンソースソフトウェアです。Vim、Emacs、Python、Linux、PostgreSQL のような、時間の淘汰を経て今日まで残った有名なこの種のオープンソースソフトウェアは、基本的にオープンソースソフトウェアのシンボルとして人々から尊敬され、称賛されています。

私が Emacs に触れたのは、Notion があまりにも便利で、便利すぎて自分の文書ツールを見直すようになり、ある疑問が生まれたからです:私はこの一生付き合うかもしれないノートのデータを、一時的に人気があってもおそらく私より長くは生きられない商業企業に預けるべきなのか?そして、意図的に調査し、Emacs の Org-mode を使ってノートの執筆とタスク管理を行うようになり、私にとっては Org-mode が Notion よりもはるかに優れていることに気づきました。しかし、このようなニーズは比較的小さなものです。人間のソフトウェアに対するニーズの多くは、現在の問題をより速く、より良く、より安く解決することです。そこで、2つ目のオープンソースソフトウェアが生まれました。

2つ目は、新たに生まれた、商業論理に駆動され、「一人はみんなのために、みんなは一人のために」という大同理念を実践するだけでなく、オープンソースを戦略的考察と市場戦略として位置づけるオープンソースソフトウェア(とその背後にある商業企業)です。今日の MongoDB、ElasticSearch、Akka、RedHat、Ubuntu、GitLab、HashiCorp stack など、例は数え切れません。今日では、オープンソースソフトウェアを中心に、数多くの実証済みの実行可能なビジネスモデルが形成されており、現在の起業家は、オープンソースに詳しい VC にオープンソース起業が成功する可能性がある理由を説明する必要さえありません。例を挙げましょう:

  • 上流のコアオープンソースソフトウェアを中心にディストリビューションやソリューションを提供し、ライセンスやソフトウェアサブスクリプションサービスを販売し、運用面での利便性やソフトウェアの可用性保証と交換するモデル。この例としては、Linux に対する Ubuntu、RedHat、各パブリッククラウドの Kubernetes コンテナサービス、各パブリッククラウドのデータベースサービス(MongoDB が商業競争を禁止するためにオープンソースライセンスを変更するほど、ただ乗りされてしまった)などがあります。
  • 基本機能は無料でオープンソース、高度な商用チーム向け機能はクローズドソースで有料のモデル。この例としては、GitLab、InfluxDB、Grafana、Envd/Modelz、HashiCorp Stack などがあります。
  • Linux、Kubernetes、PostgreSQL、Prometheus のような複雑な大規模オープンソースソフトウェアを中心にコンサルティングサービスを提供するモデル。

オープンソースのビジネスモデルが成立する理由は、ソフトウェアのソースコードが、そのソフトウェアに関するすべての知識(ソフトウェアの設計思想、アーキテクチャの進化の歴史、そして最も重要な安定した運用のための運用知識)と等しくないからです。上層のアプリケーションが安定して動作するために非常に重要なこれらの知識は、多くの場合、コア開発者の手にのみ握られており、それが商業化の基本的な論理を構成しています。

例を挙げれば、主業務がパブリッククラウドの各種サービスではない企業が、クラウドサーバー、データベース、コンテナサービスなどの技術を使用する必要があるからといって、自前でデータセンターを構築し、AWS やアリババクラウドのようなパブリッククラウドサービスを使用せずにクラウドインフラストラクチャを一から構築するのは、明らかに非現実的です。

あなたはこう尋ねるかもしれません。業務が異なり、ソースコードにも関心がないのであれば、オープンソースソフトウェアであることが何か重要なのか?と。

これらの分野で、もし商業企業が自社のクローズドソースソフトウェア、例えば POSIX インターフェースプロトコルに準拠したオペレーティングシステムを販売しようとするなら、彼らは必ずこうした疑問に直面するでしょう:あなたのソフトウェアは、30年の検証を経た Linux と比べて、いったいどこが優れているのか?私たちは現在、企業が Linux と競争しようと試みることさえなく、むしろ皆、差別化できる部分だけを行おうとしていることに気づきます。


オープンソースソフトウェア、そしてソフトウェア業界全体のこのような変化に、私は非常に興奮しています。 なぜそう言えるのでしょうか?

終章 - 人民史観 vs 英雄史観

記事の冒頭で言及された Henrik 氏は、間違いなく、星々が輝くユートピア時代を今日に継承する者であり、絶対的な意味での英雄です。Henrik 氏が書いた doom-emacs は、私のような Vim ユーザーが Emacs の世界に足場を見つけ、Notion よりもはるかに優れた文書作成体験さえ得ることを可能にしました。Henrik 氏は私に素晴らしい NixOS を発見させ、終わりのないシステム設定と苦痛なロールバックから完全に解放してくれました。

今回のバスファクターをめぐる小さな騒動について、Henrik 氏は決して Doomemacs を放棄しないと表明し、コミュニティに説明すると約束しました。しかし、遅かれ早かれ、英雄はいつか老いていきます。その時、英雄の足跡を追う私たちはどうすればよいのでしょうか?

image The net is vast and infinite. 私は最後に素子がネットワークの中に消えていくという結末がとても好きです。観客はアイドルとしての素子を必要とせず、素子も自我で自分を縛る必要はない

文書の分野に限って言えば、emacs / org-mode の活発なコミュニティからは、LogSeq のような使いやすい文書ツールとスタートアップ企業(シードラウンド 410万ドル)が立ち上がりました。Notion の影の中からも、オープンソースの AFFiNE(プレシリーズAラウンドで数千万ドルの資金調達)のようなスターチームが生まれました。

同様のことが現在、ソフトウェア業界のあらゆる分野で次々と起こっており、これらすべては、歴代のオープンソースソフトウェアと理想主義者の先人たちが今日の世界のために築いた堅固なインフラストラクチャの上に成り立っています。この業界の巨大企業は、20年前のように簡単に業界全体を独占することはもはやほとんどできません。私は信じています。インフラストラクチャのさらなる整備は、将来、社会の細分化された分業という虚偽の神託を打ち破り、誰もが自由にこれらのツールを使って何か面白いことをできるようになるでしょう。

英雄は老いていきますが、歴史上の他の悲劇とは異なり、オープンソースソフトウェアの場にいる人民は英雄を裏切りませんでした。むしろ、彼らは英雄たちが切り開いた道に沿って、本当にこの世界を変え、改造しました。今日、オープンソースソフトウェアのかつての「敵」であったマイクロソフトでさえ、オープンソースソフトウェアとオープンソース運動の実践者となっています。

オープンソースソフトウェアが大学の象牙の塔から資本の受け入れへと向かうことは歴史の必然であり、オープンソース精神の理想はこの変遷と共に消え去ったわけではありません。むしろ、それは人々がすべての希望を英雄に託さない、全く新しい世界を生み出しました。私たちの理想が、オープンソースソフトウェアのように、堅固な大地に根を下ろし、世界の泥を伴いながら、そこから養分を吸い上げ、力強く成長し、天を衝く大樹へと育つことを願っています。

/オープンソース/ /ソフトウェア/