So I get into Google Summer of Code…
Yeah, I couldn’t find a proper way to start this. Right now, I’m freaking happy and surprised as well. So it wasn’t easy at all, and I met and competed with a lot of smart guys. Here are all of my thoughts on how I get into GSoC.
About Google Summer of Code
So Google Summer of Code (GSoC) is a global program from Google to promote young students to join in open-source community and contribute to a lot of interesting coding projects (Mobile/Web development, Framework, Coding languages, Machine Learning libraries,…). In order to get in, students will have to write a proposal for a project from selected organizations. If they get it, they will spend their summer on coding to their organization.
In general, what you can get out of the program is a good amount of stipend, a certificate, an extremely great opportunity to learn/level up your skills and work with experienced people in the industry. I don’t know what most people think about the program but for me, if I can pass it this summer, then it is a sort of achievement that I would be proud of. One more thing that I already get from GSoC is some kind of reassurance on myself. A few months ago, I start to find a summer program or internships to work but I fail 3,4 interviews. I doubted myself a lot and sometimes I felt like I was experiencing imposter syndrome, so getting into this really makes me feel relieved and satisfied with all of the hard work. Ok so let’s go into the details.
So I start with…
A student can apply for a maximum of 3 projects. I myself only do it for one project for FOSSASIA — a young organization with a great group of people and a lot of interesting projects. So in order to get in, not only do you need to have a good proposal but also need proof that you are a good contributor who can make impacts on the project you’re proposing. That’s why most students start contributing before the start of application time so that at the end, they also have a good understanding of the project and a good profile of their contributions (merged pull requests, issues found, idea suggestions..).
For me, I started at the start of the application process, so I have contributed for FOSSASIA 2 months before I get the result. Initially, I only did it will a relaxed attitude and I didn’t expect myself to get in, but just to learn how Git works and what open-source community is like. I was a complete beginner. At some point, I didn’t even understand what’s a branch in doing Git. But then, I’m so interested in getting in, and I make contributions on a daily basis. I asked for advice from fellow students, people from the organizations, maintainers, and reviewers of the projects. In a way, the project I was applying for seems to feel like my own project.
… and I learn a lot
Yup, a lot lot. I will just list them out and give a short conclusion:
- How to work with Git and Github comfortably.
- How to read code from other people, understand a large codebase where you can’t control anything.
- How to write cleaner code with good coding practices.
- A lot of modern ways to do Android properly: most common libraries, single activity architecture, navigation component, MVVM
- What exactly is open-source community and what are the things that organizations are struggling with.
- How people in an organization work together to push a project forward.
- How to view the project you’re working in a broader context. With the project I’m working on, there are more than just an Android app. It’s more about understanding the whole server-side with all the APIs and how the app should be like to fit the required features. If there are any problems, I actually need to figure it out starting from the server side and give feedbacks on that.
In short, I think if you come to GSoC with a learning attitude then you’ll learn a lot: technical knowledge, soft skills on how to work in an open-source environment, effective communication with fellow contributors and maintainers,…
My advice for students who also want to join next year
There is a lot of advice I would like to tell on open-source projects and GSoC. The most crucial thing is to have good motivation and good attitudes. This can be done by choosing a project that you really like and find values out of it (for me, it’s the learning opportunity), not just the stipends. Personally, I think the hardest obstacle to get in a program like GSoC is persistence, as there is a lot of devastating time where you don’t have the encouragement to code, don’t know how to solve a problem and even Stackoverflow couldn’t help. The main problem I had during 2-month-application-time is not technical, but more about my mood on coding. Sometimes, I couldn’t focus on the work and try to procrastinate, which can possibly be your problems as well. So, again, choose a project that interests you A LOT.
My second advice is to choose one project only and focus 100% of your energy on that. I find it not effective to do more than that, especially when you’re competing with a lot of smart people.
My third advice is to write your proposal optimally. Keep it short! This year, FOSSASIA requires students to have an only 3-page-long proposal, which makes a lot of students struggle. I prefer it that way. Don’t waste any of your text on useless information like saying “If I fail, I’ll go back next year”, “This project is about … <a really long meaningless text that the mentors already know about the project>” or providing too much information on yourselves. Focus on your ideas, on how you’ll complete it, which can be shown by a detailed time management plan and a good overview of technical solutions. That’s why you need to do research before writing a section in your proposal. Use technical words + clear/short descriptions + visualization. Draw mockups and make it look nice (Maybe, the app won’t look the same as your mockups but it gives the reader a nice overview of what’s you want to do). Put the information of your previous contributions first and put your unimportant information about yourselves last. Don’t try to copy the template of last year accepted students, because someone else may also do that. In the end, when you take a look at your proposal, it should show 2 things: this guy knows what’s he is gonna do and this proposal is something other people should learn from.
Here are some more handy tips that I think might be helpful.
- During your application process, try to write some blog posts. It might be something as simple as how to use Git properly or your thoughts on the open-source community. Share it with people in the organization that’s you’re working with. Ask their thoughts. Attach the blog post to your proposal. This shows that you’re prepared for GSoC and you are someone who has his/her own opinions.
- Try to open discussion in Github (issue section) on the ideas you’re preparing for the project and then attach the link to the proposal. This keeps your proposal shorter, and you can actually get feedback for your ideas much faster than writing it into a draft and wait for draft feedback.
- When you start with the open-source community, just be careless. Find an issue, fix it, send a PR. You don’t have to ask for permissions because waiting for someone to response takes a lot of time. And don’t be scared that you would mess up the program, the maintainers are there for. I remember when my first PR got merged, I was really happy. But then, it got reverted because there were some more issues out of it. I felt disappointed. And afterward, I had sent a lot of bad PRs that fixing a lot, even with simple issues. Here’s the thing, that was the point when I learned the most, so just be active and careless about the people and focus on the work and you’ll learn and do so much better.
- Write good commits message. Write good PR descriptions. Be friendly and visible in the group chat. These small things would help you stand out.
- At least for me, it is pretty common that I only care about my works, my PRs. But if you can try to take a look at other people’s PRs and give reviews on it, it is much better. It would help you be more visible in the project and learn from your fellow contributors.
- Read more. It’s really important to understand what’s happening inside the codebase. Sometimes, the problem is already solved in the codebase. The codebase might include a completely similar section to the current problem where you can follow the technique of previous coders. It may also include some extension functions or Utils class that contain a function you need.
- When you write your proposal, do a search query on Github about your contribution in a project and attach that link to your proposal. After submitting your proposal, you should still keep on contributing.
Some final words
After spending 2 months with FOSSASIA, my opinion on the open-source community changes a lot. I think if you are an alone wolf and you want to learn new thing + get feedbacks from experienced people then open-source is a good learning environment. You can read my blog here for my thoughts on the open-source community
For GSoC, today is only the first day after I get accepted and it is still a long way to go. So I hope I can do it, and good luck to all of the fellow GSoC 2019 students. Keep up the hard work and happy coding!