Open source projects and contributions are a great way to start your coding adventure on Github. Thank to Github’s awesome search, it is possible to find both popular and hidden gems within seconds. In this article I will show you how to easily perform a full-text search using Github’s built-in search feature but also how to use some third party tools and services in case you want to refine your search further.
GitHub is a popular source code hosting platform for developers to share and collaborate on open source projects, software packages, and public or private software development projects. I picked up a few interesting Github project by using the following techniques.
A website which helps you find projects/issues based on your required language or issue labels — http://issuehub.io/
Features? You can filter issues based on labels and language.
And wow, the first issue that shows up in this website is from one of my repositories. Not exaggerating, but I feel like a hero after seeing this (Haha, ok, my jokes are sometimes lame)
Find Your Motivation
It is almost impossible to game the GitHub Trending section:
GitHub’s definition (of trending) takes into account a longer term definition of trending and uses more complex measurement than sheer number of stars which helps to keep people from farming the system.
Founders often create startups based on problems they have personally encountered. With open-sourced code, you will likely be trying to solve problems that developer commonly have.
And since gaming the GitHub Trending section is almost impossible, you need a strong motivation – a big, common developer problem – to work on. So how do you stumble onto a developer problem?
Well, for starters you can participate in hackathons, build projects, and experiment with other projects. And you will soon find something which could be made into a library, something you could make a utility out of, and so on.
Your motivation for building your project could come from anywhere. In my case, I explore new Machine Learning papers daily on arXiv (an open-access archive for papers) and read the ones I find interesting. One such paper I read motivated me to build my Python package.
Another time, I was in a hackathon training a Machine Learning model and wanted to participate in other festivities. Our team then decided to build another open-source project called TF-Watcher.
So you see, you’ll likely find all sorts of issues you can work on when you’re building a project.
And just to note – when I say you should have a strong motivation, I do not mean the project should be really huge or really complex. It could certainly be a simple project that could make developers’ lives easier.
Think about it this way: if there was a project like the one you want to develop, would you use it? If the answer is yes, you have enough motivation to build the project, regardless of the size or complexity.
Finding a Project
On our Twitch stream, we answered them all. One of the coolest things our viewers loved, is where to find projects. It can often be a daunting experience when you first look at Open Source. There are so many projects and so many issues you almost don’t know where to start. Hacktoberfest has made it easy by showcasing projects on their homepage.
But did you also know you can search trending Open Source projects on GitHub? You can even filter by programming language, spoken language, and even date. We ran through an example on how to find a top Ruby project. If you check out our search terms you’ll find the top Ruby projects for today.
You can even search by developers. If you want to find a top developer contributing to the language you want to write, then you can do just that too. We found a Ruby dev with nearly 6,000 contributions just this year!
There’s so many ways to find projects you’re interested in. Taking a look at trending open source repos are just one way of doing this.
Does a similar project or tool already exist?
If it has not been done yet, and there’s a need for it, go ahead and start building it.
If something similar exists, is well developed, and is heavily used too, you might want to move on.
There are a huge number of open-source projects out there already, and it is quite common to find a repository doing similar stuff (more common than you would think). But you can still work on your project and make it better.
Up For Grabs
List of projects with issues that can be resolved by beginners
This is a list of projects which have curated tasks specifically for new contributors. These are a great way to get started with a project, or to help share the load of working on open source projects.
If something similar does exist, can your project make it better?
If something similar exists, your goals could be to make it more modular or more efficient. You could try implementing it in some other language or improve it in any other number of ways.
A great way to do so is to take a look at the issues for the existing repository. Try doing your research with existing solutions (if there are any) and find out what aspect of the project could possibly be improved. Your work could even be a derivative of the other project.
In my case, as I mentioned, I took inspiration from an interesting research paper I read (Fastformer: Additive Attention Can Be All You Need). I also discovered an official code implementation and a community implementation of the paper, both in PyTorch.
Picking issues to work on and making contributions
Projects may list the work that needs to be done in task, bug, and issue trackers. For example, Angular uses Github’s project management feature to outline and assign tasks and track their progress. If a project has one, get access to it.
As a rule of thumb, start with the easiest and smallest contributions first that take the least amount of work to build up your confidence and credibility before trying harder contributions. Writing documentation and fixing typos is a good place to begin. Look for issues that are tagged for beginners with the tags mentioned earlier.
After you pick a task you think you can finish, do your research. Read documentation, code, and discussions related to the task to get a better understanding of what to do. If you’re stuck on something even after you’ve researched it, reach out to the community and ask for help, clarification, or mentorship. However, make sure that you discuss issues related to the task publicly so that the rest of the community can benefit from what you learn. For example, discuss an issue publicly on Github versus in a private direct message on Slack. Once you feel like you have enough context on a task and know how to go about it, write some code and submit a PR. Github has a great checklist about what to check for before you contribute to a project so your effort is not wasted.
There are many resources on Github to be found every day. The following tips will help you search for open source projects easily: