The old polyglot world of large software development teams supported by diverse operational teams no longer works. The current software environment demands teams that are capable of dripping software releases to the public by continuously deploying features.
Modern teams are increasingly eschew normal operations support for DevOps – where the systems maintenance and monitoring is done by the software developers.
These ways of working are only possible where features can be delivered ‘meat to metal’ by the software devs – from human factors and design (usually in the browser) through to the server and load distribution infrastructure – down through persistent storage to the disk and back up to end user.
However the rise of support for source maps in the browser means that ‘compile to js’ languages are becoming viable options. Clojure Script has led the way.
LuvvieScript is an attempt to bring pattern-matching, event-driven, actor-based functional programming to the browser in a strict sub-set of Erlang (but not OTP!).
The browser is intrinsically low concurrency (around 10ish ‘things’ on a normal web page) and needs only primitive restart semantics.
The resulting deployment environment will include an in-page client-side ‘run-time’ and a set of server-side Erlang libraries that will encapsulate the browser-server comms enabling the front and back-end processes to send each other messages transparently (and front-end processes to send each other ones too),
The developer will no longer directly script the Dom – but operate on a client-side model which will be rendered to the Dom. In this world user actions (mouse clicks, key presses, etc, etc) will present to the developer as messages and have to be actively subscribed to – making for a recognizably ‘gen server’ style of client-side programming.