Working in Public をよんだ #39
azu
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Working in Public by
Working in Publicは、オープンソースの開発とメンテナンス、資金についてよく調べられた書籍です。
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>ここでのオープンソースは主に GitHub 以後に焦点を当てて書かれていた気はします。
オープンソースのアマチュア化
GitHub から始めた世代は、Open Source と Free Software のような違いのような部分に強い問題意識を持ってるわけではなく、ただ作りたいものがあって GitHub が便利だったから使ってるという話。
これを「オープンソースのアマチュア化」と呼んでるのが面白かったです。
特に JavaScript は、npm の小さなモジュールが多いため、この「オープンソースのアマチュア化」が進んでいるという話もありました。
JavaScript で有名な開発者は、Linux の Linus のように有名なプロダクトを紐づけて知られているのではないケースも多い。
たとえば、Sindre Sorhus や Kent C. Dodds のように特定のプロダクトというよりも、その人自体で有名になっているケースが多いという話。
オープンソース 「プロジェクト」
オープンソースコードじゃなくてオープンソースプロジェクトと呼ぶのは、コードだけではなく、コミュニティ、コード、コミュニケーションツール、開発者ツールの組み合わせ全体を指すという話。
これは確かにと思った。自分が OSS じゃなくてオープンソースと言うようにもなったもの少しにた感覚から来てます。多分扱う範囲が広がっているんだと思います。
オープンソースプロジェクトの分類
Node.jsを例にして、オープンソースの成熟への段階として次の3つがあるという話がありました。
Growthまでくるとアクティブユーザーが多くなり、プロジェクトはユーザー支援に時間がかかるようになるという話。
また、ユーザーの増え方とコントリビューターの増え方によって、オープンソースプロジェクトを次の4つのモデル分類できるという話もありました。
これがだいぶ面白い感じで、それぞれのモデルで次のような特徴がある。
この4つのモデル間での行き来はできるので、ClubsだったものがStadiumsになったりもする。
コンセンサス
コンセンサスという言葉はオープンソースプロジェクトでよく見るようになったけど、これが機能するにはコントリビューターがある程度いないと機能していないという指摘が良かった。
具体的な例としてはLernaのICEライセンス問題で、スタジアムモデルだと「コンセンサス」はあってないようなものであるという話
これは確かに、少人数だとコンセンサスはコンセンサスでもないなーとは思った。
メンテナンスとコスト
ソフトウェアの配布はzero marginal cost なので、いくら利用者が増えてもほとんど無料で配布できるという特徴がある。
そのため配布したら、そこからは初期費用よりずっと上がり続ける特徴を持っているという話。
この対応として、オープンソースプロジェクトはモジュール化される傾向がある。
RailsとMerbの統合やBabelのプラグインなどはこれにあたるとおもう。
成長段階ではプロジェクトのメンテナーとしての名声はあるが、成熟してくるとそこが一定になっていく。
一方でユーザーは増え続けるため、コストは上がっていくという構造の問題についての話。
また、メンテナーが利用可能なattentionは有限なので、それをどうやって管理するかというパターンの話も良かった。
オープンソースにおけるお金の役割
この本を読もうと思った理由でもあり、この本が書かれた理由でもある。
cURLの話、Trivagoがwebpackのスポンサーしたら何故かそれを理由に求人への応募が増えた話など色々。
この話が特に面白かった。
コードやライブラリといったオープンソースのプロジェクトに対してお金を払うというよりも、そのメンテナーに対して支払うという傾向があるという話。
先ほどもあったけど、プロジェクトのユーザーが多くなると、評判は一定になるけど、プロジェクトメンテナンスのコストは上がっていく。
なので、そのプロジェクトのメンテナーが新しい評判を作るのが難しくなって、止まってしまうという問題が指摘されていた。
このサブスクリプション的にその人を支援する形式だと、支援された人が新しいものを作るインセンティブ(より評判を集めるため)になるので、より創造的なものを継続的に作る仕組みになって良いのではないかという話。
これは、最初のアマチュア化とも関係しているなーと読んでて思った。
特定のプロジェクトではなく、特定の人のファンが増えているという現象とも繋がっている感じがした。
📝 NAISTのGitHub Sponsorsの利用を調査したレポートによると、GitHub Sponsors利用者のうち約80%の人は1か2人をスポンサーしている
プロジェクトベースじゃなくて人ベースであるのは、プロジェクトに縛られないという点で、メンテナーにとってはいい点も多いとは思う。
プロジェクトベースだとメンテナンスが強くなりがちだけど、人ベースなら新しいものを作ってみるとかもやりやすくなる。
自分もプロジェクトに縛られすぎないようなことは考えてGitHub Sponsorsやってるのでこの辺の話はだいぶ面白かった。
一方で、誰でもこの状態になるのは難しいよねって話もあった。
また、あまりにもオープンソースプロジェクトは多すぎて、だれを支援すればいいのかわからないという問題もある。
これが読もうと思ったきっかけのcore-jsの話とも似ていて、特にJavaScriptは依存関係が膨大で誰を支援するべきかわからなくなるような問題がある。
自分が依存してるライブラリのメンテナーのSponsorできる選択肢をhttps://github.com/sponsors/exploreで見れるが、膨大な数が出てくる。
なので、実際にスポンサーできる選択肢が多すぎると、どれをサポートすればいいのかわからなくなってしまうという問題は実際にあると思う。
この問題に対しては、「ハイコンテキスト、ローディスカウントレート」を取るのがいいのではという話だった。
一つ例として出していたのは、無料で公開してる本のアクセスを調べてみたら、特定のサイトからのアクセスが多かったので、そのサイトの読者に向けて本を売るという話だった。
core-jsやferossがかつてやっていたターミナルに広告を出すという手法は「ハイコンテキスト、ローディスカウントレート」ではなかったのが、うまくいかなかった理由なのかもと思った(ハイタッチな人を選んで出す仕組みになっていれば、フラストレーションはもっと低くしつつうまくできたのかもしれない)。
funding
experiment » Feross.orgまたは、core-jsのような依存の依存のようなライブラリだと、そもそも使ってることを意識しないのでハイコンテキストとするのが難しいのかしれないと思った。
長々描いてしまったので色々飛んだけど、詳細はStripe Press — Working in Publicを読みましょう。
大きく分けて、いわゆるプロジェクトのメンテナー的な深く専門的な方向(プロジェクトとして支援される) と もっとカジュアルで新しいものを創造する方向(人として支援される)の2つがあるよねって感じ。
これをダンベルというのが面白かった。(凹 みたいな形になるからだと思うけど。)
(これと同じような話は、ジャーナリズムなどのニュース業界でも起きていたりするという話も面白かった。)
どちらの場合でも、普通の仕事と同じ金額を稼いでも同じではないという問題はある。
普通の仕事とは違って、保険がなかったり、税金的な部分が異なるので、同じ金額を得ても同じ負担にはならないという問題。
そのため、フルタイムのオープンソースメンテナーになるには、色々ハードルがある。
けど、最近Open Source Collectiveが、プロジェクトの資金を使ってメンテナーを雇用できる仕組みを実装したので、この辺の雇用的なハードルも変わってくるかもしれない。
This discussion was created from the release Working in Public をよんだ.
Beta Was this translation helpful? Give feedback.
All reactions