Skip to content

Instantly share code, notes, and snippets.

@thlorenz
Last active December 17, 2015 12:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thlorenz/5610508 to your computer and use it in GitHub Desktop.
Save thlorenz/5610508 to your computer and use it in GitHub Desktop.
Copy valupack's goals. valuepack is a community driven rating system for nodejs modules on npm in order to help in selecting the right one.

Copy of these goals in order to facilitate discussions.

valuepack goals

Community driven rating system for nodejs modules on npm in order to help in selecting the right one.

Why

Whith 50k+ modules on npm finding the right module for the problem you have is becoming more tedious than it needs to be. Especially newcomers to nodejs are overwhelmed with the amount of modules to choose from.

While github stars/issues/etc. give some indication of the state and quality of a module, it simply isn't sufficient. valuepack aims to enhance this information with the ability to downvote problematic modules and wheigh these votes according to the credibility of the voter in the community.

The goal is a community moderated rating system for modules published on npm.

This will be combined with a search that takes these ratings into account to sort results returned by the current npm search.

How it works

valuepack combines github stars with the ability to downvote a module.

  • upvotes are derrived from github stars and can only be performed by starring on github
  • downvotes are only possible if a person has a credit of downvote stars
  • a history of when votes are performed will be kept to detect modules that once were popular, but no longer apply

Module Rating Score

Each module receives a score derived from the up/down votes. This score will be taken into account when searching npm for a specific module. Big differences may even override better keyword/name matches.

Sorting modules

When searching for a particular keyword, modules will not only be sorted by how well they match the query, but also by their Rating Score.

Optionally the user may affect priorities given the ordering of results. i.e. Relevance vs. Rating

Users

Users are github users. They need to log in with their github account and give permissions to watch their behavior regarding starring repos and filing issues on them.

User Credibility

credibility is derrived from the following:

  • how many upvotes/downvotes modules by the downvoter received
  • accepted PRs performed by the user

Upvotes

Call into github to star the module in question. Additionally they allow the voter to include a comment that indicates what the module does particularly well.

Downvotes

When a user performs a downvote he will be forced to comment on the reason for it.

Aside from a custom downvote comment the following shortcuts make sense:

  • does too much (violates rule of parsimony)
  • complex API
  • missing or unclear readme
  • missing examples
  • missing, bad or inclomplete tests
  • missing ci (i.e. travis/testling)
  • slow or no reaction to issues (provide link)
  • buggy (provide sample or point to issue)
  • code is hard to understand
  • code is not javascript and therefore makes it hard to contribute

Available Downvotes

Available downvotes are derrived from the user's credibility.

When a downvote is performed, it is substracted from the number of upvotes.

Weighing downvotes

Each downvote is weighed according to the credibility of the downvoter.

i.e. a downvote of someone with a credibility of 1000 may affect the module's Rating Score 10x as much as a downvote of someone with a credibility of 100.

github interaction

Aside from syncing with github stars, valuepack will require or at least encourage a downvoter to create a related issue. When an issue is created by a user on github and no downvote occurred, he will be encouraged to do so the next time he comes to valuepack.

@jarofghosts
Copy link

Just to migrate conversation: may consider npm stars and dependencies.

@AWinterman
Copy link

Is the reliance on github problematic? Doesn't npm also support hosting your repo on other platforms?

@thlorenz
Copy link
Author

@AWintermann I'm trying to stay away from creating an alternative voting system.

Instead I'm aiming to implement needed features on top of what github already gives us, i.e. upvotes will sync with stars. In order to tightly integrate like this logging in with github account is required if you want to do anything more than just query for a module.

So yes, npm allows hosting on other platforms and those can be supported in the future, but to get something meaningful going quickly so people can play with it we should just focus on github.

@thlorenz
Copy link
Author

@jarofghosts we could certainly take npm stars into account.
More modules depending on the module in question is also a good indicator for acceptance, so I agree, just need to figure out how to weigh all these factors to come up with good results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment