How are the scores calculated?
Quality attributes are easy to calculate because they are self-contained. These are the kind of attributes that a person looks at first when checking out a package.
- Has README? Has license? Has .gitignore and friends?
- Is the version stable (> 1.x.x)? Is it deprecated?
- Has tests? What's their coverage %? Is the build passing?
- Has outdated dependencies? Do they have vulnerabilities?
- Has custom website? Has badges?
- Are there linters configured?
Maintenance attributes allows us to understand if the package is active and healthy or if it is abandoned. These are typically the second kind of attributes that a person looks at when examining a package.
- Ratio of open issues vs. total issues
- The time it takes to close issues
- Most recent commit
- Commit frequency
- Release frequency
Popularity attributes allows us to understand the package adoption and community size. These are the kind of attributes that a person looks at when they are undecided on the package choice.
- Number of stars
- Number of forks
- Number of subscribers
- Number of contributors
- Number of dependents
- Number of downloads
- Downloads acceleration
If two packages are similar, one tends to choose the one whose author is well known in the community. Relationships between people are also important. When a user follows another, there's a link between them. We can infer that people prefer packages from the users they follow. As of this writing the personalities attributes are not yet implemented.