For those of you not familiar to what is Phoenix LiveView, done in Elixir, this is a good video to know more: https://www.youtube.com/watch?v=8xJzHq8ru0M
There’s even a port to Clojure: https://github.com/prepor/liveview-clj
The basic idea is to remove the complexity of the JS ecosystem, by building your rich interactive web applications not in an Elixir.js but on the backend and very smartly communicate the changes in the data model and (very rarely) the components views over websockets. At first I thought this is naive and dismissed it, then I quickly realised it wasn’t and that is something that has a lot of advantages: no more overhead with the js ecosystem complexity, but also no more JWT tokens, no more translation files sent to the frontend , no more async/await/promises/go blocks… and so on.
We could of course reproduce the entire things using an atom on the backend, which holds the states for all our clients (even cluster it so we can handle a massive number of clients) but we might not get the same level or performance and most important, resilience that the BEAM (ErlangVM) offers for free.
So then, would it be a good idea for our community to get creative and respond with something that could be even better? For instance I like Hiccup instead of html as text, as well as sometimes js is necessary so maybe we could also integrate with the npm a la shadow-cljs if needed. We have been using websockets to push code on the frontend for years (fig wheel/shadow-cljs) so could we do it at runtime in production?
I don’t know , the idea is to brainstorm alternatives that could make the entire process of writing web apps better going back to the first principle that browsers paint html/css and don’t care where or by whom is generated.