A problem has been bugging my mind since the ever beginning.
What should be the role of relays?
If we treat it as a node of a distributed system, such as a Cassandra node, then it should not differentiate and clients just treat it as an opaque network & storage layer. All the replaceable events & consistency discussions come from this angle.
If we treat it as a discord server or a Slack workspace, then each relay differentiates in content and possibly in functionality.
Right now, most developers seem to want relays to be both. But these 2 have very different design trade offs . Wanting to be both might just end up being good at none.
Or, maybe some developers haven’t thought of it consciously.
Fruit for thought: should relays be aware of each other? Should the awareness be mandatory like a distributed system or just a nice to have?
For example, a DM client has very different needs for relays from a social client.