Dustin Getz 2021 September https://twitter.com/dustingetz
See HN discussion: https://news.ycombinator.com/item?id=28630209 (178 comments)
Let's define "data-sync contagion" as any web code a framework makes you write that isn't a functional expression. E.g. services, connections, sockets, reducers, normalizers, resolvers, etc. This imperative contagion is typically found adjacent to a network, and since it resists composition it tends to spread. Note that client/server/database web apps are characterized by pervasive network, and in fact most web application complexity is spent coordinating data flow between places in your system over network (e.g. client/server data sync).
To date, this coordination boilerplate has been abstraction-resistant. The essence of the problem is: How can you make a simple expression like below compose over network?
(reagent.dom/render
[:table (for [x (query-database ...)]
[:tr (pr-str x)])]
(js/document.getElementById "root"))
At Hyperfiddle, we think we've finally solved this.
Photon is the central piece of this stack. Photon has two big ideas: