Discover more from Grokking Python
Level up your Python today with open-source contributions
How to get started, plus 7 great Python projects where you can get involved
Hey Grokking Python Readers!
One of the things we love about Python is its vibrant community. As an open-source programming language, Python benefits from contributions by developers all over the world. If you've ever been stuck on a Python problem, you've probably received help from fellow Pythonistas or open-source documentation. That's the power of open source in action!
In today's newsletter, we're diving deep into the open-source aspect of Python. We'll start by addressing why you should contribute to open-source projects and advice on how to get started. Then we'll look at seven outstanding Python projects where you can get involved today and start giving back.
FAQ: Getting started with open-source contributions
The following answers draw on best practices curated by the experts at GitHub. You can apply a lot of this information to open-source projects in general (not just Python projects).
What exactly does "open source" mean?
Open-source software (OSS) is code that is designed to be publicly accessible: anyone can see, modify, and distribute it as they see fit.
OSS must also have a license that meets several criteria. It's worth noting that Python itself is developed under an open-source license, which makes it freely usable and distributable, even for commercial use.
Why should I consider becoming an open-source contributor?
There are a number of reasons to get involved with open-source projects:
Help improve a technology used by yourself and others
Improve skills you already have
Network and meet people who share your interests
Find mentors and teach others
Build things in public that will contribute to your reputation and career
Learn soft skills related to software development, like how to communicate and collaborate with other developers
How can I help make sure I have a positive experience?
First, consider the various ways you might contribute to a project. (Hint: it's not limited to coding.) For instance, people help projects by:
Planning meetups or other events
Doing user research to improve navigation
Cleaning up duplicate GitHub issues or suggesting new issue labels
Starting newsletters, or contributing to existing ones
Next, learn about how the project is organized:
Who originally authored the project?
Who owns it now?
Who are the maintainers?
These are all important people, and identifying them will help orient you to a project.
You'll also want to look at the project's documentation. You'll usually find the following files in the top level of a project's GitHub repository: LICENSE, README, CONTRIBUTING, and CODE_OF_CONDUCT. Projects may also collect documentation on a separate website.
It's good to find out what tools the project uses, which usually include the following:
Issue tracker: where people discuss issues related to the project
Pull requests: where people discuss and review changes that are in progress
Discussion forums or mailing lists: where conversational topics go, as opposed to bug reports or feature requests (though some projects use the issue tracker for all conversations)
Synchronous chat channel: e.g. Slack or IRC, where more casual conversations may happen
Finally, try to establish personal connections. Join in the conversation on pull request discussions or issue pages on GitHub, or use Twitter to reach out. Making connections builds trust and will help get your contributions reviewed and accepted. And you never know: a connection might help you land your next role (or first job) in software development.
What criteria can I use to pick a project?
Continue reading this newsletter for a list of seven great open-source projects you should consider! You could also start by looking at the open-source software you use or want to use. Among these projects, look for ones that are active. To determine this, you can check:
If the number of contributors is growing
The date of the most recent commit to the GitHub repository (ideally within a week or a month)
The number of maintainers
The level of activity in the chatroom
In addition, GitHub has created a checklist for gauging whether a project is likely to accept new contributors.
How can I identify issues to work on?
For active projects that grab your interest, follow your gut when you notice something that could be improved. That's often the sign of a good first issue.
You could also visit the project's GitHub repository and add "/contribute" to the end of the URL. For example, visiting https://github.com/scrapy/scrapy/contribute will show you relatively approachable tasks for first-time contributors to the Scrapy project.
How do I actually make a contribution?
Once you've identified an issue to work on, you'll want to do a little more research to make sure it's not being discussed elsewhere. Check the README, open and closed issues, mailing list, and Stack Overflow. If you don't find any sign of it, proceed.
Then, check the project's contributing guidelines for guidelines on submissions.
Next, on GitHub, open an issue or a pull request. Which one you use will depend on the type of change you're contributing, and GitHub offers some guidance.
Finally, sit back and see what happens. The possibilities include:
Your contribution is changed
Your contribution is not accepted
Your contribution is accepted
Regardless of the outcome, you should feel great about volunteering your time and energy to help others. And if your first contribution doesn't go as planned, don't be discouraged. There are many other open-source opportunities out there, and you can try again!
Ready to get started? Then keep reading!
7 open-source Python projects worthy of your time
We get it: knowing where to begin among so many open-source options can be daunting. That's why we've curated a list of projects to check out.
coala is a library that provides a unified command-line interface for linting and fixing code, no matter what languages you're using. To put it another way, coala is like a spelling and grammar checker for your code. (The name stands for "COde AnaLysis Application.")
We like coala for its relative simplicity and welcoming documentation. Together, these qualities make it easy for new users and contributors to jump in.
Learn more about coala:
Check out the Newcomer Guide
Read the contributing guidelines on GitHub
Visit the project's repository on GitHub
Django is a high-level Python web framework that simplifies launching websites by reducing the number of development tasks you have to perform. Django is considered complete and complex among web frameworks because it comes with nearly all the applications a website could need. (For a good comparison of Django with Flask, a more lightweight web framework for Python, check out this article on the Educative blog.)
Don't let Django's complexity scare you. Even if you're new to Python, you can always contribute something besides code. (More on this later in the FAQ.)
Learn more about Django:
Keras is a high-level Python API with an emphasis on deep learning. It includes specialized repositories such as computer vision, and promotes itself as "an API designed for human beings, not machines."
Given the importance of machine learning these days, it's a great time to get involved with a deep learning project like Keras.
Learn more about Keras:
Requests is an HTTP library for Python that allows you to easily send HTTP/1.1 requests. Contributing to Requests could provide you with a high-profile opportunity, as it is one of the most downloaded Python packages these days.
That said, don't let the project's prominence intimidate you. Requests promises an environment where all contributors are welcome, as long as they follow one rule: "Be cordial or be on your way."
Learn more about Requests:
Scrapy is a high-level web crawling and web scraping framework that can crawl websites and extract data from their pages. It's also speedy. Scrapy's uses include data mining, information processing, and historical archiving. (For a good introduction to web scraping, check out this article on the Educative blog.)
Scrapy promises a healthy and active community, and it's a good starter project for open-source beginners.
Learn more about Scrapy:
Ansible is an IT automation platform that simplifies deploying and maintaining applications and systems. It can automate configuration management, application deployment, cloud provisioning, and more.
Ansible has solid documentation and is another great project for beginner contributors.
Learn more about Ansible:
cookiecutter is a command-line utility that creates projects from templates called "cookiecutters." For example, this utility lets you create a Python package project from a Python package project template. cookiecutter welcomes all types of contributions and promises to always give credit.
Learn more about cookiecutter:
Those are just seven open-source Python projects you could contribute to today.
We hope that one of them piqued your interest. But if not, check out this list of more open-source Python projects.
We can't wait to see what you do with open-source Python! If you have experience contributing or advice for new contributors, we'd love to hear about it. Just let us know in the comments or by replying to this email.
As always, happy learning!