Contribution to open source projects is a win-win-win situation: you get to improve something that you use, you give back to the community, and you make new friends. With this book in hand, there’s nothing stopping you! You’ll learn how to find bugs, fix them, create tests so that others don’t have to find the same bugs again and again, then file a pull request.
Open source projects are everywhere. The Linux kernel, Django, Ubuntu — the list goes on. With so many projects and such a wide array of skills required to work on any particular project, how can you find one that will be a good match for your skills? This talk will walk through the process of picking an interesting project, finding a place in the development team and contributing to your first open source contribution!
If you see something in Python that you think should be improved, then you’re welcome to suggest it. But for your first contribution, it can be easier to start with an issue that has already been flagged by someone else.
If you want to contribute to the Python Developer’s Guide or Python’s official site, then you can check out the issues listed on GitHub:
If you want to contribute to CPython, which is what most people mean when they say “Python,” then you’ll need to create an account at Python’s bug tracker, which is called BPO because it’s at
rg. You can register yourself as a user by going to User → Register in the menu on the left.
The information in the default view can be a lot to take in since it shows issues raised by users as well as issues raised by core developers, which may already have been fixed. Fortunately, you can filter this list to find exactly what you’re looking for.
To filter the list, start by logging in and then go to Your Queries → Edit in the menu on the left. You’ll get a list of queries that you can leave in or leave out:
Here’s an example of what you’d see if you edited your queries to leave in only easy documentation issues:
Now that you’ve filtered your list to leave in only easy documentation issues, you’re seeing just documentation issues that are suitable for beginners.
If you’d like to work on something other than documentation, you can also try some other queries to help you find an issue that interests you:
|Query||Types of Issues|
|Easy Tasks||Issues that have been flagged as good for beginners|
|Reports Without Replies||Issues that have been reported but not discussed|
|Unread||Issues that have been reported but not read|
|Recently Created||Issues that were reported recently|
|50 Latest Issues||The top fifty issues that have had the most recent updates|
Once you’ve decided which issue you want to work on for your first contribution, it’s good to check the comments to see if:
- There’s still some ongoing discussion about whether it should be resolved and how it should be approached
- Someone else is already working on the issue
You can also check the latest version of the code and documentation to see if the issue has already been resolved but hasn’t been closed by a core developer yet.
Note: You can learn more about how to use the issue tracker in the official documentation on triaging an issue.
Once you’ve determined which issue you want to start with, you can leave a comment on the issue to:
- Say that you’re going to work on it
- Let others know when you plan to submit your pull request
If you clearly communicate your plans, then other contributors will know that someone else is already working on the issue and be able to focus their energy on solving other issues instead.
Understand the product
Before contributing to a project, you should understand how it works. To understand it, you need to try it for yourself. If you find the product interesting and useful, it is worth contributing to.
Too often, beginners try to contribute to a project without first using the software. They then get frustrated and give up. If you don’t use the software, you can’t understand how it works. If you don’t know how it works, how can you fix a bug or write a new feature?
This is a micro web framework written in Python. It does not have form validation and a database abstraction layer, but it lets you use third-party libraries for common functions. And that is why it’s a microframework. Flask is designed to make creating apps easy and fast and is scalable and lightweight. It is based on the projects Werkzeug and Jinja2.
Check the project’s status
How active is the project?
If you send a pull request to an unmaintained or dormant project, your pull request (or PR) may never be reviewed or merged. Look for projects with lots of activity; that way you will get immediate feedback on your code and your contributions will not go to waste.
Here’s how to tell if a project is active:
- Number of contributors: A growing number of contributors indicates the developer community is interested and willing to accept new contributors.
- Frequency of commits: Check the most recent commit date. If it was within the last week, or even month or two, the project is being maintained.
- Number of maintainers: A higher number of maintainers means more potential mentors to guide you.
- Activity level in the chat room/IRC: A busy chat room means quick replies to your queries.
PyTorch is another open-source machine learning library written in and for Python. This is based on the Torch library, and is great for domains like computer vision and natural language processing (NLP). It also has a C++ frontend. Among many other features, PyTorch offers two high-level ones:
- Tensor computing with strong acceleration using GPU
- Deep neural networks
Be sure to check out Python’s official documentation about the lifecycle of a pull request. It’ll walk you through the step-by-step mechanics of submitting a pull request, give you tips on making good commits, and more.
Since most core developers are volunteers, you may not get a response right away, but there are couple things you can do to speed up the process:
- Give a clear explanation of the problem you solved and how you solved it: This will help reviewers get up to speed quickly and have the information they need to accept your pull request.
- Resolve only one issue in each pull request: If you notice another problem while you’re working on your contribution, then you can resolve it in a second pull quest.
Contributing to open source is all about collaboration, so communication is super important. To learn more, check out what Open Source Guides has to say about communicating effectively when you submit a contribution.
When you’ve submitted your first pull request, kick back and celebrate! You’ve taken your first big step on a journey that could lead to some cool places.
Join the community
You can easily join an open source project by subscribing to the mailing list for that project. You can find mailing lists on official websites or on GitHub pages. After being accepted to the list, you can communicate with team members and get support if necessary. Thanks to the vibrant communities present in nearly every OSS project, you are likely to get quick replies to your questions.
Gensim is a Python library for topic modeling, document indexing, and similarity retrieval with large corpora. It targets the NLP and information retrieval communities. Gensim is short for ‘generate similar’. Earlier, this would generate a shortlist of articles similar to a given article. Gensim is clear, efficient, and scalable. This implements efficient and hassle-free realization of unsupervised semantic modeling from plain text.
Resources for beginners
Coala is an example of an open sour project that has its own resources for tutorials and documentation, where you can also access its API (every class and method). The site also features an attractive UI that makes you want to read more.
Documentation: Developers of all levels need reliable, well-maintained documentation to understand the details of a project. Look for projects that offer solid documentation on GitHub (or wherever it is hosted) and on a separate site like Read the Docs, with lots of examples that will help you dive deep into the code.
Tutorials: Tutorials that explain how to add features to a project are helpful for beginners (however, you may not find them for all projects). For example, coala offers tutorials for writing bears (Python wrappers for linting tools to perform code analysis).
Labeled issues: For beginners who are just figuring out how to choose their first project, selecting an issue can be an even tougher task. Issues labeled “difficulty/low,” “difficulty/newcomer,” “good first issue,” and “low-hanging fruit” can be perfect for newbies.
- Maintainers’ attitudes toward new contributors: In my experience, most open sourcers are eager to help newcomers onboard their projects. However, you may also encounter some who are less welcoming (maybe even a bit rude) when you ask for help. Don’t let them discourage you. Just because someone has more experience doesn’t give them the right to be rude. There are plenty of others out there who want to help.
- Review process/structure: Your PR will go through a number of reviews and changes by experienced developers and your peers—that’s how you learn the most about software development. A project with a stringent review process enables you to grow as a developer by writing production-grade code.
- A robust CI pipeline: Open source projects introduce beginners to continuous integration and deployment services. A robust CI pipeline will help you learn how to read and make sense of CI logs. It will also give you experience dealing with failing test cases and code coverage issues.
- Participation in code programs (Ex. Google Summer Of Code): Participating organizations demonstrate a willingness to commit to the long-term development of a project. They also provide an opportunity for newcomers to gain real-world development experience and get paid for it. Most of the organizations that participate in such programs welcome newbies.
So you are interested in contributing to open source projects, you have a project you would like to start and feel the itch to contribute. The majority of this article will focus on the rules of etiquette that all Open Sores projects should have in common.