Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap #9

Merged
merged 10 commits into from
Sep 27, 2018
Merged

Roadmap #9

merged 10 commits into from
Sep 27, 2018

Conversation

raulk
Copy link
Member

@raulk raulk commented Sep 25, 2018

Having discussed motivation (#3) and technical design (#1) for go-libp2p-daemon, I'd like us to agree on a feature roadmap for the short-term and medium-term. This will help convey expectations to downstream users like Ethereum 2.0, and will help guide us towards a more complete spec.

Here's an initial draft based on my understanding of the discussions we've had so far. Please comment, provide feedback, and add features I may have missed.

@ghost ghost assigned raulk Sep 25, 2018
@ghost ghost added the in progress label Sep 25, 2018
Copy link
Collaborator

@vyzo vyzo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good write-up overall!

ROADMAP.md Show resolved Hide resolved
ROADMAP.md Outdated
- Daemon identity: auto-generated, and persisted.
- DHT operations.
- Pubsub interactions.
- Shared-memory local transport between apps and the daemon: more efficient
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's more of a medium term objective, as there is a lot of complexity with shared memory; also, it's not obvious that it will be substantially more efficient than unix sockets.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 makes sense.

ROADMAP.md Outdated
- Connection lifecycle: connecting and disconnecting with peers.
- Stream lifecycle: opening and closing streams.
- Stream <> unix socket 1:1 mapping.
- Daemon identity: auto-generated, and persisted.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

up to here we are already done, we should probably mark it as such.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding checkmarks to stuff we've completed ✅
Adding construction signs to stuff we're currently working on 🚧

ROADMAP.md Outdated
- Stream <> unix socket 1:1 mapping.
- Daemon identity: auto-generated, and persisted.
- DHT operations.
- Pubsub interactions.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dht and pubsub are coming next, hopefully this week.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sweet, adding constructions signs 🚧 to these!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just one thing came to my mind: We used RPC for Validator in pubsub to send content to the Python side to get the validation result. If the pubsub in libp2p daemon wants to support content validation, should it provide a registration function for users to register a callback Unix domain socket?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point about the validator, i was also thinking about it.
I guess we could open a unix socket, register a validator with a control op, and keep it open to upcall for validation.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point! Do we want to be able to set DHT validators too? Or are we always going with the default Namespaced+PublicKeyValidator?

https://github.com/libp2p/go-libp2p-kad-dht/blob/a303c4537172e4195887f602f36f6bd5e3cde0b4/dht.go#L56

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not as critical I think, but we can consider it in the longer term.

ROADMAP.md Outdated
- Global services implemented in the user space.
- Plugins: services providing features back to the daemon, for use by other
tenants.
- Circuit relay support.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

relay support can be added in the short-term.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was suspecting that, but I wasn't certain. Will move it up!

@vyzo
Copy link
Collaborator

vyzo commented Sep 25, 2018

We might also want a peerstore management interface.

- adjust short and medium-term goals.
- add status emojis to features.
@raulk
Copy link
Member Author

raulk commented Sep 25, 2018

@vyzo can't believe I forgot about the peerstore. I assume it would be a short-term goal?

If you guys think this is a good description for the project, we could feature it in the frontpage README. Given this project is WIP, I'd even feature the roadmap on the frontpage.

WDYT?

@raulk
Copy link
Member Author

raulk commented Sep 25, 2018

Was thinking about adding something like the following:

Even though the daemon can be construed as a temporary solution while native implementations of libp2p are developed in all languages, it is not outrageous to believe that, for some environments, this approach may perform perennially faster. Examples include: interpreted languages, languages lacking fast crypto or serialisation libraries, heap-intensive languages, languages with weak networking constructs in their standard libs (thus requiring 3rd party frameworks), etc.

@vyzo
Copy link
Collaborator

vyzo commented Sep 25, 2018

It's not a temporary measure imo, as there is incredible complexity implementing the full libp2p stack.
And yeah, for many languages it could be perennially faster.

@vyzo
Copy link
Collaborator

vyzo commented Sep 25, 2018

can't believe I forgot about the peerstore. I assume it would be a short-term goal?

yeah, it should be there from the beginning.

@vyzo
Copy link
Collaborator

vyzo commented Sep 25, 2018

Given this project is WIP, I'd even feature the roadmap on the frontpage.

A link should be sufficient, and yeah -- should be there.

ROADMAP.md Show resolved Hide resolved
ROADMAP.md Outdated Show resolved Hide resolved
ROADMAP.md Show resolved Hide resolved
Copy link
Contributor

@bigs bigs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh actually i forgot! we need to have a JS implementation! and a spec.

@bigs
Copy link
Contributor

bigs commented Sep 25, 2018 via email

@raulk
Copy link
Member Author

raulk commented Sep 26, 2018

I have integrated all feedback.

@vyzo if you're comfortable with this version, could you approve the PR as a way to sign off? Thanks!

@Stebalien would be valuable to get your thoughts and feedback!

Copy link
Collaborator

@vyzo vyzo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's add a link to the README as well.

@raulk
Copy link
Member Author

raulk commented Sep 27, 2018

Added a README. Also, Travis and Codecov config files. Minor wording adjustment in the roadmap.

@raulk
Copy link
Member Author

raulk commented Sep 27, 2018

🚂 Merge train departing today at 7pm UK time! 🚂

@raulk raulk merged commit 6f2f5ae into libp2p:master Sep 27, 2018
@ghost ghost removed the in progress label Sep 27, 2018
@raulk raulk deleted the roadmap branch September 27, 2018 18:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants