Does it run on BeamJS? :D
So the key goal is low-impedance - the developer has a mental model where this is say a server-side process and the business rule is 'send the user a message' so they write code like:
call_user("gordon@vixo.com", modal, {"Did you brush your teeth?", {"yes", "no"}})
and the 'modal' process in my browser gets some message like: {msg, {"Did you brush your teeth?", {"yes", "no"})
It pops a yes/no dialog box and send "yes" back to the calling process on the server.Supervision and restart are not only useful if a application is long running, if you implement a game, a user might to spend many hours on a page. They might leave it open in a different tab for a long time and expect it to work when they get back.
I know more about CSP and not Actors but there you use many of the same tricks (I think). And I really don't see why one would constrain the browser side.
See for example this project: http://www.infoq.com/presentations/pedestal-clojure
The mission is to be a dom-scripting language http://luvv.ie/mission.html
I didn't just pluck 9 out of the air, it comes from thinking about how I would structure applications that I have written.
Take for instance our online spreadsheet - very complex GUI - 2,500 divs - but when you ask what are is the concurrency - what are the discrete functional data models that I need to manipulate - the number is low:
* a menu bar
* a toolbar
* a tabs bar
* a grid
* the cell input overlay
* 5 or 6 dialog boxes
The grid is endless scrolling set of spreadsheet cells and behind the scenes it is pre-built panels of 20x20 which are 'next-but-one' assembled on the fly for smooth scrolling.Even if you break the grid out for max concurrency - you only add another 8 or 9 concurrent data models.
9 - 29 Web Worker processes for a page sounds liveable with.
With regard to restart and supervision I really do mean the Operational Supervision that Erlang/OTP supervision does in terms of handling errors. I don't see how the sophisticated restart and fail-over strategies that you might have in a 50-node server cluster will ever work. The user is the consumer, and they are in front of their device, failing over to another browser is not an option. Page refresh covers most of what you might ever need.
I don't know what CSP is, so I can't really comment. I also don't really have any knowledge or desire to support gaming.