About

Overview

OSSRank continuously compares open source projects. Our curators are constantly adding new projects and updating existing ones. We are also researching what companies have built open core products on top of each project, and creating those links. Finally, we are giving each OSS contributor a score based on their contributions across all projects.

Origin

OSSRank was started by Ry Walker to compare open source projects he was interested in, and to determine what projects are trending and dropping.

Roadmap

  1. Claim/merge profile (for signed in users)
  2. Users voting for their top 20 current favorite projects - and alternate view of leaderboard based on this data

Methodologies

Initial Project Import

We link all code repos to their respective projects. We loop through these repos, and use git log (along with some gymnastics to get around invalid characters in some projects) to generate json files, and load all commits into our database.

We compute overall metrics like total_commits and total_contributors.

Linking

We analyze all commits for all projects to generate a minimal number of developer identities. When project has contributors with slightly different author_names, but the same author_email, we merge these into open profile automatically. And if the same project has commits from the same name, but different email, we merge these as well (yes there is a chance we may link two "John Smith" records together, unfortunately).

All commits are then linked to this minimal set of identities, and our leaderboards are generated.

Project Scoring

  • First we summarize daily_commits for each person, for each project. There is an initital import script, and then we run a daily process to re-process the most recent 10 days (to catch most of any late-arriving commits).
  • Next we compute the number of commits and contributors for the past 30, 90, 365, 1095 days, as well as all-time. We rank each project according to each of these 8 variables, and then combine them using a simple formula.
  • We multiply the score according the "Challenge Coefficient" for the project's category. Bottom line—we're boosting projects that are hard to contribute to, and de-boosting projects that are easy.
  • Finally we normalize the scores along a 1000 point scale, and these are the scores that we share on the website.
  • We also run the same process for n-30 days ago, to show recent change each project has exhibited.

Category Scoring

We give each project in the top_x projects a score top_x - current_rank and sort the categories based on their total points.

Daily Project Refresh

We use git clone --shallow-since to pull down recent commits for each repo and each project every day. Then we update the project's metrics, and rescore contributors and categories.

Re-rank Projects

We re-score and re-rank all the projects every three hours. It would be daily if we weren't constantly adding projects most days, but our project import queue is bottomless.

Contact

If you have any questions, suggestions, or concerns, please email support@ossrank.com.