VRChat is in an interesting place right now, and the performance and moderation elements are real issues for sure.

I'd love to see a kind of local consensus/approval paired with distributed moderation to tackle the question of whether a user-agent should load/render any given asset.

Any client wanting to introduce a new avatar/shader/other asset to a session should go through a "proposal" stage first where the other peers can briefly inspect the metadata (polycount, moderation signatures, maybe even lightweight code analysis for scripted objects, etc) before signaling whether they intend to render it or not.

This gives participants (or rather, their user-agents) a chance to vote on whether or not an asset fits within their collective performance budgets, or if they trust a script to run without degrading the experience.

Personally, I'm of the opinion that we need a new kind of "browser" entirely; where the modern browser is focused on the traditional client-server document/application delivery and runtime, a "true" metaverse client should focus on p2p real time (or at least synchronous) shared experiences in an extensible compute environment. Not just 3d/VR either, it should be possible to connect to a session that's just a basic text or video chat room, then scale it into a 3d session.

There's also the matter of content hosting and distribution, I'd love to see native integration of IPFS or something like Bittorrent's DHT for p2p content-addressed file sharing. Popular scripts/application components and assets can be shared across the entire network, and peers can share their own personal content (avatars, applications) directly in active sessions.

If you'll indulge me a bit:

Matrix provides an extensible platform with identity and a shared, consistent, timeline of events. (You can also maybe get this with something web3, imagine a per-session blockchain somewhere between SSB and ETH)

With a consensus timeline, you have a shared history, and thus a shared reality.

On that timeline you can use extensible protocols to introduce assets, scripts/apps, and post events/messages.

Scripts all run inside a deterministic, message oriented compute environment, and the state of this environment gets checksummed and updates in lockstep for all peers. A new peer joining a session can either load a full state dump or just replay the event log to catch up.

For ephemeral/real-time data, like player look/point directions or video/voicechat, streams URIs can be posted to the log in a standard format.

A typical 3d interaction would start with two or more users connecting to each other, post messages announcing their preferred avatars, messages introducing an application package that supports 3D positioning and collision resolution, then loading an environment. Popular suites of code and assets can be bundled up and distributed with the browser and on the DHT.

Each user can have a set of public keys that represent moderators they trust, and require that each new asset be signed, or else allow "self-signed" content from other users at various trust levels, or just be open to everything.

I really feel like all the right ideas are floating around to build a truly p2p, personally liberating, extensible engine for synchronous shared experiences. Putting it all together is the hard part.