I was scouting around github today and noticed that many projects seem to have a huge number of forks… Way more forks than are actually being used. At first this seemed strange, but I quickly realized that this large number of forks is due to people not knowing what forks are actually for.

Forks are for making your own snapshot of a codebase so that you can make a new version of it with your own special sauce, or so that you can contribute a change in the form of a pull request. Simply, you must make a fork whenever you need to modify the codebase, but do not have direct access to do so. New users don’t understand this and end up equating the ‘fork’ button with ‘download’ or ‘bookmark’. Little do they know, you can download code directly from the original repository and you can bookmark things using Github’s stars.

Forks are seldom what people actually should be doing. Actually, it looks like the VAST majority of times a user clicks the fork button, they actually shouldn’t have. Most of GitHub’s forks are useless and are user error!

Stupid factor calculation

The interesting part comes from when we compare stars to forks. First, we weight the forks count by removing the number of contributors to the project. This removes the majority of correctly used forks for a project. Even if one of those contributors made multiple pull requests, that still only ever counts as one fork - it has the same URL.

Next, we simply divide the number of forks by the number of stars and multiply by 100. This gives us a ‘stupid factor’ for any project. The formula is this:

((Forks - Contributors) / Stars) * 100

The Results

I will display the results in several categories, then follow up with a grab bag list of interesting items.

Programming Languages

Project Stupid
PHP % 31.35
Ruby % 29.19
Scala % 20.61
Julia % 15.81
HHVM % 15.46
Coffeescript % 11.89
Swift % 11.70
Rust % 10.70
Elixr % 8.12
Go % 8.01

Programming Language Extensions or Packages

Project Stupid
Spring Framework % 81.92
angular.js % 43.70
Rubygems % 37.22
Ruby on Rails % 30.49
jQuery % 25.66
npm % 16.47
node % 8.32

DevOps Software

Project Stupid
Puppet % 30.55
Chef % 30.12
Kubernetes % 23.38
Docker % 23.04
SaltStack % 21.57
Ansible % 21.29
Vagrant % 15.47

Databases

Project Stupid
Redis % 33.84
ElasticSearch % 28.20
MariaDB % 17.02
Mongo % 25.43

Other Stuff

Project Stupid
ImagicalMine % 1,964.90
Jekyll Now % 344.20
OpenCV % 79.73
Wordpress % 50.56
git % 49.33
Drupal % 45.02


What is ‘Imagical Mine’ you say? It’s a pocket Minecraft server! Also, Jekyll now advertises that you can setup a blog with no programming.

Conclusion

I hope you had as much fun studying these results as I had finding them. I think this metric is much more accurate than you might first assume and should proably be considered by the community when making any software choice.

« Back to Article List

Comments

comments powered by Disqus