Sunday, March 3, 2019

Google Summer of Code: The best of both worlds - II

Google Summer of Code (GSoC) is an exciting program dedicated to open source projects, funded by Google. I have been a student 4 times - 2009 with AbiWord, 2010 with OMII-UK, 2014 and 2015 with Emory BMI. I have been a mentor 4 times too - 2011, 2012, and 2013 with AbiWord and 2016 with Emory BMI. After a short break, now I am happy to be the primary organization administrator for Emory BMI - my first time as an organization administrator, my 9th year of involvement with GSoC. In this post, I plan to share a few suggestions to the potential students.

 While I have written several posts in the past on this topic, several things have changed recently. Most importantly, now the students can do a maximum of 2 GSoCs in their lifetime as a student. There was no such limit during those days, and some of us ended up with 4 or more years as GSoC students. This change means, if you have been a GSoC student twice before (for example, GSoC 2016 and GSoC 2018), you cannot be a student anymore. That means I can never be a GSoC student again. :P Second, previously there were only 2 evaluations. Now there are 3. 2016 and before, everyone received the same stipend. Now, it depends on the country of your university (most likely this is your resident country). Also, you can apply only up to 3 projects now. Previously this upper limit was higher (It was reduced from 20 to 5, and eventually became 5). The reduced limit aims to favor quality instead of quantity.

The beauty of open source projects come into play that it gives you a chance to work on something that you are interested in, in your way. But not many of us get time to dedicate to an open source project due to our other commitments and as we are busy with our regular work, study, and related activities. Now let's come to the topic.

Why GSoC?

GSoC is an annual program from Google for the university students of age 18 and more. Each student codes for her preferred open source organization for 3 months. Google coordinates and awards the successful students. Though open source organizations are run mostly by volunteer developers, Google pays the students. The exact money you will get depend on the location of your country, varying between 3000 $ - 6600$. For example, if you study in Portugal, the total you will get is 4200$. If you study in Sri Lanka, this will be 3000$. You will also receive a certificate, an awesome t-shirt, and some small gifts! Hence you can focus entirely on the program during the 3 months.

3 milestones. 
    • First Evaluation (paid ~July 1): 30%
    • Second Evaluation (paid ~July 29): 30%
    • Final Evaluation (paid ~September 5): 40%

      Some statistics of 2019
      • 206 Organizations
      • Expecting more than 2000 mentors and co-mentors.
      • Expecting more than 1000 successful students.

      The success rate is pretty high!
      Historically, 1 in 4 students gets accepted to GSoC. That means, for every 4 complete project proposals, 1 got selected. Once the student is selected, the chance of her completing the project successfully is much higher. In the past years, the success rate was around 85 - 90% for the students who are accepted. The high success rate is because the mentors and the organization are with the student to provide him assistance and guidance, whenever is needed.

      The passion for open source and the desire to be an outstanding student are considered to be the primary reasons for a student to participate in the Google Summer of Code. Not forgetting to mention, earning money for the summer.

      A computer with the Internet connection, knowledge and experience in the domain, and the motivation are the required to participate. Of course, you should be interested in contributing to the particular open source organization.

      Don't forget to check the timeline and adhere to it strictly.

      Before you begin..
      • Google Summer of Code is all about being Open Source.
        • Get your basics and motives right.
      • Netiquettes.
      • Sign up to the mailing lists (if any).
      • Join the relevant Slack/IRC channels (if any).

      Technologies
      • Version Control Systems
        • These days, it is mostly Git. But this depends on your organization.
      • Build Tools
        • Mostly Maven.
      • IDEs (Integrated Development Environments)
        • IntelliJ IDEA, Eclipse, Microsoft Visual Studio, ..
        • Of course, specific to the programming language
      • Issue Tracker
        • GitHub, Jira, Bugzilla, ..

      Communicating with the team..
      .. and the mentor, over the Internet..
      • Slack or Internet Relay Chat (IRC)
      • Mailing Lists
        • Dev, User, Commit lists, sub-groups, ..
      • Issue Tracker
      • Forums and wiki
      • Blogs
      • Only if the mentor proposes - Skype, Personal Mails, gtalk, conference calls, ..

      Network Etiquettes
      • Be Specific and clear.
      • Research (google.. ;) or Go through the previous Slack/mailing list messages) before asking.
      • Be helpful to others.
      • Be ethical; respect.
      • NO CAPS! (UNLESS YOU ARE SHOUTING!)
      • Don't take messages personally.
      • Dn't snd ur sms msgs to thrds or lsts.

      Proper Addressing..over the lists/irc/..
      • Address the devs and users properly.
        • First Name or Preferred calling name.
        • No excuse not knowing the mentors' names. Mentors' names are listed under the project descriptions.
        • NO Sir, Madam, bro, sis, pal..
          • Even if you know them, personally.
          • Especially, don't say "Dear Sir/Madam". Can be perceived as too pretentious, lazy, or impersonal.
        • No Mr., Dr., or Prof. either.
      • Be gender neutral.
        • “Folks” over “Guys and Girls”.
      • Not too personal.
        • “Hi” is preferred more than “Dear”.

      Mailing lists
      • Post only to the relevant list.
      • Check the mail archives first.
        • To avoid getting RTFW/RTFM responses.
      • No [URGENT]/[IMPORTANT] tags.
      • No unnecessary attachments.
      • No Cross Posting.
        • Stick to the proper mailing list only.
      • Don't hijack threads.
      • Don't post off-topic.

      IRC/Slack Etiquettes
      • Be a reader first when you enter a Slack channel. Check the previous discussions before asking a question. Most likely your question is already answered. I know, "No question is a bad question". But remember, you are being evaluated for GSoC slots (Even if we want to mentor all of you, we cannot. GSoC gives only a certain number of slots to each organization, and mentors have limited time too). You don't want to come across as someone who is lazy.
      • Refer to others using their irc/slack nick.
        • Whenever my irc nick is mentioned, I get a pop up message from my irc client such as pidgin.
        • Don't use @channel in your message at all. This will send a notification to everyone. You don't want to send a message "@Channel, I have submitted my proposal".
      • Don't expect immediate replies; wait.
      • Avoid these common mistakes.

      Find a mentoring organization..
      • More than 200!
      • Find the organization you like the most.

      Find THE right project..    
      Once you have found the right organization(s), that matches your interest and expertise, you have to go through the ideas list (e.g.: the project ideas of Emory BMI). You can apply up to 3 projects in total - either from the same organization or from 2 or 3 organizations.


      Get to know more about the projects
      • Talk to the mentor(s) Assigned by the organization for each project idea.
        • Use the recommended channels. 
        • Avoid the temptation to send private emails, LinkedIn messages, private Slack messages, etc. These are not going to help you. Use the appropriate public channels (unless advised by your mentor otherwise).
      • Mailing lists and archives.
      • Issue Tracker
        • Open issues or tickets
          • New features/enhancements (RFE)
          • Bugs (easy/difficult and normal/critical)

      What makes you special?
      • Experience
        • Being a great user doesn't mean that you can be a good developer.
        • Demonstrate your ability to perform the task with prototypes and bug fixes.
        • Possess the required skills.
          • If you have no clue about C, you will be unlikely (although I sound negative to say this) to get selected for a project that requires expertise in C. Better luck applying for a project that you know the development language and the tools.
      • Complete the prerequisites for the project and additional requirements related to the project proposal from the mentors.
        • The prerequisites such as a screenshot/video of a working deployment/demo/prototype, pull requests, or some prototype code are there for some reason. Don't ignore them if you want to be considered seriously.
      • Your interests and motivation
        • Pick something you enjoy doing.
        • Being a great developer doesn't mean that you can be a good contributor.
        • What makes you the right person?
      • Willingness to contribute to the community beyond the time frame of GSoC. 
        • Usually, Open Source organizations want committers and longtime volunteers - Not just students!
      Experience
      • Languages
        • Java, C++, C, ..
        • Not much time to learn a new language (?)
      • Prove It with pull requests to existing bugs or feature requests in the code base!
        • Submit well-tested and complete pull requests. Don't send half-baked pull requests that won't even compile or breaks a functionality. Remember, you are consuming the mentor's time who might be answering up to 100 of students (depending on the popularity of their project ideas). Also, for most of us mentors, GSoC is just a part-time activity or a hobby. It is not our full-time job (in contrast, the selected students are expected to consider GSoC as a full-time job during the 3 month coding period).
        • Assist other students!!!
        • Project expertise
          • Bug reports and fixes.
          • Go through the archives, wikis, and web sites.

      Opportunities..
      • A project that matches your previous work experience.
        • Choose the right project.
      • Timezone Difference 
        • Use it effectively - Most students prefer to work in nights too, as they may have lectures in the mornings.
      • Multiple Applications (3!) If you apply for multiple projects, make sure all of them are of high quality. Remember the equation of quality vs. quantity.
      • Communicate early and often.
      • Be heard, visible, responsive,  and quick!
        • Ask questions, and more importantly answer others' questions.

      Apply

      Register as a student for GSoC, as the first step of the application procedure. Make sure to follow the deadline and submit the application and the student proof such as a transcript or student ID indicating that you are currently an active student (as important as the GSoC proposal, as far as Google is concerned) on time. No execuses and no exceptions. If you miss the deadlines set by Google, your mentoring organization cannot help you, even if they want to. Share your draft proposal with mentors early on, and iterate over it with the mentors' feedback.

      Apply on Google's site, at the earliest possible, as you can edit it later, until the last minute. Check often for the mentors' comments and attend to them. Only the organization mentors can see your proposal unless you decide to make it public. Please don't wait until the last minute to submit the proposal and the other necessary documents. There will definitely be a powercut or an Internet outage right at the deadline. I have warned you. ;) Submit early and continue editing. That's the approach.

      How to impress the mentors/developers?
      • Stick to the organization's template.
      • Abstract.
      • Introduce yourself properly.
        • Focus on the relevant facts.
        • Why do you fit? Your skill sets.
        • List of the pull requests or patches (if any) you have submitted. Make sure to identify the working/accepted ones.
      • Project Goals
        • Proves you got them correct.
      • Deliverables
        • Code, documentation, test cases, binary releases, ..
      • Description - can also be given along with the timeline
        • Benefits to the organization and other projects  
      • Timeline
      • Links - References and additional details.

      After the submission..
      • Don't go invisible!
        • Evaluation is still going on.. ;)
      • You may be asked to provide additional information.
        • Pull requests, prototypes, demos, patches, ..
        • Screenshots.
        • A Skype Interview request from the mentors!!
      • Start coding on your project - if you have time and of course it will help in the selection process (It is going on once you have submitted).
      • Be motivated.

      Got Selected? Community Bonding Period!!!

      Don't panic. You have 3 more weeks, just to mingle with the developers and the code base. Mentors are there to help you! Keep touch with the developers and users. Learn the project by going through the code base and documentation such as coding styles and coding guidelines. This will help you understand the project idea more. Come up with a design and start with simple hacks.

      Coding

      Finally comes the coding - the easiest task of all. Commit often, if you are given committership. When committing or sending pull requests or patches, make sure to include meaningful Commit messages. Get feedback from the mentor(s) on your commits or patches frequently. Keep the community updated. Committing or sending patches daily would be a good approach.

      Plan for the 3 evaluations early, with the mentor. This will help you reach the target successfully. You might also need to revisit the project goals if required, during the milestones.



      Conclude/Continue

      Whatever coding or related job done on your project after the GSoC deadline will not be considered part of your summer of code, and will be considered a volunteer work on the project. Try to stick around your project community after the successful completion of your GSoC. You can aim to be a committer, long-term contributor, or even a mentor for GSoC next year.

      No comments:

      Post a Comment

      You are welcome to provide your opinions in the comments. Spam comments and comments with random links will be deleted.