Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How I will start contributing in open source like in big projects ? #7

Open
Ankitagulati4 opened this issue Jan 31, 2018 · 3 comments

Comments

@Ankitagulati4
Copy link

Ankitagulati4 commented Jan 31, 2018

NOTE: How to Ask Questions the Smart Way

What is your query?

I am new to open source and I dont know how to start with it and I actually want to contribute to the projects but how can I find it.

Is this question specific to a participating organization?

Y

Have you read the FLOSS Manual yet?

yes

Have you read the questions in the README?

Did you Google search this before posting?

ya

Do you think this question will help other applicants?

Yes, this will help who are new to this

@kshitij10496
Copy link
Collaborator

Hey @Ankitagulati4
It would help us understand your query if you can fill up the issue template.

@OrkoHunter
Copy link
Owner

OrkoHunter commented Feb 1, 2018

Hello @Ankitagulati4,

Thank you for responding to @kshitij10496's comment. (Although you should comment as well, to notify the people watching this repository).

How I will start contributing in open source like in big projects
I am new to open source and I dont know how to start with it and I actually want to contribute to the projects but how can I find it.

If you go through this question from the perspective of a reader, it appears as if it's put out in a confused state. Let me try to break it down into the queries I am able to understand.

Question: I am new to open source and I do not know how to start with it.
My answer: On doing a Google search, a very nice resource is shown as a result. https://opensource.guide/how-to-contribute/
The whole opensource.guide is a great community-written guide. Hope you'll take time to read through it.

Question: I actually want to contribute to the projects but how can I find it
My answer: Kudos! GitHub contains massive number of open source projects (including this repository). There are several ways of finding projects to contribute to:

You just need to be in the community and projects will follow. :)

Question: How do I contribute to big projects?
My answer: By "big projects", if you mean the organizations with very vast userbase e.g. git, mozilla, KDE, Ubuntu, Linux Kernel, Tor, etc. then I'll request @pranitbauva1997 (git) @pratham-pc (git) @madan96 (mercurial) to answer this question. I find that these projects are highly focused on their goal of producing quality software and getting beginners is not their top-most priority. Hence, I would personally recommend you to try out smaller projects on GitHub (to learn the workflow of contribution) and then dive on to these projects, which can significantly affect/improve your career.

Cheers!

@pranitbauva1997
Copy link

pranitbauva1997 commented Feb 2, 2018

@Ankitagulati4 this is a great question which many people want to know the answer to. Thanks @OrkoHunter for a general answer about getting started. I would like to share some specific things (which worked for me). A small disclaimer, many people have different approaches which are suited to different projects. But on an average, this should work.

The steps roughly are:

  • Install the binary generally available to users (ie. via apt or dpkg -i *.deb)
  • Try out and use the software and checkout their user-level documentation to know more about their use cases
  • Read their README, CodingGuidelines, SubmittingPatches fully, get a local copy via git clone.
  • Configure the dependencies, compile the software locally and install the latest version of the tip of the master branch. Also, run the test suite to make sure everything is passing.
  • Now it would be time to checkout the easy to fix issues. So find an issue using the issue tracker which the software uses (generally the Issues tab on Github)
  • Pick up a keyword which you think you can find in the codebase.
  • Do a git-grep to find all occurances of that word in the source code which will include the places where it is defined as well as the places where it is used and the developer documentation. To filter out the places where it is defined, use some specific expressions for matching in the git-grep argument.
  • Once you find the line, do a git-blame and search the commit history which will explain the change. Use this extensively with git-log and git-show.
  • Alternatively, some projects choose to use Github comments instead of git commits, in that case, search the keyword on Github's project which will perform a search restricted to the project and will return all occurances in previous PR's, issues and the source code (I personally like this feature the most).
  • Some projects also depend on mailing lists or slack or gitter extensively. SEARCH those channels and read about the keyword to get more idea on the discussion that's happening and its priority.
  • Try reading/understanding the merged PRs which will explain everything (also the issues) regarding the thing.
  • Now you can go ahead, make a change in the source code to fix it. (Funny thing, this is the only thing they teach in 4 years of college). Also make sure you stick with the coding standards. No standard is right or wrong, the only wrong thing is to do something different than the already existing codebase.
  • Make sure you compile it locally and test it. Also run the whole test suite. Push out your code and schedule a travis-build. Note: If the software doesn't have a travis-build or a test suite, it can be a good first issue.
  • Submit the change as a PR.
  • This doesn't complete everything. Now there will be other people watching your submitted change and trying to understand what you did. Many thing they will ask you why you choose this approach and why not the other one. Make sure you have done your research properly and answers those questions in a very good spirit. (A personally story: I learned more from comments/reviews than I ever learned by any other thing).
  • git-rebase -i the commits, make the relevant changes with git-commit --amend
  • Reiterate and let the process continue.

Of course, I have just given an overview and purposely used some words which one might not know which is exactly the reason I used them. Try searching about those words on Google explicitly and understand what it is. The best way to do it is by actually trying this out.

Also I intend to write a blog post which I will do soon. I will share here once I complete it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants