To keep up with advances with technology, one activity that software engineers often do is contribute to Open Source.  I’ll be restricting this to only contributing to other existing projects, not your own projects.

However, there are some obstacles when contributing:

  • Since many tools used in the community are Open Source, there are very strict standards that must be followed.  Thus, the process of contributing for existing projects can be quite a headache.
  • If a project is small and the owner isn’t active on a regular basis, it can be hard for your work to be merged into the project.
  • Some project communities can be toxic.  The Linux kernel community has experienced a lot of toxicity from Linus Torvalds, the Linux founder.
  • Many professional software engineers have non-competing agreements that forbid them from programming in their free times.  Those that don’t have other commitments.
  • If you’re not getting paid to contribute during working hours, why bother?

Some would see not contributing to Open Source as selfish.  After all, you get to use free tools and you should be grateful.  I honestly don’t like this line of thinking.  Not everyone wants to spend their entire time programming.  Some projects have contributing policies that are a hassle to deal with.  Some would like to do a side hustle and earn extra money.

Fortunately, there a couple websites that focus on earning money while contributing to Open Source.  I ran across a few different sites:

  • IssueHunt – I noticed that this site mainly focuses on web projects.  If you want to contribute, I recommend having a background with Javascript and Typescript.
  • BountySource – Has a much more active user base with more variety.
  • Gitcoin – The tasks on this site focuses more on Blockchain.  You can be rewarded with Ethereum as well as cash.

For this post, I’ll be mainly focusing on IssueHunt.

Project Basis

As with other bounty sites, IssueHunt allows users to fund issues, submit pull requests, and get rewarded.  However, I noticed that IssueHunt has very little statistics.  My project involves creating a website to web scrape portions of the IssueHunt website and represent the data in a meaningful way.

Choice of Infrastructure

Since IssueHunt is a small website, I chose to keep the current infrastructure rather simple.  For the front-end, I chose React as the main framework.  I import the react-chartjs-2 module for graphing data.  On the backend, I chose NodeJS for the server.

Our data will be stored using MySQL 8.  I chose MySQL for two reasons.  First, our data can easily be classified as relational.  This attributes allows for optimization for accessing data.  The other reason is since IssueHunt is currently a small bounty site, it would be an overkill to use a NoSQL database.

What Analysis Can It Do?

The website displays some statistics about the repositories and the issues.  The site mostly uses line charts to convey the data.  The only exception is the number of issues of a particular status.

Currently, the following general questions can be answered:

  • How many repositories are available?
  • How often are repositories added to the site?
  • What is the total amount funded on the website?
  • What is the total amount of active funded are on the website?
  • How many issues are open?  – Note that an open issue means that an issue is funded or unfunded.

For a given repository:

  • How many issues are unfunded, funded, submitted, and rewarded?
  • What’s the average, median, and mean price of a funded, submitted, and rewarded issue?

Missing Features and Data

Filtering

As of time of writing, there’s currently no way to filter repositories by name or by attributes such as:

  • Contains issues
  • List by most issues
  • List by most funded

Representing Issues in a Time Series

Issues are only displayed as of the last web scraping period.  There is currently no data for displaying how many of each type of issue occurred on a particular day.  Fortunately, IssueHunt does have an activity section that can show what happened for a particular issue.  It can implemented in the future.

Additional Data Analysis

The site doesn’t contain or have straightforward data for answering the following questions:

  • Which repository contains the most issues?
  • Which repository has the most rewarded issues?
  • What is the most expensive issue funded/rewarded?
  • Which repository contains the most submitted issues?
  • Which repository contains the most unfunded issues?
  • Which repository is worked on the least?
  • How many repositories have at least one issue?
  • Who has submitted the most issues for a given repository?
  • What’s the most popular primary language used?
  • Who has been rewarded the most for a given repository?
  • Who has been rewarded the most in general?
  • Etc…

Conclusion

If you wanted to make a little money on the side while honing your software development skills, IssueHunt could be a viable option.  I created this project to give me a more in depth look on activity.  I hope you’ll find the site useful.

I’ll keep adding more features in the meantime to make the site more useful.  The repository can be found on my github account.