๐ Google Summer of Code: My Journey & Guide
In my previous blog, I delved into the technical intricacies of the feature I developed during Google Summer of Code - Interactive Web Tour. In this blog, Iโll be shifting gears, focusing on sharing my firsthand experiences, offering valuable suggestions, and addressing some frequently asked questions.
Join me as I provide insights to enrich your Open-Source journey!
Discovering GSoC
I first learned about Google Summer of Code (GSoC) while browsing a forum for international students. I came across a post recommending open-source projects, which introduced Google Summer of Code, Outreachy, Linux Foundation Mentorship Program, and MLH Fellowship. Upon diving deeper into these opportunities, I made the choice to participate in this yearโs Google Summer of Code.
Project Selection 3.20-4.04
On March 20th, the GSoC contributor application period began, and I started selecting the project I wanted to work on. My main criteria were how interesting the project was and how well it matched my technical skills. Initially, I narrowed down to 28 projects from 18 organizations. After carefully reading project descriptions and requirements, I took a deep breath: I had missed some code challenges, certain projects needed prior bug fixes and PR submissions, and some already had numerous self-recommendations and seemingly solid implementation proposals. It seemed that my โeffortsโ were a bit late.
However, I didnโt want to give up easily. I adjusted my approach. If I lacked competitiveness in those popular projects, Iโd shift my focus to find projects that aligned with my skills yet werenโt as heavily contested. Meanwhile, I was immersed in my spring semester studies at school, leaving me limited time to craft proposals for multiple projects. So, I refined my selection once again.
Finally, I found my best fit: cBioPortal for Cancer Genomics.
I found two projects in cBioPortal that best suited my skills:
1.Annotate Cancer Alterations and Generate Patient Report,
2.Interactive Web Tour.
Then I greeted the community in the github discussion to express my interest.
Finding the Right Fit
The most direct way to enhance competitiveness is to โshow me the code.โ So, I allocated two days for each project to explore solutions and create demos. The thoughts during my exploration and the final outcomes could serve as the basis for my proposals.
While working on the first project, I hit a roadblock right at the beginning โ I couldnโt even get the project running! I diligently followed the readme instructions step by step, but I ended up encountering perplexing errors that seemed unsolvable. (Here, my advice is to never hesitate to seek help from the community. This is my regret, but it also led me to my current project.)
I then shifted to the second project, which was closely aligned with my strong suit. I had prior experience developing user guidance features, so I felt confident. Indeed, the process from installation to setup went incredibly smoothly. I got the project up and running with minimal effort, a positive sign! Following the projectโs guidance, I browsed through code demos left by predecessor. I found the web tour intriguing and began sketching out a preliminary implementation plan, and created a basic version of the web tour.
I believe the Interactive Web Tour project is my destined choice.
Crafting the Proposal
The next step is to write the proposal.
Iโm including the challenges I anticipated during the brainstorming and demo-writing process, like choosing the right technologies, structuring content for each step, utilizing localStorage for cross-page continuity, and developing interactive web tour logic. Iโve also submitted a draft PR with a GIF to effectively showcase my work. Sincere effort is always the most convincing.
About the project:
- Objective
- Specific Steps
- Anticipated Challenges and My Thoughts
- Tasks and Implementation Plan
About the myself:
- Personal Background
- Relevant Skills
- Code Demo
- My Availability
Proposal Accepted 5.04
My proposal got accepted!
This yearโs GSoC had a total of 43,765 applicants from 160 countries, and I feel fortunate to be among the 967 GSoC contributors who got accepted. All my efforts have paid off!
Visa Concerns
Amidst my joy, as an international student on an F1 visa, I couldnโt help but worry about my eligibility for GSoC. I emailed the Office of International Services (OIS) to inquire, but their response was disheartening: โUnfortunately, Google Summer of Code is not eligible for CPT, nor can you complete any other work on your CPT authorization that was not part of the position you used to apply for CPT. Many students have expressed interest in the Summer of Code, and unfortunately thereโs no way for an F-1 student to complete it unless they do it outside of the US.โ
My world nearly crumbled, until I shared this situation with one of my mentors. At that moment, I want to say: youโre my hero! Mentor Ryan helped me gather the necessary materials, and I successfully applied for CPT! I can now legally participate in GSoC in the US!
Connect with Community
Before GSoC officially began, my mentors invited me to meetings for introductions, Laptop Setup, Repo Review, and more. The cBioPortal community also organized an online meeting for all GSoC participants. Everything went smoothly.
Moving on to the main part.
My mentors and I established a weekly meeting routine, covering topics like:
- Progress from the previous week,
- Plans for the upcoming week,
- Q&A, Troubleshooting,
- Suggestions and improvements, and more.
Although my spoken English and listening skills arenโt perfect, my mentors are incredibly nice; they speak slowly, consider my comfort, and encourage me to immerse myself in the English environment for improvement. Additionally, we communicate on Slack, where I proactively share my progress and seek assistance. Mentors respond promptly and offer helpful guidance. Gradually, Iโve adapted to this work environment.
I omitted the projectโs specific details here, but you can find them in this blog post.
Midterm Evaluation 7.14
During the midterm presentation, I showcased the web tour I developed to the product and engineering teams, and explained how to add a new tour based on the current codebase (a fantastic suggestion from mentor Jeremy). And I actively sought feedback, meticulously incorporating it into iterative improvements that further enhanced the functionality and user experience.
Final Evaluation 9.4
After wrapping up coding and testing, I submitted a PR for experienced engineers to conduct a comprehensive code review. This led to an online preview, giving the product team an opportunity to provide optimization suggestions. Witnessing the feature I developed available for online preview was truly fulfilling, and Iโm excited about the possibility of seeing it go live!
Summing Up
Most important accomplishments:
- Proposed and created an interactive web tour to facilitate the exploration of less prominent features including virtual study and group comparison, promoting efficient utilization of cancer genomics data.
- Completed the end-to-end tests to verify the entire web tour from start to finish.
- Delivered a detailed documentation for detailed steps of each tour, test procedures, and instructions on adding new tours.
Most significant challenges:
- Achieved seamless transitions for web tour steps across multiple pages.
- Completed end-to-end testing code to cover all functionalities I have developed.
Skills developed:
- I have learned a new skill, end-to-end testing.
- Donโt be afraid to ask for help! Follow the โ15-minute ruleโ, if you donโt have an answer after 15 minutes, you should ask for help.
The most satisfying aspect was successfully completing the feature development and making a meaningful contribution to the open-source community. The collaborative atmosphere within the team has been equally beneficial - my colleagues have been ready to lend a helping hand and offer optimization suggestions, enriching my technical skills and contributing to my professional growth!
Thanks All!!!
Excellent mentoring, Jeremy and Ryan! ๐๐๐
Your guidance was invaluable throughout the GSoC journey. Your timely feedback and insightful suggestions greatly enhanced my learning and project outcomes. Thanks both for your outstanding support! ๐๐๐
Extend my gratitude to the product team, for their thorough product reviews. ๐๐๐
Special thanks to Ino and Aaron for their valuable code reviews. ๐๐๐
I appreciate Ino and Gaofei for patiently addressing my numerous questions. ๐๐๐
And heartfelt thanks to many others who contributed to my success! ๐๐๐
๐ฎ Feel free to hit me up about Google Summer of Code experience: Linkedin.
๐ Letโs contribute to Open Source!