The Web After Tomorrow

tags
Web Development Nikita Tonsky

Dreams of a reactive, local-first, graph-based Web app architecture

Notes

JS is good at doing almost anything we traditionally expect from a server.

NOTER_PAGE: (1 . 0.7679409792085848)

Today clients are thick again, but we keep putting server in the middle. Just out of habit.

NOTER_PAGE: (2 . 0.30784708249496984)

Every Facebook page is stale and inconsistent almost all the time

NOTER_PAGE: (3 . 0.6331321260898726)

Despite the buzz, the real-time web has not landed yet.

NOTER_PAGE: (3 . 0.7142857142857143)

we want to connect data source and a client as tight as possible

NOTER_PAGE: (4 . 0.45942320590207913)

Consistent view of the data.

NOTER_PAGE: (4 . 0.5573440643863179)

Always fresh data.

NOTER_PAGE: (4 . 0.7565392354124748)

I should be able to do local modifications, then merge changes when I get back online.

NOTER_PAGE: (5 . 0.2407780013413816)

The Quest for the Holy Grail of the Web

NOTER_PAGE: (5 . 0.8229376257545271)

Fetch is about trying to get the data given the query. Push is about finding the affected subscriptions given the changed data.

NOTER_PAGE: (7 . 0.08383635144198524)

What we need here is probably a new query language, something like reversible SQL.

NOTER_PAGE: (7 . 0.5660630449362843)

the outcome wouldn’t be that great without consistency. A single DELETE lost from changefeed during reconnect (with no integrity validation) might lead to the catastrophic UI glitches.

NOTER_PAGE: (8 . 0.4158283031522468)

territory of distributed databases here, where browser plays the role of one of the peers

NOTER_PAGE: (8 . 0.5217974513749162)

I personally see a great opportunity in using Clojure, Datomic and DataScript to build such a system:

NOTER_PAGE: (10 . 0.35412474849094566)