How I Cracked Google Summer of Code in a Week.
With valuable tips and my proposal link.
Introduction
Allow me to introduce myself. I am Chaitak Gorai, currently pursuing a BTech in Computer Science and Engineering from IEM, Kolkata. I am currently in my third year of college. I specialize in full-stack web development, particularly in the MERN stack, and I am proficient in PHP. Recently, I was selected for Google Summer of Code 2023 under the Librehealth organization. My project involves migrating electronic health records to Laravel.
Cracking Google Summer of Code is a dream come true for open-source enthusiasts. Since my first year, I had been eagerly looking forward to participating in GSOC, but I was always occupied with personal open-source projects and college projects. Additionally, I dedicated a significant amount of time to organizing various open-source sessions and events. However, it was quite late when I finally made up my mind to apply for GSOC in this year, just a week before the deadline. Despite the time constraints, I managed to succeed, which may seem unbelievable, but it truly is achievable for anyone. In this account, I will share my entire experience, including the mistakes I made (and trust me, there were many), along with the valuable lessons you can draw from my story. I will add a timeline with a section, accompanied by screenshots, tips, and, finally, my proposal for reference.
Project Search (March 22-March 26)
This is the first and most crucial step of the process. Your selection is entirely dependent on the project you choose. It is essential to ensure that your technical skills and interests align perfectly with the project, allowing you to dedicate 3-4 months of your time to its development.
To begin, visit GSOC Organisations and explore the list of organizations.
However, there's a catch. While the web filter is effective, it's important to note that the real treasure lies behind the scenes.
Each organization proposes 6-10 projects before the selection of contributors. Unfortunately, not all project details, including the specific tech stack, are included in the GSOC website's search filter. As a result, several projects that could potentially match your tech stack might be missed during your initial search.
For my selected project, which involved PHP/Laravel, the GSOC organization page did not explicitly mention it. Even when I selected the "Web" filter, my organization did not appear on the list since most of their projects were focused on app-based and AIML-based development.
So, what should you do in such a situation? Here's the first tip:
Tip 1: Utilize broad search terms, such as using "JavaScript" instead of specifying "ReactJS."
Once you have the list of organizations, you need to delve into the details of their proposed projects. Often, this information is shared in forums and chats. It's like embarking on a treasure hunt, where you might eventually discover the perfect match for your skills and interests.
Now, you may wonder why this effort is necessary. Here's the second tip:
Tip 2: Look for new projects and projects with minimal fellow contributors.
Established projects tend to have large codebases and numerous contributors who have already made significant contributions. If you have prior experience with such projects, it's best to apply to them. However, in this blog, I am primarily focusing on those who are not affiliated with any organization previously and have limited time available, as was the case for me.
Following these steps, I finally found my organization, Librehealth, and the project that caught my attention: Migrate Electronic Health Record to Laravel. It was a new project, and I had the advantage of being the first to start contributing to it, which gave me an extra edge.
Pre-Contribution (March 27 - April 4)
This is the second most crucial step, as it forms the foundation of your project proposal. Making prior contributions to the organization's codebase is highly important for success in this program.
This step can be further divided into subsections:
Setup
Introduce yourself to the community and establish connections with your mentor. It's crucial to make a positive impression by actively participating in discussions and demonstrating your commitment to the project.
Next, set up the project codebase locally and ensure that you are ready to start contributing. Familiarize yourself with the project's structure, dependencies, and any relevant guidelines provided by the organization.
By taking these initial steps, you lay the groundwork for a successful proposal by showcasing your dedication, understanding of the project, and ability to contribute effectively to its development.
First contribution
Tip 3: Begin with small contributions, such as documentation updates and tackling "good first issues".
In my case, there were some good first issues available, including fixing broken links in the project's documentation. It was a relatively quick fix, so I promptly updated the readme file and submitted a pull request (PR). After a successful review, it was merged into the codebase.
Similarly, there was another PR that I worked on, which also got merged successfully.
Tip 4: Utilize a clear and readable format for your commit messages.
When raising a PR or providing updates to your mentor, make the best use of Markdown to write in a proper format. Tag the issues that the PR is addressing and specify the pages you have updated. This approach simplifies the mentor's review process and indirectly saves you time when it comes to merging PRs. You can refer to the above image for an example.
By following these tips, you can establish a track record of consistent and valuable contributions, showcasing your attention to detail and effective communication with the project team.
First Code Contribution
This is the phase that tests your skills and allows the maintainers to assess your proficiency with the required technical skills. For my first code contribution, I selected an issue related to a broken mobile navbar. Although it took some time to debug and resolve the bug, I was able to successfully address the issue. However, during the review process, the mentor requested an updated version of the UI.
I made the necessary changes as per the mentor's feedback, ensuring that the mobile navbar was functioning correctly. Finally, on April 23rd, the pull request was merged into the codebase.
Here is the link to the pull request for reference: PR Link
Writing the Proposal (April 3 - April 4)
As I was engrossed in coding and resolving the identified issue, I unintentionally set aside the preparation of my project proposal. This was a major blunder on my part, as I began writing the proposal just one day before the deadline—an approach that is strongly discouraged.
Tip 4: Plan the structure of your proposal in advance and continuously edit it. Avoid waiting until the last minute.
Due to this oversight, I could only submit the proposal for review mere hours before the final deadline. Upon review, it was brought to my attention that the UI component for "Add role" was missing.
Tip 5: Ensure that your proposal undergoes thorough review by mentors before the final submission.
It is possible to overlook certain aspects of your proposal, and the insights provided by mentors during the review process can be invaluable in enhancing your proposal further. In my case, I realized that I had missed incorporating the UI component, which I promptly added at the last minute before submitting it through the portal.
After Proposal Submission
Tip 6: Let your motivation for contribution extend beyond the goal of selection.
Following the submission of the proposal, it is common for individuals to eagerly await the results and refrain from further contribution during this period. However, it is essential to maintain your engagement and continue contributing. You can tackle other issues or, if you feel confident about your selection, you can initiate discussions with your mentor and begin refining your project plan. By remaining active and proactive during this time, you demonstrate your commitment and dedication to the project, regardless of the selection outcome.
My Proposal
You can find my proposal by following this link: Proposal Link
Writing a proposal in just one day before the deadline was quite a challenging task, but I managed to do it successfully. I have some fantastic tips on how to write an effective proposal, and I believe it deserves its own dedicated blog post. Make sure to 👍 this blog and subscribe to the newsletter to stay updated.
Throughout the GSOC period, I will be sharing my weekly reports and documenting my experiences here. So, stay tuned for those updates!
Thank you, Keep Opensourcing :)