The future of web software is HTML over WebSockets
I have thoughts, and I agree but also disagree a bit.<p>We are in the dark-ages with respect to streaming sockets, and I am the architect of one of the worlds largest WebSocket and streaming services.<p>First off, unseating the operational benefits provided by request response is a huge challenge. It&#x27;s possible, and I&#x27;ve done it. One of these days, my co-authors and I will present an OSDI paper with the broad strokes. It&#x27;s very easy to list a lot of the challenges with scaling WebSocket, but each of them can be solved.<p>I believe we will have a nicer world with QUIC --&gt; Http&#x2F;3 and the up and coming WebTransport discussion. SADLY, that will result in a decade long &quot;caniuse&quot; issue, so we should expect to see WebTransport polyfills to arrive...<p>Second, HTML over WebSockets is nice, but what is better is reactive data binding over the socket. Let the browser maintain a DOM tree that templates over a JSON object, then reactive-ly update and it&#x27;s an amazing experience. You have minimal data transfer, and minimal rendering updates. There is a great deal of power in having your UI be a stateless function over a giant JSON object.<p>Finally, the big challenge is dealing with the server state in a meaningful way. The exceptionally nice property of using request response for everything is the shared-nothing stateless nature of the web server. It&#x27;s exceptionally forgiving in both operational and developer issues.<p>It&#x27;s very easy to fuck up the implicit state tied to the connection, and this requires discipline to get right. It&#x27;s very easy to ship unreliable software that then has issues based on the connection.<p>Now, I&#x27;m a HUGE believer in that we need to use streams for everything, but it requires a mind shift. The key thing to tackle is dealing with the server side state, and this is where I have my shitty idea of a programming language for board games. In essence, I am building a DIY database such that people connect directly to the database and get that sweet giant JSON object along with a stream of updates.<p>The DIY part is related to the fact that I invented a programming language to transact on the JSON object such that you get all the benefits of durability with the mental model of working within a single machine.<p><a href="http:&#x2F;&#x2F;www.adama-lang.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.adama-lang.org&#x2F;</a>