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.md: Add high level project roadmap #339

Merged
merged 17 commits into from
Jul 21, 2021
Merged

Conversation

mxinden
Copy link
Member

@mxinden mxinden commented Jun 22, 2021

This documents the libp2p short and long term roadmap based on
previous work (e.g. see libp2p/libp2p/60, ipfs/roadmap/18,
libp2p/specs/archive).

Status

Feedback from the whole community is welcome.

Fixes libp2p/libp2p#68.

This documents the libp2p short and long term roadmap based on
previous work (e.g. see [libp2p/libp2p/60], [ipfs/roadmap/18],
[libp2p/specs/archive]).

[libp2p/libp2p/60]: libp2p/libp2p#60
[ipfs/roadmap/18]: ipfs/roadmap#18
[libp2p/specs/archive]: https://github.com/libp2p/specs/tree/master/_archive
Copy link
Contributor

@marten-seemann marten-seemann left a comment

Choose a reason for hiding this comment

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

Thank you @mxinden for this fantastic document!

ROADMAP.md Outdated Show resolved Hide resolved
ROADMAP.md Outdated Show resolved Hide resolved
ROADMAP.md Outdated Show resolved Hide resolved
ROADMAP.md Outdated Show resolved Hide resolved
@mxinden
Copy link
Member Author

mxinden commented Jun 23, 2021

Thank you @mxinden for this fantastic document!

Thanks and also thanks for the quick feedback!

I want to stress once more that this is based on previous work, thus directing this praise to people like @mgoelzer and @raulk.

BigLep
BigLep previously requested changes Jun 23, 2021
Copy link
Contributor

@BigLep BigLep left a comment

Choose a reason for hiding this comment

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

Lots of good stuff here. Thanks @mxinden and @marten-seemann for the efforts so far (even if a good chunk of it was bringing forward work done by others in the past).

A couple of thoughts:

1

This document right now is a good list of themes (I think the visionary items particular fall in this camp) and items.

Using the map analogy, we ultimately need to be able to create/show our route on the map. Right now we have a list of possible destinations, but no indication of costs to get there, impact, and ordering.

We can talk offline (or here) on how we get there, but we're going to need something "spreadsheet-like" where we can order, sort, etc.

2

This document is covering scope that would expect PM's to be heavily involved in (totally fine - thanks for wading into these waters). That said, I also want to make sure we capture if there are any more tactical things that Stewards/project teams should help with in the next 6 months. This could be automating releases, establishing clearer contribution guidelines, closing out old PRs/issues, etc. I know those things aren't free, and if they help us move faster/safer in the future, I want to make sure we're accounting for them. (They don't need to be in this document, but I do want them for the "roadmap" we look at internally for where we're investing our efforts in 2021H2).

ROADMAP.md Outdated Show resolved Hide resolved
locally, but transmit frequently to a cloud where data analysis occurs.

**Why?** IoT can greatly benefit from peer-to-peer networking. Supporting IoT
environments with libp2p greatly expands libp2p's userbase on the one side and
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we aware of certain customers asking for this? What has held them back from developing it?

Copy link
Member Author

Choose a reason for hiding this comment

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

Are we aware of certain customers asking for this?

Even better. There is https://github.com/Actyx built on top of rust-libp2p using libp2p in the IoT / factory space today.

// @dvc94ch @rklaehn

Copy link

Choose a reason for hiding this comment

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

interesting ROADMAP. but it seems a little broad in general to be actionable and make progress. maybe picking some clear goals for the next quarter would be more productive?

Comment on lines +286 to +288
**Why?** Multistream 1.0 is chatty and naïve. Streams are essential to
libp2p, and negotiating them is currently inefficient in a number of
scenarios. Also, bootstrapping a multiplexed connection is currently
Copy link
Contributor

Choose a reason for hiding this comment

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

I assume some of this information is in the docs below, but I think it would be good to call out a couple of numbers here. For example, (this is me making something up), "The p50 to create a bootstrapped multiplex connect between IPFS nodes currently takes Xms from Y round trips. With improvements to this space, we believe we can reduce this to Ams and B round trips. This is important because IPFS nodes establish these connections each time connecting to a peer for doing a lookup or initiating a bitswap session. The p50 of time to first byte of content download for a cold query will reduce from Cms to Dms."

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 call. I don't have these numbers (yet). See protocol/web3-dev-team#119 for a qualitative analysis.

Copy link

Choose a reason for hiding this comment

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

in case you weren't aware, at least with rust-libp2p we do have a solution for 0-rtt [0]. we send a multistream-select negotiation message with the first packet and receive confirmation with the handshake packet. this can probably be improved by sending a data payload with the multistream-select message, but since that payload wouldn't be replay protected I'm really not that concerned about it.


### 🕸 Unprecedented global connectivity

**What?** A DHT crawl measurements (Nov 22nd 2019) showed that out
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we link to where this data was collected?
Also, can this be an automated process that runs periodically (e.g., weekly, monthly) so we can see improvements to this over time?

Copy link
Member Author

Choose a reason for hiding this comment

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

Unfortunately I don't know the source of these crawl measurements. Maybe @vyzo or @aschmahmann know more?

Also, can this be an automated process that runs periodically (e.g., weekly, monthly) so we can see improvements to this over time?

I would expect there is already such tool. If not, we might be able to extend the periodically run ipfs-crawler project.

👍 on running this periodically to see our improvements over time.

ROADMAP.md Outdated Show resolved Hide resolved
ROADMAP.md Show resolved Hide resolved
ROADMAP.md Show resolved Hide resolved
ROADMAP.md Show resolved Hide resolved
ROADMAP.md Outdated Show resolved Hide resolved
share files with each-other). [This ties into offline and decentralised
networks.](#kix.xlvu7ikvo1jg)

### 🏹 RPC and other common node communication patterns
Copy link
Contributor

Choose a reason for hiding this comment

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

This one seems interesting, particularly from it's ability to unlock others.

I think it could benefit from something like:

This is what a customer (developer) has to do today to satisfy usecase Y.
...List the various steps/commands...

If we do this work, they will instead only need to do:
...List the various steps/commands...

Copy link
Member Author

Choose a reason for hiding this comment

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

For now, I would prefer to keep this section on a high level, especially as each of the detailed steps needed by users today is very implementation specific.

ROADMAP.md Outdated Show resolved Hide resolved

**Links:**

- https://github.com/libp2p/notes/issues/2
Copy link

Choose a reason for hiding this comment

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

Did some experiments with performant authenticated replicated streams this week. Achieving speeds of 220MB/s was fairly easy, but I think this could be pushed even further. Not sure if this is of interest here.

ROADMAP.md Outdated Show resolved Hide resolved
@mxinden
Copy link
Member Author

mxinden commented Jun 29, 2021

486682b reduces the #polite-peering section to a connection status protocol only. I don't think there is much use in combining identify, ping and potentially even multistream select into a single protocol. //CC @marten-seemann

@mxinden mxinden marked this pull request as ready for review July 1, 2021 17:03
Add two metrics - number of dial failures and time to first byte - to
"Reducing the dial fail rate" section.
- Remove "prerequisite"
- Mention nim-libp2p
@mxinden
Copy link
Member Author

mxinden commented Jul 15, 2021

@BigLep given that you are still tracked as "requesting changes", would you mind taking another look?

@mxinden
Copy link
Member Author

mxinden commented Jul 19, 2021

@BigLep given that you are still tracked as "requesting changes", would you mind taking another look?

Friendly ping @BigLep.

@mxinden
Copy link
Member Author

mxinden commented Jul 21, 2021

Thanks everyone for the input. I will merge here.

Note to anyone out there, this is a living document, thus please feel free to suggest additions / post comments / ... going forward.

Looking forward to tackling the tasks ahead of us!

@mxinden
Copy link
Member Author

mxinden commented Jul 21, 2021

"Dismissing" @BigLep request for change, as discussed offline.

@mxinden mxinden dismissed BigLep’s stale review July 21, 2021 11:47

As discussed offline.

@mxinden mxinden merged commit 99a4319 into libp2p:master Jul 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add ROADMAP.md
6 participants