GitHubの買収とオープンソースコミュニティについて

6月2日にmicrosoftgithubを買収する噂が流れて、3日には確定情報として流れて、4日には正式発表があった。これに対しては歓迎する声から悲しむ声、非難する声などさまざまな反応があった。この反応の一部が、どちらの方向についてもあまり良くないと思っているので、可能な限り問題のある反応を潰しておこうという意図でこれを書くことにした。

ちなみに、笑える反応としては、githubにアクセスするとClipperやカイル君が出てくるようになるみたいなジョーク画像の類があるけど、これを集めているとキリがないし今回はきちんと論じたいことがあるので、その辺は他所に任せたい。

それはさておき、これは長い文章(になる予定)なので、最初にふたことで要約しておきたい:

  • 新CEOのNatは割と信用できるやつで、きっとGitHubを上手くやっていってくれるので、もしMSというだけで疑っているだけならちょっと人柄を知ってほしい
  • OSSにはさまざまな立ち位置で関わってくる人がいるのだから、それぞれの立ち位置にきちんと思いを巡らせてから発言するべきであって、買収に否定的な向きを「アンチMicrosoft」などと単純化して物事を見誤ってはならないし、それに基づいてOSSコミュニティを攻撃するようなことは決してするべきではない。

新しいCEOについて

今回はポジショントークになる部分があるのでハッキリ書いておきたい。わたしにとっては基本的に他人事だけど、他人事気分でいられない事情として、新しいCEOとしてXamarinのCEOだったNat Friedmanが就任する。NatはもうXamarinを率いておらず組織上も関係ないのだけど、当然ながら彼がCEOとして手腕を発揮しているところをこの目で見てきたので、完全に身内の主観的な立場にしかならないので、彼が優れたCEOであることを喧伝するし、読者にはわたしがそういう目線で書いていることを意識して一歩引いて評価してもらいたい。彼の功績の例については5年前に詳しく書いている。

NatはもともとMiguelと一緒にLinuxデスクトップの会社であるところのHelix Codeを立ち上げてNovellに買収されるところまで成長させたfounderであり、彼自身もdashboardというデスクトップ検索のプロジェクトを立ち上げたりしていたし*1Novell時代にもOpenSUSE Build ServiceやSUSE Studioのようなビルドサービスを立ち上げてきた人間だ。VS AppCenterとやっている/やりたいことは近い。

Natはgithubを現状と同様にオープンな状態を維持していくと語っていて、これは抽象的な言い分だからどれくらい信じるか、何を信じるかはわたし自身も全面的に肯定することはないし*2、誰しも「他人がMSを信用しないこと」に対して文句を付ける筋合いは無いと思っている。Natもそう思っていて "I'm not asking for your trust" と言っている。言葉ではなく実績で信頼を維持していくというやっていきの姿勢だ。

Xamarinは商用製品で成功した会社だし、その成功モデルは別にOSSの成功モデルではないから、Xamarinで成功したからといって直ちにGithubの信頼を得られそうだということにはならない。コミュニティの信用の見込みの期待値を過剰に高めることについては、わたしは適切ではないと思っている。

githubに関するいろいろな前提の説明

gitの非独占

githubは、ソフトウェアの設計図ソースコードをgitリポジトリで公開したい人たちのためのコミュニティサイトであり、gitリポジトリで管理したい人たちのためのサービスである*3

gitはソースコードのいわゆるバージョン管理システムで、「リポジトリ」が開発開始時からの全てのソースコードの履歴を保持する。gitの大きな特徴は、リポジトリが簡単に複製でき、複数のリポジトリ上で分散管理できるということにある。gitというソフトウェアの立ち上げ人はLinuxを立ち上げたLinus Torvaldsであるが、彼がgitを作ることになったのは、Linuxソースコード管理ツールとして使われていたBitKeeperというソフトウェアがプロプラエタリで、さまざまな不利益をコントリビューターに強いていたからである(詳しくはWikipediaの説明などを参照されたい)。git以前にはSubversionというものがあったが、これはLinux開発に耐えるものではないとされていた。

gitはBitKeeper依存への反省をもとに、リポジトリのあらゆるクローンが単独で完結する仕組みとなっている。githubにあるリポジトリは、アクセスできるユーザーが全て複製してローカルで再現できる。githubリポジトリをいったんクローンして、githubの競合企業であるgitlabにpush(アップロード)のは、完全にgitが想定している使い方である。git自身もOSSとして公開されていて、Webサーバーさえあれば誰でもリポジトリをWebに公開することができる。

githubの"openness"

githubは、そこで管理されているソースコードを、本質的には独占できない。独占していると言えるのは、最新版の開発拠点になっているということと、他のソフトウェアへの依存関係(後述)があることと、変更修正依頼(pull request)や問題報告(issues)などgit以外の開発支援機能があるためである。githubはissueなどもエクスポート可能にしていて、実際gitlabはこれらを取り込むことが出来る。

githubで公開されるソフトウェアはいわゆるOSSである必要はない。ソースコードを公開することは、それが「オープンソース」の定義に準ずるライセンスで公開されていることを意味しない(Microsoftは、過去に「OSSではない」と指摘された"Shared Source" CLIを、githubで公開することができる)。しかし、公開されているソースコードは誰でもcloneしてコピーを個人的な範囲で自由にでき、あるいはgithubの登録ユーザーがforkして自分の管理下に置いて公開することが出来る(これは利用規約にそう書かれているので、たとえばソースを公開しつつ「転載禁止」とすることはできない。少なくともgithub上には転載されうる)。プライベートリポジトリを作成しておいて、そこへのアクセスを別途登録ユーザーに対してのみ開放するようなトリッキーなこともできる(たとえばEpicGamesのUnrealEngine)。もう少し補足すると、githubでは課金ユーザーがプライベートリポジトリを持つことが出来るし、無課金ユーザーでもorganizationを作って複数アカウントでグループを運用することも出来るが、organizationのプライベートリポジトリはEnterpriseなどの契約を結ばないと作成できない*4

githubはもとより営利企業であって、github.comはプロプラエタリなサーバーソフトウェアによって動作している。GitHubMicrosoftになるからといって、オープンであったものがプロプラエタリになったりするわけではない。GitHubはもともとOSSコミュニティに対してそれなりに積極的な支援の姿勢を見せてきたが、これはあくまで彼らの主観的な方向性であって、Natが指揮するGitHubも同様であると言われている(主観的な議論なので、客観的な成果は今後を見て評価するしかない)。Natが過去にOSS方面で一定の活動をしてきたことは考慮してもよいし、しなくてもよい。会社や立場が変われば事情も変わるはずだ。

オープンソースステークホルダーについて

developers, users, promoters, and co.

わたしがたまにセッションスピーカーとして参加していた台湾のカンファレンスにCOSCUPというものがある。正式名称を Conference for Open Source Coders, Users and Promoters というもので、長々しくて面食らうかもしれないが、オープンソースのコーダー(開発者)、ユーザー、広告屋(プロモーター)を参加者とするイベントである。まあ名前が幅広く「ユーザー」や「広告屋」(つまり非技術者)までカバーしていても、実質的には開発者向けイベントの側面が強い*5。しかし、ここで気付いてもらいたいのは、「オープンソースのコミュニティ」にはさまざまなステークホルダーが存在する、ということである。githubの運営会社が変わると、開発者が歓迎することであっても、そのユーザーにとっては面倒が発生するということがありうる。

OSSのソフトウェアは多数公開されているが、単独で完結していないものが多い。ソフトウェアには依存関係がある。ソフトウェアは割とソーシャルにできている。だから、自分がGitHub社やMicrosoft社と特に無関係であっても、自分のソフトウェアが依存しているソフトウェアの開発者や、あるいは逆に自分のソフトウェアに依存している開発者が、何かしらの利害関係を有していると、自分も無関係ではいられないことになる。

Are OSS people really opponent?

githubの買収に否定的なのはOSSコミュニティである、みたいな言説がよく流れていて、これが正しいかどうかはおそらく誰も検証していないと思うが、いくつか指摘しておくべきことがある。まず「オープンソース」は「フリーソフトウェア」とは違っていて(概念的にはフリーソフトウェアOSSに含まれる)、フリーソフトウェアの開発者や支持者のうち原理主義的なユーザーは、以前からプロプラエタリなGitHubも拒絶しているのである(たとえばRichard Stallmanはこうだ)。少なくとも利用していることがライセンス上矛盾しているとまでは言えないので、そこまで求めない関係者も多い。AGPLの思想とは相容れないとは言えそうだ。

フリーソフトウェア原理主義的であるかは別として、OSSコミュニティでgithubのようなサービスを使って「いない」ところも実はかなり多い。gitサーバーは自前で立てることもそれなりに簡単にできる。過去にはsourceforge.netがOSSのハブとして機能していたこともあって、今でもsf.netを使っているプロジェクトもまれにある。もっともsourceforgeマルウェア組み込み事件など多数の問題を起こして、だいぶ信用を失っていった。他には、GNU Projectではsavannahというサービスを提供している。githubの競合相手でもあるgitlabは、自分たちのソースコードを公開していて、これはgithubよりはフリーソフトウェア支持者の思想と相性がよい。GNOME ProjectはLinuxデスクトップの大手だが、github買収騒動のほんの数日前に(記憶が正しければ、自前ホスティングから)gitlabに移行した。

githubそのものは、特に技術的な「色を付ける」ことをしていないが、実際には「githubリポジトリがある」エコシステムとそうでないエコシステムがあって、githubだけを見ていても実際の技術トレンドが正確であるとは言い難い。ざっくりとした評価にしかならないが、旧くからあるUnix系のライブラリやツールはgithubを使っていないことが多い。Web系の技術ではよく使われている。githubに一番コミットしているのは今回の当事者であるMicrosoftらしいが、では.NETが開発の主流かというとそんなことは無い(MSはvscodeやTypeScriptも公開しているので、これらも大きな割合を占めている)。しかしいずれにしろ、GitHubMicrosoftのものになって、Microsoftが.NETのリポジトリを特にプロモートするようなことになったら、githubからある程度の技術トレンドをフェアに推測することすら出来なくなる。Microsoftには会社全体として統計を偏らせるインセンティブがあることは否めず、githubは不信感を持たれないように機能を実装していく必要があるだろう。

何度でも書くが、いくらNatが「信用してほしい」と言っても、その信頼性が高いと言っても、それを信じない人には信じない正当な理由がありうる。だからこそNatは「信用してほしい、とは言わない」と言っているのである。彼はこの点とても率直で誠実に事に当たろうとしている、とわたしは考えている(もちろん「だからGitHubの運用も信用してほしい/したほうがよい/しないのは不当に疑り深い」などと書くと彼の言葉選びが台無しになるので、わたしも書かないし、そういう主張をしている人にはNatの真意を汲み取ってもらいたいと思う)。

gitリポジトリは複数のサーバーに複製できるので、githubに「ミラー」を作られていることが多い。AndroidLLVMGNU各種プロジェクトなど、ポピュラーなOSSプロジェクトは、たいがいgithubにミラーが置かれている。これらはあくまでミラーであって本家ではないので、それらのソフトウェアの開発者自身がGitHubからMicrosoftへの体制変更で影響を受けるということにはならない。しかし前述の通り、OSSにはさまざまな立場で関わってくる人がいて、その中には「githubにあるミラーを依存リポジトリとして活用している」という人もいる。彼らが体制の変更について文句を言って聞いてもらえる立場であるかどうかは別途検討を要するが、利害関係があることに変わりはない。

しかし、「OSSコミュニティが文句を言っている」という字面から想像されるような構図は、こういった実態を踏まえて考えると、実のところ違和感しかない。

立場が逆であったらどうなっていたか考える

XamarinはMicrosoftに買収されるまではGoogleサービスを使っていた。メールはgmailでやり取りされ、Calendarも自然にGoogleが使われていた。Microsoftになったことで、Googleは使えなくなってしまった。社外秘のメッセージをこともあろうにGoogleに読まれるようなことになったらまずい、ということがあろう*6githubではプライベートリポジトリを使って非公開のソフトウェアを開発してソースを管理できる。GitHubが競合相手だった会社は多くないが、経営主体がMicrosoftとなれば話は変わる。

AppleGoogleなどは、元来github以外でソースを管理していて、直接的な影響を受けることはないかもしれないが、いずれにしろ、利害関係者の幅が格段にひろがるのは紛れもない事実である。githubからリポジトリを撤収しなければならないという判断を下す会社もあろう。Wiredの記事では、cycle.jsの作者はリポジトリをgitlabに移行したというし、JetBrainsは今後もgithubを使い続けるとしている。今回の動きについては、間違いなくMicrosoftのアクションによって引き起こされたものであって、OSSコミュニティの一部の反応にも理がある。これを「MS嫌いの」OSSコミュニティが文句を言っている、と評価するのは筋違いである。cycle.jsが移動するなら、cycle.jsにまつわるライブラリのリポジトリも移動するかもしれないだろう。

もしMicrosoftではなくたとえばGoogleGitHubを買っていたら、Microsoftリポジトリを撤収したかもしれない(わたしはdotnetグループに属していないので彼らのorganizationのリポジトリは見えないが、.NET Coreの開発はgithubで行われているようだし、プライベートリポジトリがあって何かを準備していたとしてもおかしくはない)。立場が逆だった時に「MSは未だにGoogleに反感をもっているのか」と言われたらどう思うか、考えてみるとよい。

多様性の尊重と哲学の相違

直接の利害関係が無いとしても、SCMビジネスの世界におけるパワーバランスが極端に変化するのを、健全な競争社会のあり方として懸念して、少しでも以前の状態に近いかたちに戻そうとする人もいることだろう。わたしもそのような行動を取ることがまれによくある。Twitterによる独占を懸念したMastodonユーザーもいたはずだ。こういう声に対しては、わたしは引き止めるために言えることは何も思いつかない。リポジトリだけなら独占することは出来ないんだし両方使っていても別にいいんじゃない、くらいのことは言うかもしれないが、開発者としては明らかに無駄だろう。ミラーを用意するのは誰でもいいはずだ。

これですら、別に「Microsoftが嫌い」だからそうしているわけではない。わたしは好んでFirefoxを使っているけど、Googleが嫌いだからChromeを使わないわけではない。

Microsoftが嫌いだ/信用できないから使わない

もちろん世の中にはMicrosoftが嫌いな人もいるだろう。わたしは個人的にNadellaはとてもよくやっていると思っているし、彼が指揮している部分のMicrosoftは積極的に支持しているが、ハラスメントやスキャンダルに満ちた会社や組織は決して支持しない。MSに親を殺された人間*7に「2018年にもなってまだMSが嫌いとか言ってるのか」みたいな無神経なことは言えないだろう(少なくとも真人間であるわたしには出来ない)。各々には各々の理由があって好き嫌いがあるのであって、それが無知によるものなら具体的に啓蒙すれば良いことだし、個人的なものであるなら(法規範などルールに牴触するものでもないかぎり)他人があれこれ口出しするほどのことでもない。そもそも他人に口出しする前に自分を省みるべきである。

diversity and inclusionを維持していくために

長々と書いてきたが、GitHubから他所へ移行しようという人たちも、おおよそMicrosoftが「嫌い」だからそうしているのではないし、Microsoftが「嫌い」であるという人たちにも相応の理由があってそうしているということをわれわれは尊重しなければならない、ということを書いた。

今回わたしが観測した中には、OSSコミュニティに対する侮辱意識をもって誹謗中傷しているようなのもあったのだけど、こういう、非マイクロソフト的な態度の人間には噛み付く「マイクロソフト騎士団*8」のような姿勢は歓迎できない。Nat Friedmanが6/7に行ったreddit AMA (ask me anything)のこの回答は、自分たちに否定的な立場をとる開発者たちについても、真摯な姿勢を見せている:

"Developers are independent thinkers and will always have a healthy degree of skepticism, but I admit I was sad to see that some felt compelled to move their code. I take the responsibility of earning their trust seriously. (...) I hope those who have tried out other Git hosts in the past few days will keep an open mind and consider moving back once we’ve demonstrated our commitment to openness and made GitHub even better. If they choose not to move back, that’s their prerogative and we celebrate developer choice even when developers don’t choose us."

(強調筆者)

Natは開発者(特にOSSコミュニティに近い開発者)というものがどういう人種であるのか、よくわかっている。こういう姿勢を見習ってほしい。

Microsoftの社是はempower everyoneであり、それをもう少し具体化した指針のひとつにrespect diversity & inclusionというものがある。さまざまな立場の人たちを受け容れ、サポートしていくことが、現在ではMicrosoftらしいやり方なのである。

最初から中立的な存在であったGitHubに、今さら新しいMicrosoftの良いところを取り込んでもらいたいと思うようなおこがましいことはないが、新しい組織体系になっても「旧」に腐食されること無く、より価値をたかめていってほしいと思っている。

*1:この辺はわたしは遠巻きに眺めていた程度にしか知らないのだけど、その後Beagleに繋がっている。Beagleハッカーはその後何人もGoogleにさらわれてしまったのだった…

*2:たとえば、わたしはacceptableだと思っているけど、ページのトップに早速合併を報告するバナーが出てきたことを取り沙汰する向きはtwitterではそれなりに観測された。これを「良くない」というユーザーもいることだろう。

*3:公開は無償で、管理はプライベートであれば有償で、それぞれ行えるものなので、ここでは区別した。

*4:これは関係者にしか意味がないけど、Xamaritansの技術書典用のリポジトリがわたしの個人リポジトリになっているのはそういった事情がある

*5:この辺は「技術カンファレンス」を標榜しているのに実際には非技術者向けイベントと化しつつある日本マイクロソフトのde:codeなんかとは真逆の感じになっている。

*6:そこまでは言わないかもしれない。Googleは決してそんなことはしないだろうという一般的な推測がはたらくが、リスク計算はされる

*7:間接的な理由を含意するネットジャーゴンとして読むこと

*8:マイクロソフトシンパと書いたら主語がでかすぎるとコメントをいただいたので表現を変えた