Improving On My Programming Skills By Giving Back To The Open Source Community Through Google Summer Of Code Program
Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.
I'm hoping the quote above explains the term Google Summer Of Code well enough. From now i will refer to it as G.S.O.C.
I am one of the qualified lucky participants of the GSOC program 2019 session which officially started May 6, 2019, when qualified students who applied where announced. The program should be over for the year on September 3, 2019.
GSOC has a long history and good records of improving open source projects. Many open source organizations participate from all over the world yearly. To see which organizations have participated in all previous years you can still follow the link above and If you would like to know more about GSOC there are actually many articles out there that you can search for and they do a very good job at letting you know all you need to but all that is above this article. Here, I'm kind of focusing on my story on how I got to be a participant and how this program has changed my Life for the better. Of course the Best is yet to come. :D
My Journey to this point with GSOC started some time ago long before now. Back to around 2016 or so, when we were first introduced to GSOC by one of our Seniors who had already graduated from school (we call them Super Lions/Lionesses :D ). He had a meeting with us the members of Google Developers Group, an active developer community we had back then in School. He told us so many things but the need for us to participate in Google summer of Code Program was the main topic of discuss. He went on to share with us his own experience of how he got into the program and how he was one of the lucky few that participated in the program representing our country Nigeria. He talked of how every year only few students apply from our country or school and sometimes nobody at all. He explained lots of benefits we stand to gain from participating in GSOC as students.
The whole discussion was really sounding strange to most of us then but some others got the message and started working really hard to make sure we make it to the upcoming round the next year, 2017.
After the meeting that day, I really became very much interested and hoped that one day I would be a part of this awesome program. But things are not that easy especially for someone like me who was very new to the entire concepts of programming. I was still trying to find my way to grasping the basic concepts and I was lost trying to find where I can fit in amongst the large scope and fields that are all within the tech world. The registration and students proposal submission period started for the 2017 set but I was scared and felt that I wasn't ready. Also I had a lot of things to take care of in School as the semester got really busy for me, so I let it pass that year hoping that maybe I would improve more on myself and should be ready for the next year round in 2018. So fast forward to 2018, I was now more grounded in the concepts of programming and was definitely better than I was in the previous year. GSOC student registration started for 2018 and organisations where now receiving proposal applications. I wanted to register and also submit an application proposal but there was another challenge for me.
I have not taken my time to get use to any of the organisations. So I was so lost trying to search for an organisation to choose. I didn't start early to follow an organisation and make my self known in their community/channels until the last minute when the whole organisation selection became overwhelming on me. I could not decide on any organisation, because of the competitions that was everywhere, until the registration was over. Well, I guess I learned that the hard way. My friend, victor, with more experience than me knew about all this and did is research well, he started early and was already actively chatting with a project owner for an organisation even before submission of proposals started. When submission started lots of students started applying, esp. all those Indian guys that are everywhere :D. Even with all the competitive students submitting last minute proposals, victor's spot was already kept for him and no one else but him. So he made it for GSOC 2018. Although the journey was not an easy one for him (he always shared his challenges with me, and I kept on encouraging him to push on). He finished the program and passed successfully. I was so happy for him, and he became a source of motivation to me for the next GSOC come 2019.
Sometimes, it's just better to share more failure stories than success ones. =)
So, here we are in 2019, I have already learnt my lessons the hard way. Instead of learning from someone else's experience, but there was no one to warn me ahead. This time around I waited for list of participating organisations to be announced, and then I started digging in to choose an organisation. Mind you, this period too is kind of almost late as well, and really competitive, but from my past experience I tried to make sure I was very ready and never let myself to be bullied into surrendering but instead I pushed on.
Some Challenges I Faced Aside Competition :
Challenge 1 : There is a very very important tool that all participating students are supposed to be used to before you can contribute to open source, and that is GITHUB. In all those previous years I always had issues understanding the concept of Git Version control let alone understanding how to use Github. It was kind of overwhelming to me then. But thank God for the many daily tutorials being released to the community, I was gradually picking up on some things. At first, I started by following instructions without understanding what was really going on and then gradually with time it all began to make sense bit by bit. A good place to start to learn about git is from Github themselves. I think this is a good place to start.
Challenge 2 : I was already getting interested in Web Security, so I chose to Stick with Owasp Foundation Organisation , as their projects are more security oriented. So while going through their list of participating projects I decided to join the DefectDojo project since I think I knew the basic requirements for the project, [python, django, docker, unittests, and some form automation]. Mind you, I had no idea at all of how the project even works not to talk of how to start modifying their codes. This was a big challenge for me then. I was always scared to contribute to open source. The code base of some projects scare me away. At first, It's really not easy reading other people's code but once you get the hang of it...you will begin to voraciously consume more codes than story books because you know there is a lot to learn from seeing how others think and solve problems. So it was for me at the beginning, very scary and I never tried to look into open source projects because of this fear but all that changed when I read this article => How To Learn Hacking.
Hackingin this sense is referring to learning a code base by modifying it and contributing to open source. You definitely need to go through that article. It's very practical and I promise you it's going to change your perspective of thinking and how you see other people's code. You will suddenly become fearless just like I became. :) :D
So, I joined Owasp Foundation community on Slack and also DefectDojo Project channel. I made my intentions for GSOC known in the slack community channel, I became active and tried to answer questions, this made me study and understand certain areas of the project carefully so that I can go back to answer questions. Gradually, I began to get use to the project and then I made my first PR which was merged :D. I later noticed in the project's group, that the owners and users where always talking about the need for Unit tests which was lacking and so I picked interest in that. Which is what I focused on in my proposal. Skipping all other stories...I submitted my proposal and so I was among the lucky students to participate in GSOC'19. I was extremely happy when I got the email from GSOC stating my project has been selected. oh yeeeeaah....@!1!
The Journey So Far...
- Being a participant of GSOC'19 has made me to learn a lot of things I never thought I would ever know. Things that I would have learnt in probably 3 - 5 years from now, I already know just within 3 months of GSOC.
- I got a whole new mindset about solving problems. I learnt to never be intimidated by a problem but to constantly keep at it and try to break it down and soon enough the big problem/obstacle standing in the way will just suddenly become nothing.
- Of course my GitHub Activity profile now looks really really busy :) especially my activity graph that is usually empty before. This alone is a good sign to potential employers that you really know what you are doing.
- I keep on experiencing that rush of joy you get within you, when your code gets merged in an organisation's open source project code base. This gives me a great sense of purpose as I get to contribute in my own little way to make the world a better place.
- Finally, less I forget this very vital benefit. I get to make my first Million in Nigerian naira just within 3 months of work. This is what an average worker in my country will get only after 12months of hard work. :)
Some Tips On How you can Secure your spot for the next GSOC round
Normally any one very serious about this awesome program would start doing the following from now,
- Start following an organisation even long before registration starts: A wise step to take from now is to visit the GSOC site and checkout list of previous participating organisations especially those that do participate on a regular basis. Then stick to one or two and join their community channels.
Be Active and Start Contributing: Start making yourself known to potential mentors and admin in the organisation groups and ask for help and guidance on any way you can start to contribute or learn to understand their product better don't wait until last minute rush when registration starts. As you take your time to contribute to the projects in anyway, by answering questions, even documentations is a good way to start or solving issues with beginner-friendly tags attached, just anything that will make you want to look into their project for better understanding.
Stay Alert and Keep your Mind open for Ideas that can help improve the organization's projects: As you use their projects / products, as you go through the chats in the groups you might notice a constant issue that keeps coming up. It May even be an improvement that the owners of the projects wish they could add but no time or whatever reason is holding them back. On detecting issues like this, you can start making your research into those areas and even possibly let the project owners know you are interested in working on that improvement. Once you and the project owners start talking about or making plans for those improvements, you just increased your chances of being accepted. By the time registration starts and others come in for the competition your own spot is already reserved.
well, these are just a few tips, I will leave here for any student who want to take part for the next batch of GSOC. Google and research for more tips. START FROM NOW!!