あなたの知らないOSSの裏側 - tokio-rsで気付いたOSS運営の"リアル"3選のトップ画像
OSS応援最後まで読んで「応援」しよう

あなたの知らないOSSの裏側 - tokio-rsで気付いたOSS運営の"リアル"3選

投稿日時:
mox692のアイコン

mox692

Xアカウントリンク

本記事では、「OSS応援企画」として記事末に「応援ボタン」を設置しています。1回の応援につき、Findyが100円をOSS団体などへ寄付し、エンジニアの成長とOSSの発展を応援する取り組みです。開発者の想いや取り組みに共感した気持ちが、OSSの支援にもつながっていく、そんな前向きな循環をFindyは目指しています。「応援ボタン」は、1日1回まで押すことができます。記事を読んで「いいな」と感じたら、ぜひボタンを押してあなたの応援の気持ちを届けてください。


こんにちは、mox692 と申します。普段はSoftware Engineerをしながら、Rustの非同期ライブラリ「tokio-rs」のメンテナとしても活動しています。

今回は「CodeSideChat」企画の一環として、私がOSSに関わるようになって感じた意外と知られてない事実3選を紹介したいと思います。

Tokio-rsとは?

tokio-rsというのは非同期ランタイムと呼ばれるもので、RustのAsync/Awaitを使ったプログラムを書く際に必要になるライブラリです。

Async Runtimeとしてタスクをスケジューリングするというのがライブラリの主な役目ではありますが、tokioは他にもネットワークIO、ファイルIO、非同期データ構造(チャネル、ミューテックス、セマフォ等)、タイマーなどなど、ランタイム以外にも様々なモジュールを提供しています。

Projectもそれなりに大きくて、crates.io の統計によると毎日数十万のダウンロードが行われているようです。

1.png

crates.ioより

関わり始めてから気づいた、意外と知られていない事実3選

私は去年の初めくらいからこのProjectに関わり始めたのですが、それまではOSSとほぼ無縁でした。しかし実際に1年ほど関わってみると、今まで考えてもみなかったメンテナとしての意外な発見や気づきがいくつもあったので、この記事ではその中から3つピックアップして紹介したいなと思います。

はじめに断っておくと、これらのエピソードはあくまで私が体験したものであり、実際の事情はProjectによってかなり変わってくると思います。あくまで1つのサンプルとして捉えていただければと思います。

1: ごく一部のスーパースターのような人によって支えられている

みなさんが普段使ってるOSSってどれくらいの人数でメンテされていると思いますか? OSSと聞くと、優秀なエンジニアがたくさん集まって開発が行われているのだろうと想像するかもしれません。しかし実際のところ、個々人のコントリビューションの度合いには大きな差があるように思います。

これは、tokio-rsのような、企業がお金を出して開発しているわけではないプロジェクトで特に顕著なのかなと思います。このようなProjectは基本的に個々人の「やる気」によって進んでいくからです。

例として、下記にそのようなことがよく分かるスクリーンショットを載せてみました。

2.png

私が通知を管理しているGitHub Notificationのスナップショットです。ある1人の人がほぼ全てのIssue/PRに返信をしていることがわかると思います...。(ちなみにこの方はコアメンテナの1人で、Rustエコシステム内でも影響力があるスーパースターのような人です

これが1日とか2日程度のことであればいいのですが...残念ながら(あくまで執筆時点では)割と恒常的にこういう感じです。

tokio-rsはRustのAsyncエコシステムにおいてある種コアとなる基盤ライブラリなのですが、そんなライブラリでもこんな少数かつある種属人的な感じでメンテしているのかと最初驚いた記憶があります。

このように、例え広く使われているライブラリであっても、実際にメンテしている人は少数というのは少し意外に感じられるのではないでしょうか。

2: 短期間だけいて、すぐいなくなる人が大半

これまでtokio-rsにcontributeしてくれた人というのは数多く、確認したところ執筆時点で大体850人ほどいるそうです。

しかし実際のところ、1-2回だけコントリビュートして、その後二度と現れなくなった人たちが大半です。

これに関しても、そのことが分かるデータを引っ張ってきました。

3.png

これはGitHub APIから取得した、コントリビューターのコミット数(横軸)と、そのコミット数が全体の上位何%にあたるかのパーセンタイルを示したグラフになります。(一部を示したもので、横軸はもう少しデータがあります)

このグラフから、半数以上のコントリビューターが1回コミットしただけのユーザーだというのがわかると思います。

このメトリクスはいろんな捉え方ができると思いますが、私が思うのは、例え大きなインパクトのある変更を提案しなくても、長くcontributionを続けているだけで差別化できるということです。

PRの質が良いとか、レビューで鋭い指摘ができるとか、大きいfeatureを導入できたとか、良いコントリビューターとしての指標は色々あると思いますが、ある一定の基準を超えると 「長く続けている、長くprojectに関わっている」という方が大事なんじゃないか?と最近は思っています。 実際、現在コアメンバーとしてProjectに残っている人は少なくとも3-4年以上は継続して関わっている人たちですしね。

そして、長く続けるためにも、自分が興味を持って取り組めるOSSを見つけるのが大事だなと思っています。

3: 「レビュワーだけがレビューしていい」という訳ではない

プロジェクトによってPRのレビューのガバナンスは多少異なるとは思いますが、tokio-rsは基本的に誰でもpull requestをreviewしてもいいということになっています。(CONTRIBUTING.md より)

ちょっと意外かもしれませんが、私はメンテナじゃない人がレビューしてくれているのを見ると、すごくありがたいなと思います。

理由はシンプルで、これらの行動はメンテナの負担を下げてくれるからです。メンテナは限られたリソースの中でPRのレビューを行う必要がありますが、メンテナも人間なので当然見落とし等のミスがあります。

そういったときに、他のコントリビューターが「このロジック、間違っていない?」などとコメントしてくれると、非常に助かります。レビュワーとしての肩書きがなくても、そのようなフィードバックはとても価値があります。

image1.png

Drive-by reviewの例

実際、メンテナの立場からすると「レビューしてくれる人が増える=品質のセーフティネットが厚くなる」ので、プロジェクトとしてもより健全な方向に向かっていきます。また、複数の視点が入ることで、より多くのユースケースや利用者の観点に対応したコードになりやすくなります。

だからこそ、レビューは「レビュワーだけがやるもの」ではなく、誰でも参加していい、歓迎される行為であるべきだと思っています。気軽に一言「これってどういう意図?」と聞いてみたり、「ここ、少しtypoがありますよ」と伝えてみたりするだけでも、それは十分な貢献だと思います。

おわりに

いかがだったでしょうか。今回はRustの人気ライブラリであるtokio-rsにメンテナとして1年間関わる中で気づいた「意外と知られていないOSSのリアル」を3つご紹介しました。

OSSというと「自分にはまだ早い」「貢献するには高いスキルが必要」と感じる方も多いかもしれませんが、実際には小さな貢献を長く続けるだけで価値がありますし、ちょっとしたレビューコメント一つでも十分な貢献になります。

もし、今回の記事を読んで「ちょっと覗いてみようかな」「自分にも何かできるかも」と思ってもらえたなら幸いです。

OSS応援企画

Findyはエンジニアの成長とOSSの発展を応援します

Loading...

現在44の応援が届いています🤝

Loading...

寄付期間:~ 7/8 上限金額:200,000

プロフィール