Contributing to Open Source

Gautam Paul
ZestMoney Blog
Published in
7 min readAug 24, 2020

--

Photo by Pankaj Patel on Unsplash

Why Should You Contribute to Open Source

Contributing to an open source project can be a very rewarding experience. It helps to teach, learn and build expertise in myriads of skills. The whole technology market revolves around the idea of open source.

  1. Improve the code you use — There are always open bugs in the project you use. Occasionally a bug can be very specific to your use case. Rather than just filing the bug or waiting for someone else to fix it, you may pitch in with the patch code. That way both you and the community benefits. And the reason we have open source in the first place.
  2. Upgrade existing skills — Whether it’s coding, user interface design, graphic design, writing, or organizing, if you’re looking for practice, there’s always a task for you on an open-source project.
  3. Meet people with similar interests — Open-source projects with warm, welcoming communities keep people coming back for years. Many individuals forge lifelong friendships through such participations in open source.
  4. Learn people skills — Open source projects offer first hand opportunities to practice leadership and management skills, be it resolving conflicts, organizing teams of people or prioritizing work.
  5. Find mentors and be a mentor, too — Working with others on a shared project means you’ll have to explain how you do things, as well as ask other people for help. The practice of learning and teaching can be a fulfilling activity for all involved.
  6. Build public artifacts that help you grow your brand — By definition, all of your open source work is available in the public domain, which means you get free illustrations to take anywhere as a demonstration of what you can do and achieve.
  7. It’s empowering to be able to make changes — You don’t have to be a lifelong or very regular contributor to enjoy participating in open source. Open source projects give people a sense of purpose & belonging. It changes the way they conceive the the world and the whole journey is in itself very gratifying.

What It Means to Contribute

You do not always have to code to contribute to any project. The general idea that coding is the only way to make an impact is a fallacy. There are numerous other parts of the project that needs attention. The bigger impact lies in the smaller details which is obviously overlooked.

Plan events
Organize workshops or meetups about the project or conference. Help community members find the right conferences and submit proposals for speaking.
Write
Write and improve the project’s documentation. Write tutorials & translation. Curate a folder or curate highlights from the mailing list. Start a newsletter for the project.
Organize
Link to existing duplicate issues and suggest new labels to keep things organized. You can go through any open issues and propose closing old ones. Also you can ask for clarification or questions on recently opened issues to push the discussion forward.
Code
Find an open issue to tackle. Ask if you can help write a new feature. Automate project setup. Improve tooling and testing.
Help people
Answer questions about the project and open issues on Stack Overflow or Reddit. You can also act as a moderator on discussion boards and conversation channels.
Help others to code
Review code on other people’s submissions. Write tutorials. Mentor another contributor.
Work on other things
You can collaborate on just about anything. There are many books, recipes, lists and classes that culminate into an open-source projects. Even if you’re a beginner in coding, working on a documentation project can help you get started in open source. The whole process of collaboration helps build confidence and experience.

Exploring an Open-Source Project

All open source projects have their own rules and conventions. A good understanding of the different community roles and overall process can give an edge in getting started quickly.

A typical open source project has the following types of roles:
1. Author: The individual or organization that created the project
2. Owner: The individual who has administrative ownership over the organization or repository
3. Maintainers: Contributors or users who are responsible for driving the vision and managing the organizational aspects of the project
4. Contributors: Everyone who has contributed something to the project in any capacity
5. Community Members: People who use the project in their work

Large projects may also have subcommittees or working groups focussing on different tasks such as triage, tooling, community moderation and event organizing.

A project also has following documentation files. These are listed in the top level of a repository.
1. LICENSE: By the very definition of open-source, every project must have an open-source license.
2. README: The README file is the instruction manual that welcomes new community members to the project.
3. CONTRIBUTING: The contributing docs help people contribute to the project.
4. CODE_OF_CONDUCT: The code of conduct sets the ground rules for an individuals’ behavior and helps to facilitate a friendly, welcoming environment.
5. Other documentation: These are additional documentation, such as tutorials, walkthroughs or governance policies, especially on larger projects.

Additionally, all open-source projects use the following tools to organize discussion:
1. Issue tracker: Where individuals can discuss issues related to the project.
2. Pull requests: Where individuals can discuss and review changes that are in progress.
3. Discussion forums or mailing lists: Most projects use these channels for conversational topics. Others may use the issue tracker for all conversations.
4. Synchronous chat channel: Some projects also use chat channels such as IRC or Slack for casual conversation, collaboration and quick exchanges.

Finding an Open Source Project

Contributing to an open source happens at multiple levels across projects. Interestingly, 28% of casual contributions to open source are documentation changes such as a typo fix, reformatting or translation.

Note :
“If you want to fix existing issues, every open source project has a route or /contribute page that highlights beginner-friendly issues you can start out with. Try navigating to the main page of the repository on GitHub and adding /contribute to the end of the project URL.”
For example : https://github.com/facebook/react/contribute

You can also check out the following resources to help you discover and contribute to new projects:

  1. GitHub Explore
  2. Open Source Friday
  3. First Timers Only
  4. CodeTriage
  5. LibrariesIO
  6. 24 Pull Requests
  7. Up For Grabs
  8. Contributor-ninja
  9. First Contributions
  10. SourceSort

Also here is a good checklist to evaluate whether a project is good for new contributors.

  1. Project meets the definition of open source
  2. Project actively accepts contributions
  3. Project has an issue queue
  4. Project’s recent pull requests
  5. Project is friendly & welcoming

How to Contribute to a GitHub Repository

Starting from communicating effectively whether you’re a first-time contributor or trying to join a community, working with others on a project is one of the most important skills you’ll develop in the process.

  1. Give context
  2. Do your homework beforehand
  3. Keep requests short and direct
  4. Keep all communication public
  5. Ask questions
  6. Respect community decisions
  7. Above all, be polite and humble.

Before even starting or doing anything, do a quick lookup to make sure your idea hasn’t been discussed elsewhere. Also skim through the project’s README, issues (both open and closed), mailing lists and Stack Overflow account.

In GitHub, you may start by opening an issue or submitting a pull request:
1. Issues are more like starting a dialogue or discussion
2. Pull requests are for submitting a working solution
3. For other lighter communication such as clarifications or queries, you may use Stack Overflow, Slack, IRC or other chat channels.

A. Open a pull request

  1. Fork the repository to create a copy of the repository in your account.
  2. Clone the repository.
  3. Create a branch.
  4. Make necessary changes and commit those changes. You should also add your name to the Contributors.md document.
  5. Push changes to GitHub.
  6. Submit your changes for review with compare & pull request button.
  7. Keeping your fork synced with this repository.
  8. Contribute in the style of the project to the best of your abilities. Adhere to the way of using indents, semi-colons and comments. It may be different than what you follow in your own repository but makes it easier for the maintainer to merge, others to understand and maintain in the future.

B. Open an issue

You should file an issue only in the following situations:

  1. To report an error you cannot solve yourself
  2. To discuss a very high-level topic or idea
  3. To propose a new feature or other idea

Important tips for communicating on issues:
1. If you find an open issue that you want to solve, comment on the issue to let people know you’re on it. That way, someone is less likely to duplicate your work.
2. If an issue was opened a while ago, it’s very much probable that it’s being addressed somewhere else or has already been resolved. So ask in the comment section for confirmation before starting work.
3. If you opened an issue, but figured out the answer later on your own, hen close the issue and comment on the issue to let people know about it. Even documenting that outcome is a significant contribution to the project.

What Happens After You Submit a Contribution

You have done your part. This is the time to show some patience.

  1. You may not hear back from them. Just try reaching out through open channels after some waiting.
  2. Someone might request some changes to your contribution. Oblige and resubmit.
  3. Your contribution gets rejected. Move on & find another piece to contribute to.
  4. Your contribution gets accepted successfully. Rejoice.

Congrats! You’ve successfully made your first open-source contribution!
We hope it’s the first of many more to come.

--

--