I made a proposal for a new devp2p stack. This approach follows the abstraction layers model where each layer of the stack is independent from each other. Each layer provides a transparent input without any specific format. An example of this approach would be the TCP layer. Many applications with different logic like SSH, FTP or TLS are built on top TCP without much friction.
Right now, the devp2p stack provides applications with a fixed message format (code, message). This limits the functionality the protocols can have. This proposal provides a transparent interface for the applications so that they can build any type of communication mechanism they find suitable for each use case. This would make it easy to build new protocols and iterate fast on their design.