Design and Implementation of
Gracious Days

力武さんがこういう記事を書いている。自分自身BSD界隈に関わって15年は経つし、コミュニティ運営についてはいろいろと経験を積んだつもりなので、意見を書いてみることにした。書いてみたらまとまりのない文章になってしまったけれど、残しておくことにする。

目的のないコミュニティは続かない

「コミュニティに参加している人の年齢が高くなって、そのうちなくなるんじゃないか」という懸念は、少なくともFreeBSDには当てはまらない。活動がなくなる開発者もいるが、若いcommitter(ソースコードの変更権限を持っている開発者)は定期的に入ってきていて、人材の流動性は入口も出口も高い。CSRGの時代に活躍していた人が最近になって開発に再参加するケースも増えた。これらは国際会議の運営などを通じて交流を深める努力をしている成果でもある。50代や60代でコードを書いて参加しているひとはたくさんいて、特別なことではない。日本では忘れられて行っているような印象があるけれど、縮小したり自然消滅してしまうような状況ではないことは自信を持って言える。

一方、日本のFreeBSDユーザコミュニティは2000年代前半からすでに機能不全に陥っていたと思う。みんな情報交換のために集まっていて、興味を持つひとが少なくなるにつれてコミュニティとして機能しなくなった。

前者は開発者のコミュニティであり、後者は利用者のコミュニティである。利用者のコミュニティは、興味を持つひとの人数が維持されなければ続かなくて当然だし、続けなければならないものでもないと思う。多くの人は自分の欲しい情報が得られればそれで良く、集団で何かを作り上げようという意識はない。もちろん文書の作成やメーリングリストの運営、交流会の企画などの情報交換を促進する努力が行なわれているコミュニティはあるし、日本のFreeBSDのユーザグループもかつてはそうだった。ユーザグループが消滅したのは、みんなFreeBSDを使わなくなって、そういう情報交換が必要なくなったからだ。FreeBSDに限らず、BSD由来のコードを題材とするコミュニティは地域ユーザグループなどの形で日本にはまだ残っているが、純粋に利用者だけのグループはほとんど消えたと思う。

これを、構成員が高齢になったとか忙しくなったとか考えるのは、適切な分析ではないと思う。開発者コミュニティには、高齢なひとも忙しいひともいる例が多々あるからだ。そしてみんな開発するという目的を共有している。それに対して利用者コミュニティは集団としての目的意識が希薄で、本質的に性質を異にするコミュニティなのである。後者は、自分から何かを提供しようという方向ではなく、何かを得ようという方向で動機づけされた集団だという点が違う。だから当然、流行っている時はひとが多く、トレンドから外れると少なくなる。飽きたか、必要なくなっただけだ。

もうひとつ補足すると、日本にはFreeBSDの開発者コミュニティもあった。最も大きかったのはPAOだ。いわゆるnewconfig vs newbus論争に敗れたことや、ACPI CAのimportなどによって日本のコミュニティの開発成果の大部分が受理されないことに憤ったひとたちは、愛想を尽かせていなくなったりNetBSDプロジェクトに移った。つまり開発者のコミュニティは明確な理由があって消滅している。開発者でない、使うだけのユーザはしばらくコミュニティに残っていたが、FreeBSDの利用数の減少にともなって姿を消していった。

ちなみに、現時点でFreeBSDのcommitter, 特にソースコードを変更する権限を持って活動している日本人は存在するが、数はとても少ない(FreeBSDはsrc, ports, doc の 3 種類のcommit権限が分かれており、変更権限を得るにはそれぞれで実績を示す必要がある)。もう某オーストラリアの人とかは残っておらずプロジェクトは風通しのよい組織になったけれど、日本のローカルな開発者コミュニティの状況には変化がない。ソースコードの変更権限を持っていて、かつきちんと知識を持っているひとは数人だ。

開発者のコミュニティ

前述のとおり、OSSのコミュニティは構成員が利用者である場合と開発者である場合とで、性質が違う。これらを同一線上で考えることはできないので、まずはそれを分けて考えるべきだ。もちろんOSSプロジェクトは両方を含むコミュニティを形成することが多いので、「ほとんど利用者のみ」「開発者+利用者」の2種類と考えたほうが実際に近いかも知れない。日本のOSSコミュニティは、大半が利用者のコミュニティだ。開発者が参加していることもあるが、開発の議論が行なわれている現場は少ない。

日経コンピュータがゾンビOSSと表現した記事を2014年に出している。ここで根底にあるOSSに対する考え方は「無料で使えるソフトウェア資産」なのだと思う。それを支える開発者コミュニティへの認知が欠落していて、そこには有用性を見出していないようだ。「有用なOSSの情報を共有したい」「使い方を学びたい」。利用者のコミュニティの発生につながっているのは、そういった動機である。したがって、大部分の興味が別のソフトウェアに移ってしまえば、こういう利用者のコミュニティは自然消滅する。特定のOSSを名指しして、あたかも存在が害であるかのように連想させる「ゾンビ」と表現していることは失礼極まりないが、なぜそういう発想にたどり着くのかは理解できる。単に、利用可能な資産を評価するという立場でモノを言っているだけだ。そして、利用者側の視点から「いつまで開発が続くのだろうか」ということを不安に感じるのも自然だ。

英語を共通語としていることが多いからなのか、日本では開発者のコミュニティに直接参画しようという動きは少ないように思う。また、「あるOSSプロジェクトを中心にゆるく連帯した開発者の集団が継続的に存在していること」は、市場における人材育成の点で非常の大きな効果があるという点は、あまり認識されていないように感じる。

開発に参画しているひとの多くは本職を持っていて、それがOSSと関連していることがしばしばある。共同での開発によって組織間の技術交流が自然と発生するため、プロジェクトの規模が大きくなってくると成果物としてのソフトウェアが得られるとともに、それに精通した開発者が得られる。ソフトウェア技術者の人材流動性が非常に高い米国のような場所では、OSSプロジェクトを開発者資源として活用することで成果をあげている例が多い。特にうまくOSSを活用しているのはAppleだ。彼らは社内のビジネスに必要なソフトウェアを、OSSプロジェクトを支援することで得るという手法に長けている。現在のmacOSの基盤になったRhapsodyが公開されたのは1997年のWWDCだった。Mach 3とFreeBSD 5系のコードを組み合わせてモノリシックカーネルにしたもので、ユーザランドのコンポーネントにもOSSが多く使われていた。現在もツールチェインとしてLLVM/Clangを使う、認証基盤としてHeimdal Kerberosを取り込むなど、開発に非常に大きな労力がかかる部分にOSSプロジェクトの成果を使っている。また、彼らは単にコードを使うだけでなく、開発者コミュニティにいる開発者を雇用したり金銭的な援助を行なったりして、コミュニティを育てる努力を怠っていない。OSSプロジェクトが持つソフトウェア資産だけでなく、開発者を資産として認識しているからだ。差別化が必要な部分は社内で開発し、重要だが開発者コミュニティが存在するソフトウェアはそこに投資することで成果物を利用するという2つの方法のバランスをとって、開発を迅速に進めるとともにコストを低く抑えることに成功したわけだ。

OpenSSLやNTPdのプロジェクトが危機的状況にある/あったということは、今は広く知られている。継続性を求めて資金援助をしたり、新たに別の類似プロジェクトが立ち上がったりした。必要とされているなら誰かがアクションを起こすだろうし、誰もアクションを起こさないのであれば自然となくなる。

利用者のコミュニティの継続性は、開発者コミュニティに継続性が前提になっている。開発者のコミュニティに継続性が欲しいなら、話は単純だ。何らかの形で支援すれば良い。少なくともOSSを理解している個人や企業は、みんなすでにそうしている。「OSSプロジェクトのソフトウェア資産だけを使い、サポート会社にお金を払う」という関わり方は、開発者コミュニティの継続性に寄与しない。開発者コミュニティとのつき合い方を理解しているサポート会社もあるので、常にそうだとは言わないけれど。

プロジェクトの趨勢を心配するひとは、いつもプロジェクトの外にいる

「BSDは統合されたほうが良い」「もうBSDは滅びてもいいんじゃ」という感想は、時おり目にする。わたしはFreeBSDのコアチームに入って10年以上経つ。プロジェクト運営側の立場として言わせてもらえば、正直どうでも良くて反論する気も起きない。おそらく「同じようなものが複数あって意味あるの?」という点が気になってしょうがないのだと思う。わたしにはこれらが「ヤマトと佐川は統合されたほうが良い」「パンがあるから白米は滅びてもいいんじゃ」という意見と大きな違いがないように見えるのだ。

利用者の視点では、頼っているプロジェクトがなくなると困るだろうし、興味のないプロジェクトはなくなっても構わないと考えると思う。だから世代交替が必要だとか、逆に滅びていいんじゃとか、そういう感想が出てくるのだろう。けれど、開発者コミュニティはそういう感想には興味がない。結局のところ、気の合う仲間と開発するのが楽しくてやっているのだ。「似たようなものをつくるよりも統一すべき、そのほうが利用者にとってもプラス」というような意見に耳を傾けることはない。「GNU Hurd ってまだやってるの? もう止めたら?」なんて大きなお世話だろう。

その一方で、すでに利用者がほとんどいなくなったOSSの利用者コミュニティについて、その存在が継続することに疑問を持つのは正しい感性だと思う。そのような状況では、まずその構成員が一番最初にその疑問を持ち始めるのだと思うが、疑問に思うなら辞めれば良い。OSSの利用者のコミュニティに入ったり出たりすることは、よほど特殊なものでない限り、とても簡単だ。

継続性の議論は重要か?

利用者のコミュニティにおいて世代交替などの継続性を議論することにあまり意味はないと思う。前述のとおり、構成員の大半は何かを得ようという動機を持っていて、何かを提供しようという動機が薄いからだ。人数の増減はソフトウェアへの興味が反映されているので、コミュニティを維持したいのであれば興味を持続させなければならない。しかし、そもそもコミュニティの発生は「興味があって情報が欲しいから」に基づいているので、興味を持続させる努力をしようというのはコミュニティの存在意義と矛盾する。興味が失われた時点で、コミュニティはもう必要とされてない。

「自分が使ってるソフトウェアがなくなると困るなあ」という感想を、プロジェクト運営論にすり替えるのは論点を間違えている。プロジェクトが消滅してしまうような状況になったら、自分でメンテナンスするか、消滅する前にメンテナンスしてくれるひとを何らかの形で支援して継続を求めるのがOSSに対する適切なアプローチだ。この時、利用者のコミュニティがその支援の受け皿になってくれるケースは残念ながら少ないように思う。

すでに述べたとおり、開発者コミュニティは何かを作るという目的を共有している点が利用者コミュニティと決定的に異なる。開発者が興味を失った時点でプロジェクトやコミュニティが消滅してしまうのは変わらないが、個々の構成員による「何かを提供しよう」という動機からつくられるコミュニティはそもそも継続性が高い。たとえばわたしが長年使っているウィンドウマネージャであるWindow Makerのプロジェクトは、1997年から2005年くらいまで活発に開発が続けられ、そこから2012年まで開発は停滞した。その後また開発が再開され、今のリリースは2015年に公開されたものだ。もう使っているひとも少ないと思うが、利用者も開発者も続いている。もし本当にプロジェクトが閉じるような事態になれば、誰かが引き継ぐだろう。

プロジェクトを運営している立場にいるひとでない限り、「世代交替をどうすべきか」という類の議論は不毛に思う。プロジェクトの未来を考えた時、もちろんコミュニティが大きく成長していくことは重要だ。GNUやApache, FreeBSDなどのプロジェクトは、すべてfoundationという法人を設立することでコミュニティの継続性を確保する努力を続けている。しかし、利用者のコミュニティはコントロールできるものではないので、成長を促す努力はまず、開発者コミュニティに向けられるものである。利用者の目に魅力的に映るソフトウェアはコミュニティが活発になるだろうし、そうでなければ縮小する。

仮にプロジェクトで中心的な開発者が意欲を失ったとしても、「コミュニティの中で合意をとる意思と力があり、活動的な開発者」がそのプロジェクトの未来を方向づけるだけだ。FreeBSDプロジェクトは、創立初期のメンバが去ってから久しい。しかし、メンバが去っていく過程で「世代交替しなければ」という使命感が生まれることはなかったし、小さくなっていくコミュニティに危機感を持ったりはしなかった。逆に、年寄りと若者の意見が激しく衝突するような事態になれば、行きつくところはプロジェクトの分裂だと思う。FreeBSDからDragonfly BSDが分離したのは、年寄りとは言わないけれど意見の衝突によるものだった。いずれにしても、プロジェクトやコミュニティの存続において危機的な状況は生まれていない。

開発者の多くは、組織としてこうすべきとか、こうあるべきといった議論に興味がない。特に利用者の視点から発せられる「べき」論は現実味がないものが多く、議論しても得られるものは少ないと思う。

利用者のコミュニティに対して否定的な意見ばかり書いているように読めるかも知れないが、その存在自体が悪いことであるとは思わない。問題は、そのコミュニティが目指しているものと、それに参加しているひとに意識のずれがあると、不幸だということだ。わたしは、自身のOSSとの関わりを利用者コミュニティへの参加、具体的には文書の翻訳からスタートした。日本語翻訳は利用者コミュニティの側で意欲的なひとが作業に携わるケースが多く、とっつきやすそうに見えるのだが、とても大変で継続の難しい作業である。成果もなかなか評価されない。自発的にこのような作業に携わったひとたちは、大半が疲弊して去っていく。支援しなければ消えてしまう可能性の高い活動なのに、こういう活動を支えることができる利用者のコミュニティは少ない。

ひとつアドバイスをするのであれば、何か成果物を生み出す作業をしていて、それが自己満足の領域を越え、何らかの貢献として評価されて欲しいと考えているのであれば、開発者コミュニティに属するべきだということだ。「利用者か開発者か」は明瞭に区別できないことがあるが、開発者コミュニティから距離がある利用者だけのコミュニティは、すでに述べたとおり何かを生み出そうという動機づけが弱いので、活動に協力してくれるひとを探すのが難しい。「日本語の資料の拡充」という活動に対して、何らかの支援をする団体や個人はいるだろうか? OSSは無料だ、コストがかからないという発想のみを持つひとは少なくない。一方、開発者のコミュニティならば、何かを生み出そうとしているひとを何らかのかたちで支援しようとしてくれるだろう。

継続性の高い利用者のコミュニティの一形態は、商業的な活動をしている個人や団体が参画しているケースである。具体的にはサポート業者や教育サービスベンダといった業種の人々が入っていると、生産的な活動やコミュニケーションが活発になる。しかし、どちらにしても活動している団体や個人のモチベーションが尽きたところで活動はおしまいだ。

FreeBSD開発者の共用マシンのmotdには、「Now, shut up and code. Really.」という自戒を込めたメッセージが入れてある。コードから離れて抽象的な議論ばかりに時間を費やすようになってしまったら、本末転倒だからだ。開発者コミュニティの継続性は、コードを書くひとによって達成される。プロジェクトの運営に関する議論はもちろん大事だが、コードを書くという作業が続いているなら継続性の心配は要らない。


Next post: macOS Sierra の NFS

Previous post: Unmapped I/O on FreeBSD