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
- 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
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.