So I spent most of last week in Mountain View for the 41st Internet Identity Workshop. While I was there, I was advocating for something that I've been calling Server User-Agents, and I think they're a fundamental missing piece of architecture
This week I spent time putting my notes and conversations together and wrote a deep article about the concept, although it is still very early and intentionally a loose sort of spec. Its more a call for participation.
Notes from the 41st IIW
I'm like a third of the way through this and loving it! Fantastically written and interesting.
First reaction: Yes!
Second reaction: Wouldn't we be better off with a P2P architecture, rather than client-server? Put differently, isn't a user-respecting server a well-meant step into a fundamentally wrong direction? The very terms "client" and "server" imply an asymmetry that's perhaps not good to have as a default.
@Daniel Buckmaster thanks! Iād love to hear what you think once you finish.
Konrad Hinsen āAim high but make sure you shootā. It is a peer to peer architecture. Thatās what itās enabling. But people have many devices, and thereās thorny realities about network traffic. I vehemently disagree it is in the āwrong directionā. Unless you plan to go back and re-invent everything from the IP layer up. I believe Server User-Agents can restore the missing sovereignty now.
There is nothing to say that a single device or piece of software could not fill the responsibilities and definitions of both client and server, but reality is often more complex. People own multiple devices. Personal devices are not always on or always connected. Some devices like a watch are incredibly low power, low bandwidth. Some situations need high compute, high bandwidth, high storage etc. I think it would be oversimplifying to try and remove the terms client and server from our vocabulary. The shift is that we have always assumed users only have clients, and servers are in someone else's control. I'm agreeing with you that a single end user, should have sovereignty over a stack that can combine roles, but I do not agree that it would be appropriate to flatten everything (oversimplification) or to remove the terms from our vocabulary (starting over on the internet)
@When Leggett I agree that there are situations where you want a device to be only client or only server. So maybe our only difference is in jargon. I prefer to start from P2P as the norm and single-role devices as exceptions. But technically, that doesn't make much of a difference.
I think that there should be a goal of being able to write our software in a local-first and peer-to-peer orientation. I think we need infrastructure in server-land to accomplish this in a general way
I think that it will sometimes be necessary for your SUA to facilitate that role (even as a stun/turn server), but there would also be scenarios like p2p messaging where the peers relationship might have to fall back to an SUA if the client is disconnected, for example
It'll take me a while to have a formed opinion on this. Thanks for writing this, I find it really stimulating!
Gut reaction, since I'm already familiar, is that elements of this remind me of what Sandstorm was trying to do with its fine grained objects and capabilities. It is one step away from just "self host apps" and towards something more Solid-like, I think. sandstorm.org/how-it-works#grains
š How Sandstorm Works: Containerize data, not services
Take control of your web by running your own personal cloud server with Sandstorm.
Yeah, Sandstorm is cool. And definitely has a lot of value to learn from.
@Daniel Buckmaster Sandstom has been on my radar for a while, so I wonder why talk about it in past tense. Has the project been abandoned?
No, but the contributor base is sadly very small, even if tenacious. I have high hopes for an upcoming rewrite to increase maintainability, but it's a lot of work for a small volunteer group. I don't have the time or expertise to contribute to the core. (Sandstorm might be worthy of a separate discussion thread! Which I may start sometime when I organize some thoughts.)