GraftJS / graft

full-stack javascript through microservices
http://graft.io
MIT License
227 stars 15 forks source link

Module Discovery and verification #17

Open AdrianRossouw opened 9 years ago

AdrianRossouw commented 9 years ago

A big part of our mission statement is to research and document how to use the various stream-oriented libraries that are being added to npm every day.

It's become very apparent to me over the last few months that this is probably one of the biggest challenges of building systems this way. There are hundreds, if not thousands, of stream modules, and just evaluating them is a full-time job.

I have some ideas on how we can make this easier for our users, but we really need to pose the question to a wider audience.

AdrianRossouw commented 9 years ago

I believe that there is an need and opportunity here to demystify a lot of this stuff for people, in a way that provides a real benefit to maintainers and users.

So this is my idea for handling it:

  1. resurrect and expand on @dominictarr's stream-spec project.
  2. have a cli tool that evaluates the module's compatibility with the spec.
  3. be able to mark up and specify testing harnesses or fixtures to bootstrap the validation.
  4. build out automated testing infrastructure in the vein of zuul to run the stream tests against repos/modules on commit or publish.
  5. provide a badge that can be embedded on the github /npm project pages with compatibility info.
  6. build out a website that allows you to search for and evaluate stream modules based on their test results.
  7. build a tool that makes it easy for module authors and contributors to integrate with our testing infrastructure, so users can submit pull requests against modules they want to make use of.

Obviously that is way too big of a project to set out to tackle up front, but I think we can make a dent in the problem if we just started to head out in this general direction.

AdrianRossouw commented 9 years ago

see also : https://github.com/whatwg/streams

although I suspect that the spec will be out of sync with node streams (v1, v2 and v3+), so we could never support just the whatwg spec.