What is the distinction between libp2p and devp2p? Do they refer to the same thing? How are they related to RLPx?
In the libp2p whitepaper, dated Nov 2014, they appear to be the same thing:
libp2p (aka ÐΞVp2p) aims to provide a lightweight abstraction layer that provides these low-level algorithms, protocols and services in a transparent framework without predetermining the eventual transmission-use-cases of the protocols.
In the Devcon 2 presentation "libp2p ❤ devp2p":
libp2p is the modular secure networking suite that powers IPFS....
and
devp2p is the secure networking suite that powers Ethereum....
I'm guessing the second link is more up-to-date and that the whole thing is evolving as I type. Perhaps the IPFS libp2p was born out of the Ethereum one linked above (or vice versa). Can anyone give summaries of libp2p and devp2p, including where they came from, what they are used for and what the main differences are, along with links to their official specifications?
Finally, how does RLPx fit in with devp2p? The docs describe it like this...
RLPx is a cryptographic peer-to-peer network and protocol suite which provides a general-purpose transport and interface for applications to communicate via a p2p network. RLPx is designed to meet the requirements of decentralized applications and is used by Ethereum.
... which sounds like what I had imagined devp2p to be doing. Is there a high level description of what libp2p, devp2p and RLPx are and how they fit together?
Other links:
https://ethereum.gitbooks.io/frontier-guide/content/devp2p.html
https://github.com/libp2p/libp2p
https://github.com/ethereum/devp2p
RLP versions (Jul 16) https://ethereum.stackexchange.com/a/7221/820
Ethereum protocols mapped to OSI https://ethereum.stackexchange.com/a/9923/820
What underlying protocols are used to send packets between nodes, and how are messages encrypted?