How are metrics extracted?
Popularity
As of May 20, 2021: Popularity is calculated using GitHub's dependency graph. It is the number of dependent repositories as calculated by GitHub. Currently, GitHub only analyzes maven projects so this number is a lower bound.
Old calculation: Popularity is obtained by counting the number of client projects that a library has. We do this by looking for Java import statements in the source code of projects. If a project imports any of the APIs of a given library, we assume that the project uses that library.
Release Frequency
Release Frequency is obtained by extracting all the tags found in the repository of a library, and calculating the average of the time differences between the commit dates of such tags
Issue Response Time
Issue Response Time the time difference between the issue creation date and the date of the first comment on the issue made by any user other than the issue creator. We obtain this information from JIRA or Github, depending on where the library tracks its issues. We ignore issues that have no comments.
Issue Closing Time
Issue Closing Time is the time difference between the issue creation date and the issue closing time. We obtain this information from JIRA or Github, depending on where the library tracks its issues. We ignore issues that have not been closed
Backwards Compatibility
Breaking changes are computed by finding all changes in the visibility of fields, methods and classes of consecutive releases of libraries.
Performance
The number of performance-related issues is computed by filtering all issues found in the repository of a library that contain at least one keyword related to performance problems. All the filtered issues are then classified as performance or non-performance using a machine learning classifier trained with a dataset of performance and non-performance labeled issues.
Security
Our extraction methodology consists of the same steps as the Performance metric, but we use security keywords and a security machine learning classifier.
Last Modification Date
These dates are extracted from the latest commits found in the repository of a library.
Last Discussed on Stack Overflow
We obtain these dates by querying the Stack Exchange API for the latest questions tagged with the library name.
License
We obtain license information by extracting it from the repositories of libraries
For more information, you can read our paper.
Contact
You can reach me at lopezdel [at] ualberta [dot] ca