🤝

趣味でOSS活動をしていたらスポンサーがついた話

2021/05/11に公開

これまでの OSS 活動歴

仕事では TypeScript や Go を書いていますが、Rust が大好きすぎて書かずにはいられなくなり、余暇の時間で Rust で書かれた OSS にコントリビュートしています。今までのコントリビュートをいくつか挙げると

rust-lang/rust-clippy

https://github.com/rust-lang/rust-clippy/pull/6685

rust-lang/rust

https://github.com/rust-lang/rust/pull/81922

rust-analyzer/rust-analyzer

https://github.com/rust-analyzer/rust-analyzer/pull/5687

denoland/deno

https://github.com/denoland/deno/pull/8790
https://github.com/denoland/deno/pull/9091

denoland/deno_lint

https://github.com/denoland/deno_lint/pull/406
https://github.com/denoland/deno_lint/pull/651

などです。
これらのうち、最も頻繁に、そして継続的にコントリビュートしてきているのが denoland/deno_lint です。

graph of contribution to denoland/deno_lint
denoland/deno_lint へのコントリビューション

denoland/deno_lint は Deno に組み込まれている JavaScript / TypeScript リンターで、Rust で書かれておりマルチコアをフル活用した並列処理により爆速で動くのが強みです。
過去に紹介記事を書いたのでよろしければご覧ください。

https://zenn.dev/magurotuna/articles/66618f26475702

GitHub Sponsors を始めてみた

GitHub では GitHub Sponsors というサービスを利用できます。これに登録すると、世界中のGitHubユーザーから金銭的な支援を受けることができるようになります。
登録が少しめんどくさくて敬遠していたのですが、先月(2021年4月上旬)one-time payments という機能が追加されたタイミングで、重い腰をあげて登録してみました。
法的な書類への入力が必要だったりして知識なしではかなり厳しい感じでしたが、以下のページを参考にさせていただいて無事にスポンサープログラムへの申請・登録が完了しました。

https://a9z.dev/blog/12-github-sponsors-mendoi

スポンサーページ:

https://github.com/sponsors/magurotuna

僕の場合、自分が主宰のOSSプロジェクトがあるわけではなく、あくまで1コントリビュータとして趣味でいろいろなプロジェクトに貢献しているだけなので、スポンサーになってくださる方が果たしているのか?というのは疑問に思っていました。GitHub Sponsors に登録するだけなら無料だし、とりあえずやっとくか〜くらいのノリでした。
あとは one-time payments が始まったおかげで、月額ではなく一度限りの寄付をすることができるようになったため、one-time ならワンチャンある?という思いもありました。

蓋を開けてみると、monthly、one-time ともに複数の方々から支援をいただくことができました。良い意味で予想外でしたし、趣味でやっている活動がお金という形で評価されるのは光栄ともプレッシャーとも言える不思議な気持ちでした。
支援してくださった(ている)方々には改めて感謝します。

そして、もっとも驚いたことに、Deno Land (Deno のコアチームメンバーからなる organization)からの支援もいただくことになりました。金額は僕にしか見えないようになっているはずなのではっきりと書くことは控えますが、僕の個人的な感覚としては多いです。
もちろん、費やしている時間で割って時給換算すると……みたいな話はありますが、もともと趣味の延長でやっていることなので、支援いただけるだけで素直に嬉しいです。

denoland sponsoring
https://github.com/orgs/denoland/sponsoring

今後の OSS 活動

そろそろ Deno コミュニティに関わりはじめて1年くらいになります。denoland/deno_lint は基本的な機能は揃っていると思いますが、

  • まだまだ荒削りな実装があったり、
  • ESLint のようなプラグイン機構(ユーザーが作成した独自のリントルールを使うことができる機能)がなかったり、
  • 大規模リファクタリングが中途半端な状態で止まっていたり、
  • デフォルトでは無効になっているルールを有効にする手段がなかったり、
  • ルールのドキュメントが未完成だったり

と、まだまだ改善すべき点が数多くあります。これらに引き続き貢献していくことで、deno_lint はもちろん、Deno 全体を盛り上げていければなと思います。

あとは Rust のコアに近い部分へのコントリビュートも挑戦課題としてやっていきたいところです。これは Rust という言語自体をもっと探究したいからというのもありますが、様々なプロジェクトに触れることで得られる知識が多くあるという気がしているからというのもあります。
例えば、Rustコンパイラの開発者向けのガイドである rustc-dev-guide を読んでいると、control-flow graph (CFG) という概念が出てきます。
これはコンパイラの世界では一般的で、if による制御 (control) の分岐などをグラフで表現するものですが、リンターを開発する上でも類似の概念が出てきます。類似とはいえ、コンパイラとリンターでは様々な事情が異なってくるため実態は別物になりますが、似ている概念を別の視点から眺めることは新たな気づきを与えてくれます。

そんな感じで知的好奇心を満たしつつ、楽しみながら OSS 貢献をやっていこうと思います💪

Discussion