この記事は、GitHub Sponsorsを募集開始してから、約2年経つのでGitHub Sponsorsについて振り返った記事です。

この記事では、GitHub Sponsorsを始めた理由、Tierの設計、やってみた結果と感謝、やったことによる変化、これからやる方へのアドバイスなどを書いています。

GitHub Sponsorsを始めた理由

2019年10月からGitHub Sponsorsのページを公開して、スポンサーの募集を開始しました。

GitHub Sponsorsを始めた理由はいくつかあります。

GitHubは一番使っているサービスなので、新しい機能(GitHub Sponsors)を試したかったというのはあります。

もう一つの大きな理由としては、オープンソースの利用者がオープンソースへ支払う手段はあったほうが良いと思っているためです。 オープンソースの利用者がそのオープンソースへContributeする方法としてスポンサー(金銭的な支援)できる選択肢があることは重要です。

オープンソースにContributeする方法として、バグ報告/修正、機能追加、ドキュメントを書く、IssueやDiscussionのトリアージ、デザイン、マーケティングなど色々な関わり方があります。 その関わり方の一つとして、金銭的な支援をするという選択肢は、Contributorが選べるようになっているのが望ましいと思っています。

この考え自体はJavaScript Promiseの本をオープンソースな書籍としてリリースした際に、読者が本に対する支払い手段がないというバグを修正した際に思ったことです。

自分は自分向け(開発者向け)のプロダクトをオープンソースとして公開することが多いため、GitHub Sponsorsは支援の選択肢を作る方法としてちょうど良かったため利用しています。

GitHub SponsorsのTierの設計

GitHub Sponsorsには、月額とワンタイムの支払い方法があります。 月額とワンタイムの支払い方法に対してそれぞれ最大10種類のTier(10種類の金額)が設定できます。 (開始当初は、月額のみで、2021年の4月からスポンサー側が任意の金額を指摘できるCustom Amountsとワンタイムの支払いが追加されています。)

自分自身のTier設計は、Issue(privateなので見れない)や他の人のTierを参考にしながら作った記憶があります。

最終的に、自分のSponsorsのTierは次のように設定しています。 Tierの種類自体は、最初に作ったものから今も特に変わっていません。

  • ✨ Supporter $1 a month
  • ☕️ Coffee Supporter $5 a month
  • 🌐 Domain Supporter $10 a month
  • 📖 Book Supporter $30 a month
  • 💚 JSer.info Sponsor $100 a month
  • ❤️ Open Source Sponsor $300 a month

基本的にはMontlyの支援を優先しているため、One-timeのTierについては特に設定していません。

実際のページは次のリンクから見れます。

JSer.info SponsorとOpen Source Sponsor以外はなんとなくイメージしやすいものを設定している感じです。 推奨Tierは、$5/monthの☕️ Coffee Supporterとしていますが、GitHub Sponsors上の並び順などは変更できないため、特に意味はありません。

GitHub Sponsorsをしてくれる人は継続的に活動を続けてほしいから、継続的に支援するのだと考えています。 継続的に支援し続けるのは勇気があることだし、実際すごいことだと思います。

この支援に対して継続的な活動をするために、自分のTier設計は目先のメリットはできるだけ少なく設定しています。

これは、主に2つ理由があります。

  • 長期的な活動を目的としているため: 継続的に支援してもらうこと、継続的に活動することをイメージしているため
  • 特定のプロジェクトに紐付けるのを避けるため: 特定のメリットは特定のプロジェクトに直結しやすい性質があるため、それを避ける目的

目先のメリット(Issueの優先サポートやチャット対応などの特典)は行動を促しやすいという利点がありますが、長期的にどうなるかを考えるのが難しいという点があります。 双方(スポンサーになる側、される側)のモチベーションが、そのメリットの影響をうけるため、長期的にどうなるかは直感的に把握できないと考えています。 一方で、目に見えたメリットがない状態なら、スポンサーされる側はなにかしらの活動(ここではオープンソース活動)を続けることが、スポンサーになった方への答えとなるので少し直感的になります。

オープンソース活動を継続できるかは、お金/時間/健康/モチベーションなど人次第ではあります。 しかしながら、寄付は健康に対して正のフィードバックを与えるとする研究結果がいくつかあることや、支援してもらったお金を時間の節約に使えることなどもあるので、この辺については楽観的に考えています。

自分の場合は、もう一つの"特定のプロジェクトに紐付けるのを避けるため"という理由がモチベーションとも関係しています。 特定のプロジェクトに紐付いたメリット(〜を開発する、〜をメンテナンスする、〜にロゴを載せる)は、そのプロジェクトのメンテナンスに対する責任感を作りやすいと考えています。 そのようなメリットを作ると、自分にとって負荷になりやすい傾向がありそうだったので、特定のプロジェクトに紐づくようなメリットはTierとして取り入れないようにしていました。

💚 JSer.info Sponsor だけはやや特殊で、JSer.infoは最初からコストを最小化することを目的にしていたこと10年以上続けられた実績があることJSer.info Policyなどでやることが明確化されているため、 GitHub Sponsorsのあるなしで、自分の意識はあんまり変わらないなと思ったので別枠にしています。 (もちろん、コミュニティ的に盛り上がったほうがいいので、スポンサー自体はいつでも募集しています!)

人によってどのようなTierにするかは自由で、考え方が異なる部分だと思います。 そのため、これが正解ではないですが、改めて自分のTier設計について書いてみました。

📝 もし今からTierを設計するなら、Custom Amount(ユーザーが自由に金額を決められる)があるため、Tierの数を減らしたほうがわかりやすくなる気はします。 ただし、Custom Amountは最初なかったのと、後からAmountを変更はできないので今のようなTier設計になっています。

また、現在のSponsonsor Dashboardには、次のようなTierのアイデアなども表示されています。 これからTierを設定する人は、これも参考にすると良いかもしれません。

Tier Tips

GitHub Sponsorを募集してみての結果

現時点(2021-10-01)では、約80名以上の人がGitHub Sponsorsで支援してくれています。(ありがとうございます!)

具体的なスポンサー数とMonthly Estimated Income(単位は$)は、次のような推移で変化してきました。

GitHubスポンサー数の推移グラフ

GitHub Sponsorsでの月ごとのスポンサー数の推移

Monthly Estimated Income

GitHub Sponsorsでの月ごとの推定収入の推移(単位はアメリカドル)

約20名の方が、GitHub Sponsorsを開始当初から支援を継続してくれていて、その後は一定のペースで増えてきている形になっています。

基本的には一定のペースですが、2021年3月や2021年6月から7月あたりに普段より増えているのは、リリースなどでGitHub Sponsorsに触れてたりしていたからだと思います。

また、2020年12月と2021年6月にMonthly Estimated Incomeが大きく変化しているのは、サイボウズさんとヴェルクさんにスポンサーしてもらったためです。 それぞれ企業としてGitHub Sponsorsしたことについての記事を書かれています。

📝 ここで利用したレポート画像は、github-sponsor-reportというツールで作成しています。このレポートは途中でやめた人のデータは入らないため、実際はもっと上下してるはずです。そのため、雰囲気で見てください。 github-sponsor-reportはオープンソースとして公開しているので、自分用のGitHub Sponsorsダッシュボードを作りたい方は使ってみてください。

github-sponsor-reportの使い方

github-sponsor-reportは次の手順で利用できます。 テンプレートリポジトリをforkして自分用のリポジトリを作って、GitHub Actionsの設定をするだけです。 一度設定すれば、GitHub Actionsで自動的に更新する仕組みになっています。

  1. Create a report repository using this Template
    • GitHub Sponsorsの募集ページには公開されていないデータも含まれるのでprivateリポジトリとして作ることを推奨します
    • もし、Publicなリポジトリとして作る場合はGENERATE_ONLY_IMAGE=trueをenvに設定して、画像のみの更新にしてsnapshotsデータをコミットしないことを推奨します
  2. GitHub ActionsのsecretsのPERSONAL_GITHUB_TOKENにGitHub Tokenをする
  3. 初回は何もデータがないので、手動で更新してください
    1. https://github.com/{yourname}/{repo}/actions/workflows/update-data.ymlへアクセス
    2. "Run workflow"を実行すると、画像とsnapshotsデータが更新されます

一度設定すれば、GitHub Actionsのcronの設定で自動的に更新されるようになります。

GitHub Sponsorsをされることで負担が減ったこと

まず最初にGitHub Sponsorsしてくれている方に感謝します!

GitHub Sponsorsを開始してからの変化としては、継続的な維持コストへの金銭的/心理的負担が緩和されたと思います。

もともと、自分は維持コストが増えることに対してかなり慎重な考えもっています。 特にドメインやサブスクリプションといった金銭的なコストが増えること対しても慎重でしたが、ここへの負担はGitHub Sponsorsがかなり減らしてくれたと思っています。

具体的には、ドメインはよっぽどのことがない限り取らない方針でしたが、🌐 Domain Supporterの存在のおかげで、philan.netを作るときに迷わずドメインを取得できました。 (今、philan.netのバックエンドをVercelからAWSに移そうとしているので結果的にドメインを取ったことは正解でした)

また、Oreillyの書籍をサブスクリプションで読むためにACM会員となっていますが、本体よりは安いとはいえ$99/yearが躊躇なく払えるのは、📖 Book Supporterの存在のおかげです。

その他にも、今年は寄付について調べていて海外の学術書も読んでいたのですが、 この辺の妙に高い($50とか超えてくる)本を読もうと思ったのは、GitHub Sponsorsの存在が大きいです。

金銭的な負担が相殺されることで、開発や学習における心理的な負担が減っていると感じました。

GitHub Sponsors募集後に新しく始めたこと

GitHub Sponsorsのおかげで負担が減っただけではなく、新しいことに取り組む機会が増えたと思います。

philan.netは、まさにその典型例です。 GitHub Sponsorsそのものについて考えていて、寄付の歴史や仕組みについて調べていました。 その中で、寄付の仕組みをもっと知るためには、寄付をしてみるのが一番実践的なので、寄付をするために管理する仕組みを作って実践してみようと思って始めたプロジェクトです。

また、毎年オープンソース活動の振り返りを書いていますが、GitHub Spornsorsを2019年に開始してから、新しく作ったリポジトリの数は増えています。

作ったリポジトリ
2020: 111
2019: 81
今年のオープンソース活動振り返り @ 2020 | Web Scratch

GitHub Sponsorsを始める前(2019年)に作成したリポジトリと始めた後(2020年)に作成したリポジトリへコミットした量の比率を調べてみました。 ここで扱っているリポジトリはPublicリポジトリのみであるため、Privateリポジトリは含みません。

次の図は、2019年と2020年のそれぞれの一年間で、コミットした数をリポジトリごとに出したものです。

2019年と2020年のコミット数をリポジトリごとにだしたもの

クリックすると拡大したグラフが見れます
Spreadsheet: https://docs.google.com/spreadsheets/d/1OZz4GvORzt2YORbiJPX_QzjggoviJAV2vNDJeubQfE4/edit?usp=sharing
Source Code: https://github.com/azu/github-commit-count-per-repository

それぞれの期間でコミットしたリポジトリの数を出してみると、次のようになっていました。(Publicリポジトリのみが対象)

  • 2019年と2020年の2つの期間でコミットがあったリポジトリの総数は、322コ
  • そのうち、2つの期間でどちらの期間でも継続的にコミットがあったリポジトリは、92コ
  • どちらか片方の期間でしかコミットがなかったリポジトリは、230コ
    • 一時的なリポジトリ(テストなど)や新規リポジトリなどを含む
  • 2019年の合計コミット数は8073
  • 2020年の合計コミット数は10656

継続的にコミットしているリポジトリとしては、JSer.infotextlintJavaScript Primerなどがあります。 一方で、GitHub Sponsors開始後に新しく作られたものとしては、philan.netHonKitSecretlintなどがあります。

dependabotなどのbotによるコミットも含まれているため、あまり正確ではありませんが、それでも新しいものへとコミットする量は増えていると思います。 その中から、何割かは継続してコミットしているという形になってるようです。

色々と書きましたが、まとめるとGitHub Sponsorsを開始した後もコミット数は増えていて、公開したリポジトリも増えています。 新しいものを色々と作ってみることに挑戦できていて、その中から何かしらの需要があったものはメンテナンスが続いてるという形になっています。

これからGitHub Sponsorsについて考える人へ

For Developer

これからGitHub Sponsorsに開発者登録しようと考えている人は、次を手順を参考してください。 税金のためのW8BENの記入など面倒な部分もありますが、ほぼフォームに手順どおり入れていくだけなので、そういう機会だと思えば悪くないものです。

オープンソース活動で金銭を受け取りたくないという人もいると思います。 お金を受け取ることで義務感や責任を持ちたくないなどの理由があると思いますが、 自分のようにTier設計を工夫してみることで、気持ちへの負担が減ることもあるので検討してみてください。 もちろん、すべての人がGitHub Sponsorsをやるべきという話ではないため、必要になったら再検討してみてください。

  • オープンソースで金銭を得る | Open Source Guides
    • なぜ金銭的サポートを探している人がいるのか?なぜオープンソース活動で金銭を受け取りたくないと思う人がいるのか?などオープンソースとお金について色々と書かれているGitHubによるドキュメント

また、人に「GitHub Sponsorsでサポートしてください!」というようにサポートを頼むことに対して、必要以上に罪悪感をもたないことをおすすめします。 実際にあなたが作ったライブラリを利用したり、あなたが書いたものを参照したりしている人は、そこに対して価値を感じているはずです。 価値を感じている人に対して支援を依頼することは、その活動を維持するための健全な行動です。(逆に価値を感じている人は、支援する方法を求めているかもしれません)

Jeff Geerlingさんも、次のようなアドバイスを書いています。

For other maintainers: Don't feel guilty asking people to support you. Whether they'll admit it or not, if they're using your project, they are getting value out of it. And in the case of organizations building on top of your projects, usually a lot. Don't get all spammy (there's a reason we distrust salespeople...), but definitely ask people to assist you financially. I'm thankful for GitHub, Patreon, and my sponsors this year | Jeff Geerling

最後に、オープンソースに対して簡単に金銭的な支援ができるようになったのはまだ最近の話なので、実際にやってみないとわからないことも多いはずです。

2021年にTideliftが取ったアンケート(対象は378人)では、 オープンソースメンテナーの約半数がメンテナンス活動に対して何かしらの金銭をもらっていて、その中で5万ドル以上もらっているのは5 + 1で6%程度です。 (Tideliftはオープンソース開発者によるサブスクリプションサポートを提供するプラットフォームで、回答者のうちTideliftを利用しているのは27%ほど。そのためデータはあくまで参考程度です)

Tideliftのアンケート結果より抜粋

How much total income do you receive per year for your open source maintenance work from all sources?
The 2021 Tidelift open source maintainer survey

このデータからもわかるように、仕事の収入をGitHub Sponsorsのような支援で置き換えることは、簡単ではありません。 (置き換える簡単な方法は、仕事としてオープンソースに関わる事ですが、これは本題ではないため扱いません)

IncomeをOpen Source Incomeで置き換えるのは難しい

置き換えることを目標に置くことは悪くないと思います。 ただ、最初は既存の収入に対してGitHub Sponsorsの支援をプラスするイメージで、Tierを設計するのが良いかもしれません。 オープンソースで得た利益や活動などから学ぶことで、このバランスは変化してくるかもしれません。

IncomeにOpen Source Incomeを足すイメージ

Tierの設計が難しい場合は、GitHub SponsorsにはCustom Amount(支援する人が自由に金額を決める機能)があるため、 Custom Amountの推奨値だけを設定して、細かいTierは後回しにする方法などもあると思います。

最初からベストなバランスを見つけるのは難しいので、この辺はやりながら見つけるしかないと思います。

For Sponsors

(自分以外を含む)誰かのSponsorsとなっている人はすごいことです。

その支援している金額の大小に関係なく、支援することには大きな意味があります。 特にMontlyなどの継続的な支援は、金額以上の意味があると感じました(少なくても自分にとってはそう感じました)。

この記事も、自分を支援してくれている人に対して、支援されることについてどう感じているかを説明するために書き始めました。 自分のTierは明確なリターンを設定していないため、このような記事や年末のレポートなどを書いていますが、支援してくれていることに感謝しています。

For Company

GitHub SponsorsやOpen Collectiveでは、企業が特定の人やオープンソースプロジェクトを支援できるようになっています。

日本でも、いろいろな企業がGitHub Sponsorsなどを使ってオープンソースを支援しています。 具体的な支援の仕方や何を理由にオープンソースを支援しているのかについても紹介されているので、参照してみてください。

もしあなたが従業員で、会社に対してオープンソースのスポンサーになる理由を説明する必要があるなら、次の記事にいろいろな支援のアプローチが書かれているので参照してみてください。

90%以上の企業がなにかしらのオープンソースソフトウェア/ライブラリを利用しているという話があります。 何をサポートすればいいのか分からない場合は、ソフトウェアエンジニアといったオープンソースを利用している人と話しあってみてください。

企業として何かしらのオープンソースを利用していて、ソフトウェアサプライチェーンの一部分としてのオープンソースに興味がある人は、次のレポートやドキュメントがおすすめです。 オープンソースのメンテナー不足の問題やリスクなどについて書かれています。逆を言えば、何を支援したら安全にオープンソースを利用できるかを見つけられる可能性があります。

もっと規模の大きなオープンソースの経済効果について知りたい方は、EUのオープンソースに関するレポートが詳細でおすすめです。

まとめ

2019年10月からGitHub Sponsorsの募集をはじめてから約2年経ったので、改めてGitHub Sponsorsについてまとめてみました。

GitHub Sponsorsの募集をどういう理由で始めて、どういう考えでやっていて、その結果どうだったのかについて書きました。 また、自分を支援してくれてる人に対してその影響や価値について説明することも記事の目的の一つです。

この記事では、個人的なオープンソース活動の持続可能性について書きました。

オープンソースにおける持続可能性については、昔から話題となるテーマだと思います。 最近も、Open-core modelではカバーできてなかった部分をカバーしようと新しい種類のライセンスが生まれたり、Deno/Excalidraw/Romeなどオープンソースから始まっている会社なども増えています。 このテーマについては、まだまだ議論は続くと思いますが、実際やってみないと分からない部分も多いです。 そのため、自分もGitHub Sponsorsをやってみての話を書くことにしました。

最近はGitHub SponsorsやOpen Collectiveなど、オープンソースに対して金銭的に支援する方法が増えてきていて、既に利用できる状態です。 GitHub Sponsors/Open Collective/Patreonなどのサービスは、Montlyでの支援(継続的な支援)がデフォルトの選択肢としてあるのが、いわゆる投銭とは少し異なるような感じがしました。 そのため、オープンソースにおける活動でも、これらの支援形態によって今までは見なかった新しい動きが見られるようになるかもしれません。


自分のGitHub Sponsorsは、次のページから登録できます。 もしよろしければ、支援してくれると嬉しいです!