I work on the referenced Braid project (https://braid.org), and the author is right on— HTTP needs to evolve from a state transfer protocol to a state synchronization protocol.
What he doesn't seem to realize is (a) how doable this is, and (b) how beneficial it is once you solve it.
First, the Braid extensions to HTTP [1] achieve this already! They transform HTTP from state transfer to state synchronization with four simple, backwards-compatible extensions to HTTP, which work in today's browsers and servers, with a simple polyfill library [2].
You can use this today, with or without any CRDT or OT algorithms. In fact, 99% of apps don't need a fancy CRDT — they just need the subscriptions feature. This is really cool: instead of GET responding just once, a Braid-enhanced GET will keep the response open, and send you new updates each time the resource changes, until you're done with it.
This gives you realtime synchronized HTTP without a Websocket. No CRDT or OT needed.
You only need a CRDT or OT algorithm if multiple writers mutate the same state, and your app needs to guarantee perfect consistency. And if this is needed—no problem! We've got libraries for that that use the other 3 independent Braid extensions — essentially adding a few more headers to carry over the CRDT/OT metadata. They work with any CRDT or OT.
Second, I don't think anyone yet realizes how big of a deal this is, so let me explain. The lack of realtime synchronization in today's HTTP is what drives developers to move their state synchronization traffic to a websocket, with some random pub/sub protocol that meets the needs of their app — but is totally incompatible with other developers, other websites, and other tools. This means that every website uses standard HTTP to serve its pages, but has a non-standard protocol for its internal state. As a result, websites openly link to each other's pages, on the open web — but the internal state of websites has become a walled garden. This basic limitation in the architecture of HTTP has led to the centralization of data silos in websites. It's simply too difficult for a peer-to-peer community of web developers to build apps that re-use each others' internal state, in the same way that they can link to each other's pages, because they lack the infrastructure.
We've been building the tools for this new style of peer-to-peer synchronous web of state. I just presented on it a few weeks back here: https://braid.org/meeting-107
Cheers to the author for correctly identifying this problem. And onward to the glorious future of the synchronous web of state!
[1] https://datatracker.ietf.org/doc/html/draft-toomim-httpbis-b...
[2] https://github.com/braid-org/braid-http?tab=readme-ov-file
You've sold me. Braid is now on my list to experiment with.
Excellent. Don't hesitate to reach out with comments or questions. I love talking about this stuff with folks.
Mailing list: https://groups.google.com/forum/#!forum/braid-http
Discord: https://discord.gg/nvPQN7FgDX
My email: toomim@gmail.com
And you can show up to our open biweekly meetings on zoom: https://braid.org