Criticality Score
A project's criticality score defines the influence and importance of a project. It is a number between 0 (least-critical) and 1 (most-critical).
It is based on the following algorithm by Rob Pike:
Take a look at the criticality score for the package @angular/service-worker.
Criticality Score
Parameters
Parameter (Si) | Weight (αi) | Max Threshold (Ti) | Description | Reasoning |
---|---|---|---|---|
Created Since | 1 | 120 | Time since the project was created (in months). | Older project has higher chance of being widely used or being dependent upon. |
Updated Since | -1 | 120 | Time since the project was last updated (in months). | Unmaintained projects with no recent commits have higher chance of being less relied upon. |
Contributor Count | 2 | 5000 | Count of project contributors (with commits). | Different contributors involvement indicates project's importance. |
Org Count | 1 | 10 | Count of distinct organizations that contributors belong to. | Indicates cross-organization dependency. |
Commit Frequency | 1 | 1000 | Average number of commits per week in the last year. | Higher code churn has slight indication of project's importance. Also, higher susceptibility to vulnerabilities. |
Recent Releases Count | 0.5 | 26 | Number of releases in the last year. | Frequent releases indicates user dependency. Lower weight since this is not always used. |
Closed Issues Count | 0.5 | 5000 | Number of issues closed in the last 90 days. | Indicates high contributor involvement and focus on closing user issues. Lower weight since it is dependent on project contributors. |
Updated Issues Count | 0.5 | 5000 | Number of issues updated in the last 90 days. | Indicates high contributor involvement. Lower weight since it is dependent on project contributors. |
Comment Frequency | 1 | 15 | Average number of comments per issue in the last 90 days. | Indicates high user activity and dependence. |
Dependents Count | 2 | 500000 | Number of project mentions in the commit messages | Indicates repository use, usually in version rolls. This parameter works across all languages, including C/C++ that don't have package dependency graphs (though hack-ish). Plan to add package dependency trees in the near future. |