GSoC (Google Summer of Code) は 参加しているoraganization のOSSにコントリブートするためにProposalを書き、採択されれば3ヶ月OSS活動をしてGoogleからお金がもらえるオープンソース活動をしたい人のためのプログラムです。オープンソース活動したいという人におすすめのプログラムです。
プログラムの流れ
- まず、Googleは学生を受け入れることができるオープンソース団体(organization)を募集する。団体はメンター候補の人数などを伝えて承認されてもらえる様に願う。*1
- 選考でGoogleに承認された団体は学生に取り組んでほしいタスクのリストを公開する。
- 学生は各団体のリストを読んで自分に合った団体と課題を決める。課題はリストにない自分が考えた内容でも良い
- 学生はその内容をProposal Paperと呼ばれる文書にまとめ、自分のやりたいこと、スキル、課題のスケジュールなどを盛り込んで提出する。*2
- 各団体がそれを読んで選考を行い、学生に順位をつける。
- GSoCがそれぞれの団体に参加学生枠を配る。*3それぞれの団体が提出した順位のうち参加枠に含まれる学生が合格となる。
- 無事選考通過した学生はメンターとコミュニケーションを取りながら各々の活動を行っていく。
- 全プログラムを無事終了しら、報酬金が受け取れる。
採択されました
無事に完遂できる様に頑張りたいと思います!!!!
応募内容
応募内容は "Implement Happy Eyeballs 2 to chromium" です。 Happy Eyeballs 2 とはDNSをAとAAAAクエリで非同期に行ってどちらかが早く結果が返されたらもう一方を必要以上に待たずに次のステップ(TCP SYNを送る)に移ろうねというアルゴリズムでRFC8305として標準化されています。
Happy Eyeballs については以下で英語でまとめてみました。(いつか日本語で清書しようと思ってまだかけてません。近々書きたい)
提出したProposalは以下です。
応募までの道のり
自分のproposal は少し珍しいパターンで、もともとchromiumから提示されたアイデアではなくchromium全体のissueリストから見つけたプロジェクトなのですが、幸運なことにメンターしてくださる人(そのissueのもともとのowner)がいたのでGSoCとして応募できた形となります。
chromiumへのコントリビュートを始める
そういや、Chromeにパッチ投げてみたい人とかいないかな。なんか気になるけどインターンとかGSoCのテーマってほどじゃないってくらいの微妙なレベルのLoading系の修正が溜まってきてる……(それをcontributorに頼るのもずるいとは思うんだけど)
— とよしま (@toyoshim) 2021年12月14日
こちらのツイートがきっかけでchromiumにコントリビュートしたいという思いが具体的になる。年明けにchromiumをbuildしてissue一覧を見て面白そうand簡単そうなバグを見つけ直そうと頑張る。 (1月に初め時間はかかったが3月に無事にmerge)
Happy Eyeballs 2 の issue との出会い
おもしろそうなissue かつ 短時間ではできなさそうな難しそうなissue Implement Happy Eyeballs 2 を見つける。ちょうどこのissueの担当者が東京officeで働くgoogleの方だったので @toyoshim さんにこの内容でGSoCに応募したいことを相談する。GSoCでやっても良いと言われchromiumのprojectリストに追加される。(これは正式にchromiumのproject list が公開される前日ぐらいの出来事)
Proposal を執筆
他の人と違い事前にアイデアを決め、メンターとなる方と連絡をとっていたので逆に落ちる訳にはいかないという思いでProposalの執筆のために頑張りました。3月はずっとchromiumのコードを読んだり他の関連するissueを読んでchromiumのHappy Eyeballs の実装の概要を理解しようと頑張りました。
Proposalを書き終わった後はProposalを(特にProposalを読んで欲しい人をccして) chromiumのnet-devのメーリスに送りました。ccに入れたEric Orth さんにとても有用なコメントをいただけたのでメンター以外で詳しそうな人にもProposalを送るのはより良い計画を立てる上でとても大事だと思います。
採択されるために気をつけたこと
採択されるための必要条件は同じプロジェクト(idea listの中のひとつのproject) に応募している人の中から一番になることです。そしてそれに加え、organizationに応募された全てのprojectのうち順位付された時に合格できる上位n人になることが必要です。
インド人のYouTube動画を見た時に organization は合格者を決める時に proposal, 今までの実績, そのorganizationとどれくらいコミュニケーションをとっているか の3つを見てると言っている人がいました。 (実際どうか知りません)
今までの実績 は今更どうしようもないので*4 Proposalとメンターとのコミュニケーションをきちんとすることにしました。ProposalはGSoCの選考に落ちてもプロジェクトは自分が無給で進めるつもりで何をしたいのかきちんと自分で理解できるまで調べて書きました。コミュニケーションについてはメンターとのチャットだけでなく net-devのメーリスに proposalを投げることや issueにコメントを残すなどしました。
先駆者のブログ
応募するにあたってたくさんの方のブログを参考にさせていただきました。過去に日本人の方が何人も参加されているのはとてもモチベーションになりました。ありがとうございます。
LLVM多い(?)
okuraofvegetable.hatenablog.com
今年応募した人たち
そして今年同じchromiumに応募したbokkenさんのブログです。
応募する時にProposalを見てくれた人に感謝します。
これから9月まで頑張ります。