When I began the transition into being a software developer, I knew that contributing to open source projects would greatly assist my job search.

So, I jumped onto GitHub looking for issues that I could take on. Little did I know that this would be a miserable endeavor.

The Realisation

At the beginning, I thought I could simply go to React’s repo page (or another extremely popular repo’s page) and find an issue.

But those repo’s are literally hounded by people looking for an issue. And it is very time consuming to click through repositories.

My second thought was to use GitHub’s issue search, but I ran into several problems here:

  1. You cannot filter issues based upon the amount of stars a repository has
  2. You can only filter by language if the issue is literally labeled that language. (So if the project is predominantly a JavaScript repo and the issue is not labeled JavaScript, you have no way of searching for it by language.)

Basically, you have to know of them and look them up manually.

  1. As said before, go to a project’s GitHub page by learning of its existence in some way
  2. Look through the issues. Now you can filter a little by label (think bug, feature, good-first-issue)
  3. If you don’t find something that you can do, you have to start this process over with a new repo!

Needless to say, it took me forever to find an issue that I wanted to take on.

Fast forward a few months. I began to make a website to make open source contribution easier.

The Process of Creation

AAV4wgF5o3N1LUEYejtGeXOvW8KhYyrKQJa4
Photo by Luca Laurence on Unsplash

The main challenge was to get the data that I wanted. I knew I had to use the GitHub API.

As I said earlier, when you search on GitHub for an issue, you cannot search by stars or language. This stems from the fact that GitHub’s Repo API request does not provide this option.

My initial thought was that I should focus on finding repositories of interest. For example, the thousand most starred JavaScript, Python, and a variety of other languages repos.

Well… you cannot search repos by language nor by star count.

Dynamically fetching data is cool, but how could I do it? Here is a condensed view of why it is ridiculously difficult with the GitHub API.

Coming to Terms with the GitHub API

One thing to begin with: you have a limit of 5000 requests per hour to the GitHub API.

This is the only way to get a bunch of repositories at once: https://api.github.com/repositories which will give you around 35 repositories but none of these rows have language or star count.

Though, you can query each of these repositories returned from the initial API request (ex. https://api.github.com/repos/facebook/react) and then you get this data!

But wait… I have to go through every repository on GitHub... there are approximately 90 million repositories.

A Little Math

90,257,000 (amount of repos with amount of requests to get repos) / 5000 (hourly rate limit) ~= 18,000 hours or 750 days or around 2 years… ?

lXGjTRFCUmD2w3-FP0p0EqrTGAuop07sldba
Photo by Kai Pilger on Unsplash

The Reluctantly Made Decision

So I had to find the repositories manually… ?. Thank god for this site: https://gitstar-ranking.com/ but still, quite a few hours of clicking through repositories…

But, I got there! And here is the site! ?

FindanIssue.org

LCdHAEC6UExXLxVSF6ojXRyWZcjmgAMcWA6O
The amazing website

I made it as simple as possible. Search by the exact repo, by specific language (exact and case sensitive), by label, or the age of the issue. So, you can get to the root of what you are looking for.

If you are a beginner, then search by labels such as good first issue or docs/ documentation as well as specifying your programming language of choice.

Kapd7zRmeB0Ih47xJ-thgI-wleyKTo47lBfv
Beginner Issue Example

If you are a seasoned developer looking for a challenge, search by labels such as feature, help wanted, bug, or other labels of your choice.

DZ6U9O8kPo0Q1zhANvILm2-bWno1ZOGtexGI
More Advanced Issue Search

At the moment, the data is refreshed twice daily so old issues are removed and issues that have been labeled are given their proper label.

Closing Thoughts

There is still a lot of work that can be done:

  • The most glaring problem is that only around 900 projects are showcased. So, there are a wide spectrum of amazing projects that are not being given a chance.
  • Improving the backend and some additions to the frontend would really make a difference

All in all, I made this because I believe it to be a step towards fulfilling a need in the open source community of linking issues to developers. Rather then going out into the wild to find an issue to take on, the site aims to make it a simple few minutes of searching through a table.

I hope you use it and find yourself giving back to the world of open source, that you, as a developer, depend on every single day.

q9MweeUDqyg9Ucyvzvsp5x1Z3U7T5D9WMqoX
Photo by Riccardo Annandale on Unsplash
Here is the repo: https://github.com/jMuzsik/find-an-issue

And here is the site: https://findanissue.org

And thanks for the read!