Google Summer of CodeにThe Rust foundationで採択された

#zatsu

2025-05-09

今年のGoogle Summer of Code(以下GSoC)でThe Rust Foundation,平たく言えばRust言語コミュニティに対して"Improve Wild linker test suites"という題でプロポーザルを送り,無事採択されました.

採択通知
採択通知

既にRustとGoogleの双方からも告知が出ています:

https://blog.rust-lang.org/2025/05/08/gsoc-2025-selected-projects/

https://summerofcode.withgoogle.com/programs/2025/projects/ps99Kaqk

GSoCの応募について詳しく書いた日本語の記事はいくつかありますが,最近のものはあまり見かけなかったですし,organizationごとに毛色が異なるという印象を応募の過程で感じたので,この記事ではその辺りを中心に書いていこうと思います.

GSoCとは

GSoCそのものについては調べればたくさんの情報が出てくるので大まかにしか書きませんが,Googleが主催する若手育成プログラムです.主な趣旨としては新たなOSS貢献者を増やすことにあります.

応募者は自らが開発を希望するOSSに対して,どのような開発を行う予定なのかプロポーザルを送ります.そしてそれが採択されるとメンターがついた状態で数カ月間(通常は3カ月)当該OSSの開発に参加できます.また,それに対してGoogleから奨励金という形で報酬が支払われます.

実際には,開発対象のOSSはGoogleが選定したorganizationと呼ばれる単位での組織(=The Rust Foudationはここに相当する)が管轄しており,organizationはそれぞれプロジェクトごとにメンターを設定し,プロポーザルの審査も行います.Googleは応募者とorganizationの間の仲介が主な役割となっています.

数年前までは応募資格は学生に限定されていましたが,ここ最近は学生でなくても25歳以下でOSS初心者なら応募資格はあるようです.

応募まで何をしたか

これまでGSoCに応募を検討したことはなかったので,まずは概要を掴むところからのスタートでした.

アイディアリストを眺める

プロポーザルを送るにあたっては,どのような開発を行うのか独自の提案をしても良いとは思うのですが,大抵はorganization側がいくつかプロジェクトのアイディアリストを用意してくれています.なので最初はその中に自らの興味とマッチするものがあるかを見てみるのが良いと思います.

これはorganizationのニーズに沿ったプロポーザルを書きやすくなるという点でも利がありますし,現実問題としてメンターを安定して確保しやすいかどうか[1]という点でも重要だと思います.

The Rust Foudationの場合はこのリポジトリにアイディアが集約されています:

https://github.com/rust-lang/google-summer-of-code

私はこの中で「Wild linker with test suites from other linkers」と題されたアイディアをベースにプロポーザルを作成しました.これはWildというRust製の新しい高速なリンカーに対するテストスイートの改善を行うものです.

https://github.com/davidlattimore/wild

パッチを投げる

必要条件では無いですが(これはorganization等によっては暗黙に必要条件となっている可能性を否定するものではありません),応募対象となるOSSにいくつか挨拶代わりのパッチを投げておくのは各所で推奨されています.端的に自らがこれから取り組むつもりであるソフトウェアの理解度を示すことができるためやっておいて損は無いと思います.

私は応募対象がテストスイートの拡張に対するものであったこともあり,関係が多少ある既存のIssueをいくつかと,そこから派生して生じた改善,コードを読んでいて見つけた改善点等をいくつかパッチにしました.

応募を完了するまでに6つくらいのパッチを投げてマージされました.応募締め切り後から採否発表までの期間にも余力があったのでさらに4つくらいのパッチを投げてマージされました.

プロポーザルを書く

最重要パートだと思います.まずプロポーザルの書き方がRust側から提供されていたので読みました[2].掲載するべき事項が書かれていたので,最後まで不足が出ないように気を使いました.

また,私のプロポーザルのベースとなるアイディア自体は,独自の改良の余地は当然ありますが,骨子はある程度固定されているものであったので,プロジェクト遂行能力を示すためのこれまでの自分の経験等を差別化要因として強調しました.

そしてプロジェクトの内容と1週間ごとの進捗予定(これはRust側が書くことを要求していた)を書いて,最後に日本の大学の夏休みは海外と比べると若干特殊なので,その点についてもしかしたら若干調整がいるかもしれないという点について触れました.

あと図が1枚も無いのはさみしいので,Excalidrawで適当に改善案をまとめたそれっぽい図を1枚作成して貼りました.最終的に全体で5.3ページくらいになりました.個人情報等をマスクして公開する作業のやる気が起きたら公開するかもしれません.

レビューを貰う

プロポーザルは,最初は粗削りでも良いので早い段階で大まかに内容を確定させておくと良いと思います.なぜならGSoCは全体的にメンター(となりうる人)から事前のレビューを貰っておくことを推奨しており,レビューは一般に時間を要するものだからです.

Rustコミュニティーは割とZulipというチャットツールを用いて情報交換を行っています.例に漏れずWildもCONTRIBUTING.mdに"You're also welcome to PM me on the rust-lang zulip."と書いてあったのでDMでGoogle Documentsのリンクを送り,プロポーザルの内容について相談を行いました.

当然ですが,応募者よりメンターの方が当該OSSの様々な温度感について詳しいので,例えばこのような改善案を考えたがこれはプロジェクト的にはどの程度嬉しいのか,など様々な観点から疑問をぶつけてレビューを貰うことができました.結果として,少なくとも自分の中ではプロポーザルを大きく改善できたと思っています.

DM等の履歴を見ると,自分は締切の約1週間前に最初のレビュー依頼を投げて,その後2往復ほどして双方が納得する内容になったので,それをプロポーザルとして提出したようです.

最後に

何はともあれ採択されてよかったです.本番はここからなので頑張ります.

また,GSoCは最終レポートを書いて公開する必要があるので,媒体としてこのブログを使うかは未定ですが,何かしらプロジェクトの内容や進捗を報告できればと思います.

脚注
  1. アイディアリストに載っているからといって必ずそこに書かれているメンターがメンター業務を出来るわけではない,という点には注意が必要です ↩︎

  2. README.mdから1 hopで飛べないのは渋いと思いました.危うく見逃すところだったので. ↩︎