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