GSoC2024に採択された
こんにちは。Akihoです。 GSoC(Google Summer of Code)2024に採択されて早3週間くらい経ちましたが、そのことについて(今更)書きたいと思います。 ※ このブログで紹介しているのはあくまで私個人のケースです。GSoCの正確な情報は公式ホームページで調べてください。
GSoC(Google Summer of Code)とは...??
ざっくり説明すると、メンターの指導を受けつつオープンソースプロジェクトに3ヶ月くらい貢献するとお金がもらえるというイベントです。 新規でOSS(open source software)へ貢献する人を増やそうとする取り組みの一環という感じだと思います。 ただみんながみんな参加できるというわけではなく(資金は有限だし...)、まずは自分が参加したいと思っているprojectに関してどのようにそのprojectを実装するのかなどに関してProposalを書き、そのProposalが選ばれれば参加することができます。 詳しくは公式ホームページ等を参照してください。ちなみに今年は完走すると$5400がもらえるみたいです🤑
GSoCの流れ
上で、選ばれるまでのステップとその後に実際に参加するステップがあるということを書きました。もう少し細かく流れを書くとこんな感じです
- GoogleがGSoC Studentを受け入れることができるオープンソース団体(以下ではorganizationと書く)を募集する。→ メンターや資金を提供できるorganizationが選抜される
- 選抜された各organizationはStudentにやってほしいというプロジェクト案(idea listとかと呼ばれることが多い)を提示する
- GSoC Student候補者はどのorganizationのどのプロジェクトに参加したいかを決める。ただし、organizationが提示したプロジェクト案にないものでも構わない(ただ選ばれるためのハードルが少し上がるかもしれない)
- GSoC Student候補者は、どのプロジェクトをやりたいのか、どのようにそれを達成するのか、どういうスケジュールで進めるのか、などを書いて(Proposalと呼ばれるもの)、期限までに提出する
- 各organizationが提出されたProposalを見て、自分のorganizationに応募してきた候補者に順位をつける。この中で参加枠内の順位の学生が採択される。
- 採択されたら、メンターに指導を受けながら各々プロジェクトを進める
- 完走できたら報酬金が受け取れる
採択されました
私はFree and Open Source Silicon FoundationというorganizationでGSoCに参加することになりました..!
というわけで、採択されたので完走できるように頑張ります
cf. 応募内容 (少しニッチな話かもなので...)
元々はETH Zurichで開発が始まったArianeというオープンソースのRISC-Vのコアがあって、それが今はOpenHW groupの下でCVA6というオープンソースなコアとして開発・メンテナンスが続けられています。
CEA(Commissariat à l’énergie atomique et aux énergies alternatives; フランスの原子力・代替エネルギー庁)では、HPDCという高性能なL1データキャッシュをオープンソースで開発していて、CVA6/ArianeでHPDCをL1データキャッシュとして選択できるようになっています。
今回のGSoCのプロジェクトはこれを命令キャッシュとしても使えるようにすること、さらにはOpenPitonという、プリンストン大学で開発が始まった、マルチコア化をサポートしてくれるオープンソースがあるのですが、それに接続できるようにすることが目標となっています。
採択までの道のり: 私の場合
全体的なスケジュール感
GSoC2024の採択までのスケジュールはこんな感じでした。
応募側が実際に関係があるのは2/22くらいからのものです。私は2/25くらいに選んで3/10くらいまであるプロジェクトのコードとかをのんびり眺めてProposalのメモとかを書き始めていたりしたのですが諸事情で(以下の「プロジェクトを選んだ時の基準」のところで言及しています)プロジェクトを変更することにしました。一からコードも読み直し・環境も作り直しになってしまったのでかなり焦りましたが、3/20前くらいにProposalの初稿を書いて添削のフェーズに入ることができました。
4月に入ると、ちゃんと応募できたのか不安だったので毎晩Proposalをsubmitしていました😅
プロジェクトを選んだ時の基準
私の場合は、もともとorganizationが提示してくれていたprojectから選んだのですが、このプロジェクトを選んだ理由は大きく2つあります。
- ハードウェア関連のプロジェクトであったこと
- メンターに米国の大学の先生がいたこと
です。
1.に関しては、私は大学院ではハードウェア分野を専攻しようと思っている一方で、卒論配属は深層学習の理論寄りな部分になっていて、正直なところレイヤーが全く違います。せっかく今までの研究インターンでverilogを書けるようになったのに、しばらく書かなかったら力が落ちるのではないかと不安になったので、応募するときはverilogなどのHDLを使うという条件でまず応募するプロジェクトを絞り込みました。
2.に関して。1.の時点でかなり応募先のorganizationが絞られていたのですが、そこからこのプロジェクトにした理由は、メンターに米国の大学の先生が入っていたからでした。以前からも公表しているのですが、私は学部卒業後大学院からはアメリカのPh.D.コースに進学したいと思っています。アメリカのPh.D.コースに進学するには、日本みたいな大学院入試みたいなものはなくて、推薦状や論文実績、学業成績、英語の各種テストのスコアなどで総合的に選抜されます。その中でも「コネ」というのはかなり重要視されます。これは特にハードウェア寄りの分野では顕著だという話はあって、なぜならハードウェアの分野ではソフトウェアや機械学習寄りの分野に比べて研究のサイクルが長くなりやすく、学部生が直接Ph.D.コースに出願しようとする場合だとスケジュール的に論文実績をうむことがかなり難しくなるからだと言われています。つまり、論文実績を作ることが難しいので、先生とコネクションを築いてそこで自分の技術力などを示しておくことが合格する確率を上げるのに重要だということになります。
メンター達とのコンタクト
採択されるにはメンター達とのコンタクトがとにかく重要らしいので頑張りました。
参加するプロジェクトを決めたら、すぐにそのメンター達に参加したいと思っているという旨のメールをしました。
実は、このプロジェクトに決める前は、別のプロジェクトにしようと思っていたのですが(もちろんこれも先述の2項目の基準を満たしていた)、複数回いろいろな内容でメンターにメールを送ったのですが、メンターからの返事が全然帰ってこなかったので、そもそもGSoCにあまり積極的ではない先生なのかな?もしくは私に興味がないのかな?と思ったので、プロジェクトを途中で変えました。(大学の先生の場合、フルタイムでそのOSSに従事しているわけではないので、あまり積極的でない可能性はあると思います。)
今回実際に応募したプロジェクトでは、すぐにメンターの方々から返信が来たのでとても安心しました。
その後のコンタクトとしては、ProposalをGoogle Documentで書いてリンクを共有して、たくさんコメントをしてもらいました。また、自分の理解がこうだけど正しいのか?という確認はメールでたくさんするようにしていました。理解度のアピール&メールのやり取りを途切れさせない(私のことを忘れさせない)ために始めたことでしたが、自分の認識を訂正してもらって理解が深まったり、プロジェクト案には書いていなかった内容(そのオープンソースの今後の具体的な展望など)も引き出すことができたので、それも積極的にProposalのネタとして使うようにしました。
Proposalの作成にあたって気をつけたこと
実際のProposalです(CVは個人情報が多かったのでリンクを削除しています)
Proposalの作成にあたって以下のようなことに気をつけました。
- 過去の参加者の方々のProposalをとにかく参考にして初稿を早めに書き上げる
- Proposalをメンター達に共有してコメントしてもらう & それに基づいて修正する の繰り返し
- 大学でしている研究インターン先の先生にコメントしてもらう & それに基づいて修正する の繰り返し
学事歴的な理由で日本からGSoCへの参加者は少ないのですが、過去の参加者の方々がたくさんブログを残してくださっているおかげで参考にできるものはたくさんあります。それを参考にして初稿はさっさと書き上げてしまうことが大事だと思います。ざっと構成と項目を考えて、あとはとりあえず埋めるくらいのノリで、締切の2週間前くらいには初稿は書き上げていたと思います。(途中でプロジェクトを変更したのでかなりスタートは出遅れてしまったのでかなり焦りがありました)
Proposalをメンター達に共有して添削してもらいました。ここでどのくらいレスポンスに時間がかかるのかわからないので、初稿は早めに書いたほうがいいと思います。(幸いなことに私の応募したプロジェクトのメンターはすぐにフィードバックをくれました。)
よくコミュニケーションをとる人の中でハードウェアをやっているのが研究インターン先の先生だったので、先生にProposalを見てもらいました。初めは正直GSoCのことを言い出せずにいたものの、思い切って伝えると、とても丁寧に見てくださりました。(半分以上書き直しになりましたが😅) 以前から先生にもハードウェアの分野で海外院進したいと伝えていて、先生も海外院進に関してとても好意的な考えを持っている方だったので、推薦状なら全然書くよ!とは言ってくださっていたのですが、今回GSoCに応募しようと思っているという旨を伝えたことで私の海外院進への本気度みたいなものを示せたのかなと思っています。
その他気をつけたこと
以前参加した方の中で、コミット履歴を残しておくことが大事と言ってた方が複数人いたので、mergeまでは行きませんでしたが、PRは複数本立てておきました。そのことに関してはProposal内でも言及しておきました。
参考にしたブログ達
応募の際にたくさんのブログを参考にしました。ありがとうございました。以下のリンクは、参考にしたブログの一つのmomokaさんのブログに紹介されているものが多いですが、一応こちらでもリンクを掲載しています。
okuraofvegetable.hatenablog.com
また今年参加される(=GSoC同期)方のブログです。
takumma.hatenablog.com
GSoC2024コミュニティ
GSoC2024に参加されている@yurikomiumさんがGSoC2024のコミュニティをX(旧Twitter)上で作ってくださりました。主に参加者同士でゆる〜く情報共有をしているコミュニティですが、GSoC2024に参加してなくても、将来応募する時のための情報収集目的とかでの参加もwelcomeなので、もし興味があれば参加してみてください。 https://x.com/i/communities/1790177725212483708x.com