  The Node.js Package Manager (i.e., npm) archive repository serves as a
critical part of the JavaScript community and helps support one of the largest
developer ecosystems in the world. However, as a developer, selecting an
appropriate npm package to use or contribute to can be difficult. To understand
what features users and contributors consider important when searching for a
good npm package, we conduct a survey asking Node.js developers to evaluate the
importance of 30 features derived from existing work, including GitHub
activity, software usability, and properties of the repository and
documentation. We identify that both user and contributor perspectives share
similar views on which features they use to assess package quality. We then
extract the 30 features from 104,364 npm packages and analyse the correlations
between them, including three software features that measure package
``runnability"; ability to install, build, and execute a unit test. We identify
which features are negatively correlated with runnability-related features and
find that predicting the runnability of packages is viable. Our study lays the
groundwork for future work on understanding how users and contributors select
appropriate npm packages.
