tl;dr - web-based, distributed, accessible applications - we have the 
technology 

I found the recent discussion of the LibreFaso project quite interesting and 
wish them well in their efforts.  The topic also brought to mind some thoughts 
I've been having about web-based, distributed, accessible applications.  Rather 
than hijack the LibreFaso thread, however, I've started this one; please 
respond as appropriate...

If I were trying to get a bunch of students involved in creating accessible 
applications for personal computers, I'd probably choose Python as the 
implementation language.  To be honest, it's not my favorite programming 
language.  For starters, it's object-oriented, simplistic, 
whitespace-sensitive, and has poor support for concurrency and distribution.  
That said, it was designed to be easy to learn and has immense popularity.  So, 
it wins, hands down...

However, this note has to do with a rather different objective: creating a 
platform for web-based, distributed, accessible applications.  These might 
include chat platforms, educational software, forums, multiplayer games, and 
combinations thereof.  So, I'd want the underlying technology to be performant, 
robust, and scalable.  It should also have good support for globally 
distributed and highly interactive web-based applications.

These sub-goals mesh well with the major goal of making the apps available to a 
worldwide user base which will probably be using cell phones and/or a variety 
of personal computers.  All of these devices support web technologies by 
default, so no local installation or maintenance will be needed.  This allows a 
globally-distributed user and developer base, with coordinated development, 
easy updates, etc.

In any event, I only know of one technology stack that checks all of these 
boxes.  It isn't a well-known stack, though it is gaining popularity as 
companies realize the need to transition from Node, Rails, and such.  This 
stack starts with the Erlang VM, which supports a substantial fraction of the 
world's long-distance telephone routing network.  With this background, the 
issues of concurrency, distribution, and robustness are clearly under control.

The next layer is Elixir, an Actor-based, dynamic, functional programming 
language with Ruby-like syntax, Lisp-level macros, a strong and active tool 
base, and a variety of convenient features such as pipelines and plugs.  
Finally, we come to the Phoenix and LiveView, a pair of web support 
technologies which eliminate almost all JavaScript coding, while providing 
great interactivity and performance.

Here are some links, for the curious...

https://elixir-lang.org/
https://elixirforum.com/
https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
https://www.phoenixframework.org/

https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)
https://en.wikipedia.org/wiki/Elixir_(programming_language)
https://en.wikipedia.org/wiki/Erlang_(programming_language)
https://en.wikipedia.org/wiki/Open_Telecom_Platform

- Rich Morin




Reply via email to