Contributing to open source doesn’t happen overnight, but it can be done by anyone. “Why do you contribute to open source?” was a question I asked various developers on social media and other channels. From their responses I created this guide for beginners to contribute ideas, code, or art to open source projects.
Have you ever considered contributing to open source, but felt a bit of apprehension or hesitation about having the skills to do so? A major contributor to open source software applications can be lack of a clear understanding of how code is written, and the inner workings of such. In this article, I will be going over some useful tips geared toward beginners, such as myself. Hopefully, this can provide you with some insight into some topics that might assist you out.
Get to know GitHub
GitHub is the most popular platform for open source collaboration, so you’ll probably use it when exploring the world of OSS. First, you need to create a GitHub account and read the guide that helps you get started. On GitHub, you can contribute to projects by submitting issues and contributing code. Submitting issues means sending messages about errors in applications and suggesting ways to fix them. Contributing code involves sending pull requests with your corrections and improvements.
30 Seconds of Code
In short, this is a repository of easily digestible data that can simultaneously be used to learn and contribute to beginners. This may not be a project that beginners can contribute to, but it is still a great start for people looking to grasp concepts.
Learn the basics
When working with GitHub, you should know how to use Git – one of the most popular version control tools (also known as revision control tools). Because developers constantly make changes to their code, they need a system that can manage those changes in a central repository. In this way, everyone involved in the development process can download a given piece of software, make changes, and submit updates.
TensorFlow projects are for those new developers who are interested in Machine Learning and Deep Learning. Beginners should ideally learn from some TensorFlow Tutorials and observe the official models before contributing to any project.
Currently, the GitHub TensorFlow Model Garden contains projects of Natural Language Processing and Computer Vision. These official models are a collection that uses TensorFlow’s high-level APIs and is to be properly curated, tested, and updated to keep up with the latest build. These models are also intended to be properly optimized so that they run the same or faster with each new build.
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.
There are many projects on GitHub and other similar sources that are aimed at beginners. Some of these are meant to educate by providing you with study materials, while others are more like walkthroughs or practice exercises. Whatever the case may be, these are beginner-friendly projects and often the place to start. However, this is not at all the case in all projects marked as a “good first issue”.
Some of the high-level apps, websites, platforms, and projects also offer work that is fit for beginners. This is mainly because the high-level works are done by people who have the necessary qualifications to do so, but the project is still open-sourced and contains many tasks to be done on all levels of difficulty. Here are some intricate projects that also offer a spot for the newcomers to tackle real issues while learning the ropes.
Neovim is tagged “good first issue” on GitHub, which indicates that it is suitable for people looking for their first open-source projects on GitHub. Vim is a powerful text editor over two decades old and has a rich, fostering community surrounding it. It has accumulated over 300,000 lines of C89 code that very few people can even comprehend, and even fewer dare to touch.
Neovim puts forward a solution to the headache of fostering Vim by re-factoring its source code. This aims to make maintenance easier by accelerating bug fixes and addition of new features, add modern UI without affecting the source code, splitting the work among multiple devs, and add a new plugin architecture that will improve its extensibility power.
This project is not a mission to rewrite Vim but to change it to suit modern times. The changes will have as little impact as possible on the source code. With almost 40,000 stars on GitHub, this is a very popular project in the community.
All skills are welcomed
Even non-programmers can contribute to open source projects! Documentation is needed for all projects, and sometimes this is poorly written and maintained. Thus, you can help by writing, updating or even translating documentation. Also, your design skills might come in handy: every application needs an interface, after all. Finally, you can contribute by managing a community by replying to questions and guiding newcomers.
iGraph is a library that is usable from C, R, Python, and Mathematica. The project is for creating, manipulating, and analyzing graphs. It is a library of network analysis tools and emphasizes efficiency, portability, and ease of use. The Igraph repository on GitHub has over a thousand stars and many suitable problems for beginner level devs to solve.
Scrapy is a high level, fast and accurate data scraping tool built on a Python framework. It is used to scour cyberspace and collect the required data from many online sources, according to the user’s requirement.
It is used for data mining, monitoring purposes, and even testing. This high-level web crawler also has a rich GitHub repository that can serve as a good place for beginner level entrants to try out. This project should be interesting for Data Miners and scientists as well.
Create open source alternatives to commercial software
Today’s commercial projects actively engage open source solutions. Many companies base their projects on free tools. When there’s a huge selection of software, you don’t need to reinvent the wheel. This is why it’s useful to play around with free software that can replace similar proprietary software, or that fixes an issue you’ve recently faced.
Another reason for replacing commercial solutions with open source software is eagerness for real innovation and growth. Commercial software claims to be innovative, but its final goal is turning a profit. Open source software unites best practices, great quality of code and passionate developers willing to code just because they like to.
Jina is a search framework that has cross-modal search implementation capabilities. It is powered by Deep Learning, and it can be used to enable text, image, and audio searches in the cloud. It can be extended using Pythonic interfaces, is plug and play, cloud-enabled, and contains great AI modals, among other capabilities.
Contribute to existing open source projects
You can find many projects you are free to participate in on GitHub – a developer-oriented platform with a simple but essential set of functionality. GitHub attracts developers with public APIs, a sleek and frequently updated UI, gists (Git repositories) that allow you to share pieces of code or even whole applications, and much more. You can contribute to free software in many ways. Developers can fork projects, make changes to code, and send pull requests. And quality assurance is always appreciated. Sometimes developers are too busy or too lazy to check the quality of their code. So go ahead and report a bug or try to fix it – your help is appreciated.
You can reach the hottest GitHub projects by following the “Trending” link. And in order to make your search more relevant, use advanced search: select the language you would like to code in and choose “best match” criteria. Best match ranks projects according to relevance, taking into account the number of forks (which represents how actively the project is updated) and stars (“likes”, in the language of Facebook). Most projects have known issues (however, some don’t) with labels like “bug”, “discussion”, “security”, or “refactor”, or other labels according to the level of difficulty: “easy”, “medium”, “hard.”
Get Familiar with Version Control Systems (VCS)
When we are working on a big project, it is extremely important to store all the changes that are being made to recall it at a later stage. Version Control Systems are software tools that help with it. They keep track of all the modifications that happen over time in the source code as versions. They also allow us to go through older versions and revert to an old version. There are many version control systems such as Git, Mercurial, CVS, and SVN. Git is the most popular and most widely used version control system in the industry.
Sometimes, the hardest part is just getting started! In the 2.5 years since I started contributing to open source, I’ve learned a ton of tips and tricks that will help you get on your way, even as a beginner.