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.
OSSRank was started by Ry Walker to compare open source projects he was interested in, and to determine what projects are trending and dropping.
- Claim/merge profile (for signed in users)
- Users voting for their top 20 current favorite projects - and alternate view of leaderboard based on this data
Initial Project Import
We link all code repos to their respective projects.
We loop through these repos, and use
(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
We analyze all commits for all projects to generate a
minimal number of developer identities. When project has contributors with
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
All commits are then linked to this minimal set of identities, and our leaderboards are generated.
- 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.
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
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.
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.
If you have any questions, suggestions, or concerns, please email email@example.com.