@fryorcraken, apologies for the many edits on this reply, but don’t want to overcomplicate the picture.
“Providing” connections does not have to be the only requirement for running relay
. Nodes can be a healthy part of the relay mesh even if they initiate all their connections themselves. In other words, browser clients can definitely run relay
as long as they’re able to establish enough connections for a healthy mesh (thereby they’ll still be contributing connections/routing paths to the network). For this they’ll likely need some discovery mechanism, such as the proposed general peer exchange.
Being well-connected is more difficult if you cannot accept incoming connections or aren’t discoverable, but is not impossible. That said, our total scalability would indeed depend on nodes being discoverable and accepting incoming connections, as these browser nodes would need enough discovered nodes to configure a healthy mesh.