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, theconnect
,close
,end
andtimeout
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 usememdown
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