Hey everyone,
I’d like to start a discussion around composability trade-offs across different Layer-2s and execution environments. As more teams build on rollups, app-chains, and alternative VMs, composability is no longer a given, and it feels like we’re still lacking a shared vocabulary to talk about the trade-offs involved.
On paper, many Layer-2s promise seamless interoperability, but in practice things like finality assumptions, sequencing models, and message latency can significantly affect how protocols interact. A design that works well for a single application might introduce friction once you try to compose with others, especially across different execution environments like EVM and Wasm.
From a builder’s perspective, this raises practical questions. How much composability should be assumed versus explicitly engineered? Are there patterns that help reduce coupling between protocols without sacrificing usability? And at what point does chasing universal composability become counterproductive compared to focusing on well-defined integration points?
I’m particularly interested in real experiences from teams that have tried to deploy across multiple Layer-2s or environments. What broke, what scaled better than expected, and what assumptions turned out to be wrong? It would be useful to surface concrete lessons rather than just high-level promises, especially as the ecosystem continues to fragment and specialize.