matterandvoid-space / subscriptions

A subscriptions library over a source of data (forked + extracted from re-frame)
Other
50 stars 1 forks source link

Idea: investigate asynchronous subscriptions #6

Open dvingo opened 2 years ago

dvingo commented 2 years ago

The purpose is that you disconnect the computation of the signal graph from the main (UI) thread and thus allow computation to not block user input and to not affect refresh rates of the UI in general.

As cited in the retrospective of the Xerox Star, responsiveness (an element of human perception, not of computer performance) is the most important attribute in user satisfaction of a UI.

https://www.researchgate.net/publication/2953879_The_Xerox_Star_A_Retrospective

In lieu of speed, the designers should have made the user interface more responsive. Designing systems to handle user input more intelligently can make them more responsive without necessarily making them execute functions faster. They can operate asynchronously with respect to user input, making use of background processes, keeping up with important user actions, delaying unimportant tasks (such as refreshing irrelevant areas of the screen) until time permits, and skipping tasks called for by early user actions but rendered moot by later ones. ViewPoint now makes use of background processes to increase its responsiveness.

As soon as you have async support, (and as stated in the quote), you're going to want cancellation support. This heavily hints at having a missionary based implementation which has cancellation as one of its design goals.

dvingo commented 2 years ago

not sure if relevant, but its supports cljs https://github.com/bortexz/graphcom

dvingo commented 2 years ago

also see praxis https://github.com/ribelo/praxis/tree/master/examples/todomvc/src/todomvc

dvingo commented 1 year ago

see also https://github.com/lilactown/flex