たにしきんぐダム

プログラミングやったりゲームしてます

GSoC 2021 に参加して Scala3 の開発環境を改善させてもらった

2021/06 から参加していた Google Summer of Code 無事修了しました。

GSoC では Add synthetics and symbol information for semanticdb in Scala 3 という題目で Scala3 の IDE や Linter のための基盤となる機能の開発をしていました。

今回の成果により Scala3 でも Metals (Scala の Language Server 実装) で go-to-implementation, show-inferred-types, show-implicit-arguments (& context-params) などなどの機能が使えるようになる予定です。

f:id:tanishiking24:20210901193235p:plain

https://summerofcode.withgoogle.com/projects/#5527632738779136

採択されるまで

もともと趣味で土日の空いた時間に Metals の Scala3 サポートをちまちま進めていたのですが、せっかく学生なのだしGSoCを利用して数ヶ月の間フルタイムで Scala3 サポートの改善に取り組めないかと思い、GSoC で Scala の開発に取り組みたいと思い始めました。

Scala organization は 2018年までは GSoC に参加 していたのですが、残念ながらScala3の開発などで余力がなくここ数年の間はGSoCに参加していませんでした。

このままだと多分今年もScalaがGSoCに参加することはないなと思い、Metals の Scala3 サポートに取り組みたいんだけど GSoC 参加してくれたりしませんか?っていうことを Scala Center に対して問い合わせてみた。

contributors.scala-lang.org

すぐに前向きな返事が返ってきて、なんと3週間後にはGSoCに申し込みしたよとの連絡が!

本当にありがとうございます

すぐさま proposal を書き (今見ると結構ひどい...)

docs.google.com

応募したところ、これまでのScalaコミュニティへのOSSコントリビューションが評価されたのか無事採用されました。良かった。

期間中

全体のレポートはここにまとまています。

github.com

期間中は毎週金曜日にに30-40分ほどメンターと進捗確認と来週やること、提出したPRやissueについて Google meets で議論をする機会を頂いていました。メンターは主に二人で一人はポーランド(Krakow)、もうひとりはスイス(Lausanne)でふたりともUTC+02:00に住んでいて日本とは7時間の時差があったのですが、僕がわりと夜型だったこともあり特に問題なくスムーズにコミュニケーションをとることができました。(レビュアーの主な活動時間が日本時間での22:00-26:00とかだったので、その時間帯にレビューに返事するとほぼリアルタイムで議論で非同期コミュニケーションができて良い)

おわりに

GSoC の倍率は非常に高く、日本のアカデミックカレンダーでは授業期間とGSoC期間が丸かぶりしており参加のハードルが高いですが、著名なソフトウェアに対してある程度大規模の貢献をフルタイムで行える機会や、国内にいながら世界中のソフトウェアエンジニアと肩を並べて仕事をできる機会はなかなかなく、参加する価値は非常に大きいと思います。興味のある方は是非来年にでも申し込んでみてください。

GSoC 一般のことについては正直あまりアドバイスできないと思いますが、もし来年 Scala が GSoC に参加していて、Scala (の特に Tooling まわり) に対して貢献したいという方がいらっしゃれば是非Twitterか何かで声をかけてください。何かお手伝いできるかもしれません。

GSoCは終わってしまいましたが、scalameta や dotty や metals への貢献はこれからも続けて行く予定です。

ダメ元でGSoC参加したいな〜という話を投げた結果本当に参加できることになり本当に嬉しかったです、GSoC on Scala を実現してくれた皆さん本当にありがとうございました。 (日本語で書いても伝わらないけど...)

乞食

今後のOSS活動の活力になります。

www.amazon.jp