Around 6 months ago, I mistakenly blogged about our participation in Google Summer of Code 2023.

Turns out that that getting accepted by the Scala Center was just the first step in the process. In the last stage, Google had to review and accept the proposals… Luckily, our project was approved by Google.

This post is a summary from my experience while being a GSoC mentor; I will also post a few comments shared by my student.

Google Summer of Code

Google Summer of Code is a global, online mentoring program focused on introducing new contributors to open source software development. GSoC contributors work on a 12+ week programming project with the guidance of mentors from their open source organization. (ref)

GSoC gathers many organizations that contribute to Open Source projects, these organizations will provide mentorship to new contributors (an interesting detail is that Google donates money to contributors).

I got to know about GSoC when the Scala Center posted a Call for Projects, I submitted my application to the Scala Center, proposing improvements to the Scala Webapp Template project.

The improvements were mainly related to upgrading the Scala Webapp Template from Scala 2 to Scala 3, in the process, we’d try upgrading a few other pieces, for example, replacing Mui 3 with Mui 5 (more details at the original ticket scala-webapp-template#307).

GSoC pre-start process

Once I got accepted by the Scala Center, I posted on the /r/scala to get people noticing this.

For reference, there were many cool projects

As a mentor, I had to review the applications from students (they emailed me), then, talk with the qualified ones. It is worth mentioning that while we (mentors) proposed our projects, each student prepared their own proposal which could be slightly different to what mentors proposed.

It didn’t took too long before I started getting a bunch of poor applications, which caused me to create a filter -asking applicants to compile my project before scheduling a call-. Talking to other mentors I discovered that I wasn’t the only one experiencing this issue.

In the final stage from the Scala Center, we were required to select a single applicant (per project), the resulting list would be the one sent to Google. Google has the ultimate choice on which projects are accepted.

GSoC project

Once my project got accepted into the program, it was official that we would be working on it, I had the opportunity to be Akseli Ristola’s mentor.

We met before the program started to define how we’d work together, we ended up scheduling a weekly call + a slack channel to asynchronously discuss progress/blockers. It is worth mentioning, we are ~10h away from each other which wasn’t a problem to get good results.

We were required to submit an evaluation to Google at the middle of the program, and, another evaluation at the end of the program.

GSoC outcome

Akseli proved to be well motivated and capable, he was able to complete his proposed project slightly after the mid-term evaluation, then, he was able to contribute with another important milestone which I’m sure the community will benefit from.

Akseli final words:

Updating the template to Scala 3 required library updates,
new libraries, syntax changes and type definitions.

The Play library used in the server side of the application was updated to be Scala 3 compatible.
While the core syntax of Play remained largely unchanged,
ensuring its compatibility with other library versions presented some challenges.

In the front-end application, many JavaScript like objects required
type definitions due to Scala 3 emphasis on robust type definitions.

Slinky and Scala.js libraries came in handy when defining these types.
The biggest syntax changes in the front-end came from
the Slinky `@react` macro being removed.

The Scala mockito libraries previously used in the tests were replaced
with the native Java mockito library.
The test updates overall only took a few syntax changes and type definitions.

Overall the update achieved enhanced type-safety, cleaner syntax,
updates and access to up to date libraries.

The project was excellent for an upcoming developer like myself,
and, working with a larger full-stack application was a vital experience that taught me a lot.

Conclusion

As a mentor, GSoC experience was rewarding. If you are a mentor, I encourage you to apply, helping new contributors is a fulfilling experience.

I’m sure that the experience was as rewarding for students, certainly, I would have loved to participate when I was a student.

For students, GSoC is a an outstanding opportunity that can allow you to gain real-world experience with Open Source projects, apply to few interesting projects and spread the word!