yldio/skiff

new 1.0 milestone

Closed this issue · 1 comments

pgte commented

Main points to address for a 1.0 release:

Transport:

  • The pluggable transport interface should conform to the net.connect(options) API, returning a duplex raw stream that emits, in top of the standard stream events, the connect, close, end and timeout events.
  • Any connection should not be symmetrical any more — this was an initial mistake in the design. Specifically:
    • The master always initiates connections
    • The master disconnects from peers once it finds out it's no longer a master
  • Use pipe-channels for channels and custom negotiation (allows to easily plug authentication). Consider following example of pouch-stream-multi-sync.

State machine:

  • Define a more formal FSM that's easily definable and verifiable;
  • Immutability: consider using Redux or something similar for state changes, making reasoning / rolling back to previous states easier.

Persistence:

  • Make state persistence conform to a leveldown interface — make it more open and easier to plugin. This allows to use memdown as a backend, useful for tests;

Overall

  • Less dependencies and custom abstractions.
AVVS commented

Sounds very promising, in case some stuff could be helped with - I'd love to contribute