Skip to content

Instantly share code, notes, and snippets.

@shibasisp
Created August 13, 2017 19:56
Show Gist options
  • Save shibasisp/b1d5436ff7d86f17676a571cfe459998 to your computer and use it in GitHub Desktop.
Save shibasisp/b1d5436ff7d86f17676a571cfe459998 to your computer and use it in GitHub Desktop.
Slides used by me for presentation on GSoC

--

GSoC 2017

--

About me

--

What is GSoC?

  • Google Summer of Code (GSoC) is annual program in which Google pays university students to do a coding project for an open-source organization during the summer.
  • The organizations provide mentors who guide students through the entire process.
  • https://summerofcode.withgoogle.com

--

Presentation summary

  • More about the GSoC process.
  • Should you participate?
  • How to choose an organization?
  • How to contact an organization?
  • How to increase chances of getting accepted?
  • Software development tips
  • BITS-specific issues

--

GSoC process

--

February 27 - Mentoring open-source organizations announced

  • Last year around 180 organizations were accepted.

--

Students talk to organizations

  • Students talk to organizations and ask them for a coding project.
  • Organizations have a list of projects which they want done.
  • Sometimes students can also suggest projects.

--

Students prove themselves

  • Students make small contributions to the organization to prove that they are skilled enough to do the project.

--

Students write applications

  • Students write an application about the project they wish to work on, a rough plan of how they will complete the project, etc.
  • Students have to submit their applications to google between March 20 and April 3.

--

Organizations select students

  • Organizations select the best students among those who applied.
  • Selection rate is low:
    • 19000 students registered on Google for GSoC.
    • 7500 students submitted applications.
    • 1200 students were accepted.

--

GSoC begins

  • Accepted students begin working on their projects from May 4 onwards.
  • Mentors help students work on their projects.

--

GSoC timeline summary

  • Feb 27 - Mentoring organizations announced
  • March 20 - Student application period opens
  • April 3 - Student application deadline
  • May 4 - Accepted students announced
  • May 30 - GSoC begins
  • August 29 - GSoC ends

--

Should you participate?

--

You should participate in GSoC if:

  • You like coding and you are good at it (whatever language).
  • You like learning new things.
  • You want to do something real.

--

Advantages of participating in GSoC:

  • You get to learn things you would otherwise not be able to learn.
  • Getting accepted for GSoC is proof of your ability, and it can be a shining point on your resume.
  • You get to meet and work with great people.
  • The money ($2400 = Rs.1,64,000) and a t-shirt.
  • You can brag about it!

--

Disadvantages of participating in GSoC:

  • You'll spend 3 months during GSoC and at least 2 months preparing for GSoC. This might not be the best use of your time if software development isn't your primary interest.
  • It can affect your grades. I missed many classes to work for my organization.
  • It's disheartening to not get accepted.

--

Participating next year

You can participate in GSoC next year and use this year for training and familiarizing yourself with GSoC application process.

--

How to choose an organization?

--

Your interest and familiarity with the software

  • Working on a scuba-diver monitoring program can be difficult if you don't know much about scuba-diving.
  • Working on a software library can be difficult if you have never used that library.

--

Skills

  • It'll be good if you know the programming language used for a project, but that might not be a requirement.
  • You'll generally need to know the required technologies, especially if it's a popular technology.
  • For e.g., If you have to make an android app as part of your project, you will probably be expected to already know how to build android apps.

--

Competition

  • Very popular organizations (like Mozilla) have a lot of competition. Extremely skilled students participate in them.
  • New organizations (those which have never taken part in GSoC before) have less competition but accept less students.

--

Responsiveness

  • Some organizations are very responsive. You'll find their forums brimming with activity.
  • Some organizations are very beginner-friendly.
  • Organizations which don't seem interested in mentoring should be avoided (though that's often difficult to detect).

--

Keeping in touch with multiple organizations

  • Contacting multiple organizations protects against unresponsive organizations and too much competition in some organizations.
  • An organization you contact early might not get accepted for GSoC.
  • Most people try 1, 2 or 3 organizations.

--

How to contact an organization?

--

Know your organization

  • Before contacting a person in the organization, make sure you know about the organization.
  • You should visit the organization's website (if any) and read about the programs its developers work on.
  • Introducing yourself is useful only if done at the right time.

--

Forum

  • Organizations often have a forum, mailing list or chatroom where they discuss their software.
  • Often developers ask for help there when they're stuck.
  • Developers also discuss strategy, progress and new ideas for their program.
  • Lurking on this forum can give you an idea of what's going on now.
  • It also tells you how active an organization is.

--

Repository

  • An organization's code repository often contains a readme and contribution guide. Read them before contacting a developer in the organization.
  • Readme often tells you how to build the program from source code and run it. It's important to try that out yourself before contacting a developer in the organization.
  • Most organizations use github to store their code repository.

--

Bug tracker

  • Most organizations use a web application where developers (and sometimes even normal users) can report bugs and features. Such an application is called a bug tracker.
  • This is where most of the action happens.
  • Each bug or feature request has a separate discussion thread. Here developers discuss how to fix the bug or implement the feature.
  • Most organizations use the bug tracker that comes with github.

--

Bug tracker (2)

  • Most organizations classify bugs by their difficulty.
  • If you want to fix an easy bug but don't know how to begin, you can ask on the bug tracker.
  • Avoid telling too much about yourself on the bug tracker. Just talk about the bug. For introducing yourself, you can use the mailing list or forum instead.

--

Avoiding communication delay

  • Discussions on forums, bug trackers, mailing lists, etc. can speed up by a huge factor if done in realtime.
  • This is especially important if developers in your organization live in a very different timezone.
  • Most forums, bug trackers, etc. support e-mail notifications or mobile-app notifications. Use them!
  • Email isn't supposed to be checked. Email should inform you when it arrives.

--

How to get accepted?

--

The harsh reality

  • You generally need to know almost exactly how to do the project before you write your application.
  • To prove your ability (and gain ability if you don't have it), you'll have to make many contributions to your organization (because others will try to do the same).

--

Start early

  • The earlier you start, the more time you'll have to learn required skills and make enough contributions.
  • Generally people start contacting organizations even before organizations are announced.

--

Prepare well

  • General skills: For e.g., programming, version control, command-line, markdown, makefiles and developer general knowlege.

  • Specific skills: For e.g., programming language, web dev, android dev, desktop app dev, networking, computer graphics, distributed computing.

--

General preparation

--

Introduce yourself well

  • Most organizations have a ritual where every student who wants to apply for GSoC has to introduce himself/herself on the mailing list or forum.
  • Most students also ask for further direction when they introduce themselves.
  • You must introduce yourself at the right time.
  • You must introduce youself in the right way to have the most impact.

--

Introduce yourself well (2)

  • Tell about all your relevant skills and your interests.
  • Tell about your past projects (if any).
  • Your introduction should not be too small to not give enough information about yourself.
  • Your introduction should not be so big that the mentor doesn't bother reading it.
  • If you don't have much space, include links. But keep in mind that the mentor might not visit them.

--

Communication etiquette

  • Never ask to ask.
  • Ask specific questions, give all details and search the docs, bug tracker and internet before asking.
  • Before opening a new issue, search for the issue in the bug tracker.
  • Do as the mentor says. Don't irritate the mentor.

--

Coding ettiquette

  • Be aware of the organization's whitespace policy. If you use tabs instead of spaces or vice-versa, you'll be asked to fix the whitespace.
  • Avoid trailing whitespace (unless absolutely neccessary).
  • Only modify code which needs to be modified, so that analyzing your diff is easier.
  • Write clear and descriptive commit messages and commit at right granularity.

--

Software development tips

--

Learning to work with others

  • Most of us are used to working on projects we wrote ourselves.
  • To contribute to open-source, we must know how to work on others' projects.
  • Version-control is important for teamwork.
  • Try sending a pull request to your friends to get an idea of the process.

--

Working on big software

  • You don't need to know everything about the program.
  • You should know what the application does from user perspective. Run it and explore its features.
  • You should know what's the high level design of the program.
  • You only need to know the details of the part you are interested in working in.

--

Searching in big software

  • grep was helpful. Knowlege of regular expressions was sometimes helpful.
  • Use a text editor which helps in fast searching and navigation.
  • In an IDE, a class explorer might be helpful.

--

BITS-specific issues

--

PS1 clash

  • It is not hard to do PS1 with GSoC. Many people have done it before.
  • I avoided PS stations which are known for giving relatively more work.

--

Sem 1 clash

  • Your summer vacations will end before GSoC ends.
  • It's important to tell your organization about this.
  • Try to almost finish your project during vacations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment