技術探し

JavaScriptを中心に記事を書いていきます :;(∩´﹏`∩);:

GitHub SponsorsによってOSSへの変化はあるのかどうか

数日前にGitHub Sponsorsの機能で企業が支援できるようになることが発表されました。

これにより、今後どのようにOSSに変化があるのかないのかを注目します。

特別視するのが良いアイディアか否か

そこで以下のような面白い議論が発生しました。

これはこの機能が入ったときに、もし支援している企業やユーザーだけがissueを作れて、他の人はコメントだけできるようにする機能が入ったらどうなるかという議論です。

なぜこのようなツイートをこの人がしたかというと以下の理由です。

The goal is to reduce the maintainer's burden. Today the options are: turn off issues completely or make the repo private and give access to sponsors. It would be nice to have a less extreme option.

主な目的はやはりメンテナの負荷を減らすことで、そのためにどう差別化を行うか否かです。

差別化の難しさ

上記の例はかなり極端だと思っています。GitHub側が共通で上記のような設定を加えるとは思っていませんが、各リポジトリで何かしらの差別化を行うかもしれないとは思っています。ただ、OSSでそこまで多くの選択肢はなく、そうなるとコンサルとかそういう部分かなと思います。また、issueの制限を行う等は悪手かなと思います。

他だとぱっと思いつくのは、やはり次のバージョンに向けて機能追加を投票制にするとかでしょうか。

例えば、自分の所属する組織では、機能の追加の優先度を投票制にしています。スポンサーをする場合、一般ユーザーと異なる投票するためのポイントを配分します。もちろん支援してないユーザーでもGitHubを使っている長さに応じ投票するポイントを持っています。

webpack.js.org

他の例だとromeはお金を支払うことにより、会社名(?)をツイート、readmeへの掲載のほか、xx時間の間はマイグレーションのサポートをメンテナが行う等があります。

rome.tools

あまり多くの選択肢が無い中、考えつくのはこれぐらいでしょうか。

我々だと一つの企業だけで最大年間$70,000USD(7210000円)支援してもらっていますが、これをどう捉えるかはその組織によるでしょう。自分は多くの会社は見返りを求めて寄付していると思っていませんが、何かしらは提示する必要がある以上、コミットする以外でどうインセンティブを出すべきなのかという答えを見つけていません。

現状

さて、今の世界観は以下の様になっていると自分は思っています。(図が雑。。)

f:id:about_hiroppy:20201216090635p:plain

どこのポジションももちろん大切です。developerが物を作らないと、ユーザーというのは獲得出来ませんし、逆にユーザーが使ってくれないとメンテナのモチベーションなどに直結する可能性がありますし、お互い依存されています。また、エバンジェリストはそのOSSを記事を書いたり、登壇したりしてユーザーにわかりやすく伝えます。つまりブリッジのような役割です。

しかしメンテナはどこの組織も常に少ないです。会社のOSSでない場合、どのように新規のメンテナを獲得するかは一つの大切なポイントとなります。どう他の人を巻き込み長期的にメンテナンスできるかを考えなければなりません。というのも当たり前ですが、メンテナは燃え尽きることはもちろんありますし、プライベートの変化等でいなくなる可能性が高いからです。また、仕事でやってない以上それを決めるのは自由だからです。 また義務だと思ってしまうところまで来てしまうと、OSSの楽しさでやっていたはずがそれを失ってしまう可能性がありそれは避けるべきだと思います。

この問題を解決するために、自分が知っているだけでも以下のような仕組みを作っているチームもあります。

blog.hiroppy.me

GitHub Sponsorsにより現状を変えることができるか?

お金が出ることによりメンテナが増えるのでは?というアイディアはあると思います。ただこれにも難しいポイントがあります。

ある有名プロダクトでは過去にコミットした人に対する扱いに対して答えがまだ出てないという話があります。今の人だけに対してお金を配分した場合、過去の人に足して払わないのは問題ではないか?という点です。

また、自分は2019年に同じ組織に復帰して以来、お金をもらってOSSをしてきました。 そこで以下の2点に気付いていました。

お金の計算式が複雑で完璧にはできない

それは、当たり前でコードに対して正当に評価できないからです。いろいろな指標があると思います。コード量、コミット数、PRの数、issueでの対応、など。しかし一貫して言えるのは正確な価値計算ができない点です。

お金が出ても人は辞める

お金はあくまでも一つのインセンティブであり、それをモチベーションにしてOSSをやっている人は多くないというのが肌感です。興味のほうが強いのです。また、やはり仕事やプライベートで時間が取れなくなる例も多く見てきました。あくまでも小さなモチベーションと考え多くを期待することではないと経験上思っています。

しかし、このOSSによって得たお金で大学の学費に当てることができてる方もいます。

なので、これに関しては一概には言えないとも思います。


ただ、逆に組織はお金を得ることによりフルタイムコミッターを作るという方法は大いにあります。自分はGitHub Sponsorsによりこれが全員のメンテナに行える世界が来るのを楽しみにしています。 多くの会社が支援してくれることによりこれは実現可能であり、不可能ではないはずです。

eslintでは、過去に専属メンテナを採用し失敗しました。しかしながら、これはOSS界隈にとっていい経験であり今後につながることでしょう。

eslint.org

We didn't have the budget to pay him a proper full-time salary for his work, so we agreed on 20 hours per week for $5,000/month, with Kai spending the other 20 hours of his week working on other projects or freelancing.

We tried this for a few months before it became apparent that this arrangement wasn't sustainable for Kai. While the payments from ESLint were steady, he had to spend a lot of his other 20 hours each week finding ways to make enough money. So, we updated the arrangement to be for 10 hours each week at $2,500, to give Kai more time to find other work while still providing a baseline amount of dedicated ESLint time.

Unfortunately, that arrangement also did not work.

お金をもらったらそれはOSSなのか?

OSSの定義の話はここではしません。 ところで、Vueの作者のEvanはこのように述べています。

多くの人が最初のツイートを見て、「それはもうOSSではない」というのも目にしますが、それに対する彼の反応は「だからなに?」です。ユーザーはOSSは無料で無制限に使える権利だと思っているが、これらのソフトウェアに割かれる時間やエネルギーは生計を立てる必要がある人から来ている。また、OSSは無償事業だと認識されるが、大勢に使われているソフトウェアは様々な要求や無料の技術サポートの要求に対処しなければならないことがよくある。これが燃え尽き症候群や放棄されたプロジェクトとなる。これが「本物のOSS」かどうかは気にしなく、中間モデルがすべての開発者にプラスの利益をもたらせれる可能性があるかどうかです。これは機能するかどうかわからないが、検討する価値はあります。

自分も開発者からすると、あまりOSSかどうかという点はどっちでもよく、開発しててもプラスになる世界が望む世界かなと思います。eslintの件を見てても、生活資金がOSSだけでは足りなくて打ち切りというのは悲しいです。

しかし企業が参加できるようになったGitHub Sponsorsは、敷居も下がり今後の可能性だと感じています。

さいごに

いずれにせよ、今後企業の参戦によるOSSへの変化を楽しみに見つつ、それに適応できるように最適な解を見つけていくのだろうと思います。これにより、多くのメンテナが少しでも良くなるような世界になれば良いと思っています。