Road to Google Summer of Code

Searching for Projects

I first learned about Google Summer of Code (GSoC) on Reddit. Intrigued, I explored the project listings of various organizations. Unfortunately, none of the projects initially captured my interest. Many required learning new technologies or seemed unappealing. Some organization required a coding challenge before applying, which I deemed unnecessary given my lack of interest in their projects. I decided it was not worth the effort for something I was not passionate about.

I aimed to work on something related to graphics or low-level programming, such as Vulkan, DirectX, OpenGL, or WebGPU. While some organizations offered low-level projects, they often required expertise in areas I was unfamiliar with, such as LLVM. Despite finding LLVM projects interesting, I lacked experience in compiler technology and was not inclined to learn it at that time since I was also studying whilst applying for GSoC.

VLC

Eventually, I discovered VLC, which had several intriguing projects related to video rendering. Although their GSoC page contained outdated project listings, I was unaware of this initially. Upon contacting a mentor, I learned that some projects were already completed, and the mentor suggested new project ideas that were not listed. If I was to draft a proposal for a project that was already completed, it would have been a waste of time.

Lesson Learned: Always contact the mentor before proposing a project.

I selected the most compelling project offered by the mentor and completed the proposal with their assistance. Engaging with the mentor allowed me to ask questions and receive feedback on my proposal. Mentors are generally eager to help, because us as volunteers contribute to the improvement of their projects.

Despite my efforts, I remained uncertain about my acceptance, given the competition and other appealing projects at VLC. Thus, my search continued.

Chromium

I then explored Chromium. Although their listings did not initially interest me, they allowed applicants to propose their own projects. Having previously developed ray-tracing libraries for DirectX and Vulkan, I proposed enabling games to leverage ray-tracing in Chromium by implementing it in Dawn, Chromium’s WebGPU implementation. Although someone had already worked on this, it was not officially recognized or supported in Dawn. Therefore, I proposed formalizing and adding it to the API.

I reached out to Dawn contributors to inquire about mentorship. They informed me that the project was too ambitious, as WebGPU was still under development, and their focus was on core features. Understandably, ray-tracing was not a priority at that moment. Understanding their position, I accepted their alternative project suggestions. I chose Static Samplers, a feature I had experience with and which was missing in WebGPU.

After drafting my proposal, I sent it to the mentor for feedback. Their constructive feedback helped me refine my proposal. With the final proposal submitted, I awaited the results.

Results

To my surprise, I was accepted by both VLC and Chromium. The GSoC team requested that I choose one. I opted for Chromium, as I felt more confident in my ability to complete the project. VLC’s project, while interesting, was more challenging and outside my expertise in video rendering. Additionally, contributing to Chromium aligned better with my career goals and interests.

Key takeaways from my experience include:

  • Contact mentors before proposing a project. They can clarify doubts and provide valuable feedback, increasing your chances of acceptance.
  • Do not hesitate to ask questions or propose your own project ideas. There is no harm in inquiring.