Skip to content

Instantly share code, notes, and snippets.

@palash25
Last active September 14, 2020 18:29
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save palash25/253be11ad73380b44134ff2e98e97a58 to your computer and use it in GitHub Desktop.
Save palash25/253be11ad73380b44134ff2e98e97a58 to your computer and use it in GitHub Desktop.

this is my goto copy paste answer that I post everywhere and I'm going to explain you how to solve an issue using an example so I cannot assure you that this would work in case of every issue but my aim is to try to make you understand what and how to think like when solving an issue.

Note this guide assumes that you have some exposure to software devleopment and have built at least one or two of your own applications as a side project. If not then try building a few projects before starting out with OSS dev it would certainly help. Use this guide for ideas.

Get familiar with git and github if you are not already. Best way to do this is to make a little side project and push it to github. You have a lot of time for GSoC so you can make lots of side projects and experiment around with those until you are familiar with the git workflow

Pick up a software that you find interesting

Remember you should find the project interesting, it should be written in a language that you are a little familiar with, and you should have a little idea of what the project/software does or is used for

Read the project's development setup guide and try to clone and run the project locally on your machine if you get stuck ask for their help

Introduce yourself to the organization if you haven't already

Then read the contributing guide

Ask for a beginner issue if they don't use labelled issues on Github, if they use a bug tracker other than Github or Gitlab (like Bugzilla or Gerrit) then you might have a problem with selecting your first issue so don't be shy to ask for help.

Once you have selected the issue try to understand it. Look for keywords in the issue thread like function/class/variable/file names and then find them on your local clone by doing a git grep <the-term-you-are-looking-for> this will give you all the occurrences of that term in the codebase and will help you find the bug or in which file the feature needs to be written.

If you still can't find the files that need to be changed you should ask for help.

Try to understand any other terms that you see in the issue thread, if you don't then google them.

Lets take an example there is a project written in Python2 which uses the module pickle (pickle is used for serializing objects by the way) it has an issue saying Improve performance by using a faster pickling alternative. Now you don't know what pickle is so google pickle python. Now you know that pickling means object serialization. Now you google faster pickle module python. Now you know that you need to replace the pickle module with cPickle which is an optimized version of pickle written in C. (so in this case you would only have to change an import statement from import pickle to import cPickle)

Once you have understood the issue claim it or ask for assignment.

Make the changes, write/edit tests (if needed) add, commit, run tests, locally, push to your fork make a PR, and wait for CI checks to pass.

Now keep on contributing grab as many issues as you can, send PRs and help new contributors like yourself.

Once you have some experience as a contributor, try to pick up a specific project from their listed projects (you can also propose your own project idea if you see any room for improvement)

Try to understand the project, talk to your mentor about your ideas and start solving issues related to that part of the codebase which is relevant to your project.

Once you have done all these, write a kickass proposal wait for the results.

Happy Hacking

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment