Runs everywhere (client and server), is the language picked up by beginners, and is abused to fit every square peg into a round hole.
Runs everywhere (client and server), is the language picked up by beginners, and is abused to fit every square peg into a round hole.
I've asked several of these people to explain the attraction (one of whom had a fascination with the even-worse CoffeeScript) and thus far I have not really come across a satisfactory explanation. To me, JavaScript is still the language you only use when you have to because it's the only runtime the browser vendors will embed.
http://quoteinvestigator.com/2013/02/10/where-money-is/
Javascript is a "workable" or "decent" language, and it happens to run where the users are. This is also a large part of why C++ was a success and C before it.
Dav Glass did some awesome hack day projects in the early days of Node.js demonstrating how this could work for Yahoo mail. Hit your inbox for the first time in a browser session and it'll send back a full HTML page rather than a bunch of JS files and expect the client to render before anything appears. With this you could have less than one second full render times for a complex single page app. Imagine if Gmail did something like this, you wouldn't need to leave a tab open to avoid the 5-10sec it takes from login till inbox shows. Furthermore, you could build this out further where if the "compose page" JavaScript hadn't loaded yet, you could then roundtrip to the server and get the markup rather than waiting on it to parse and execute on a slower machine.
Not saying everyone should do this obviously, but it is a valid use case for JavaScript on the server if done right IMHO.
Whether or not that makes it a solid, durable terminal program is another question, though.
If your goal is to provide a consistent look and user experience across platforms and be easily extendable, what do you choose? Feel free to name one.
You asked for one, here's five:
* GTK+
* wxWidgets
* Swing
* SWT
* Tcl/Tk
You then mentioned "easily extendable". I'm not sure if you'll agree Swing/SWT are easily extendable (I'd argue they can be), but wxWidgets and GTK+ have bindings available in many common scripting languages (heck, even PHP!) which are just as easy to extend as JavaScript is.
Again, I'm not arguing any of these are better suited, just responding to your point that there was no alternative.
Of the 5 alternates you provided, can you name me an app that runs on major platforms that people describe as a good user experience? Not just that they work, but that they serve as good example of how to design a user experience. The only one that I can think of that I use on an everyday basis is the JetBrains apps which are built in java, although what UI implementation they're using I'm unsure. Beyond that, all the good cross platform apps that I can think that aren't using something webkit based (slack/atom/discord/etc) use native OS GUI implementations. I'm sure there are others, but it's hard to completely discredit the browser-as-an-app approach.
From what I gathered from the project, it's aim is to go beyond being just another terminal emulator and provide a certain amount of bells and whistles through its interface. Turns out interface bells and whistles is something that HTML+CSS+Javascript has nailed pretty well while remaining cross platform compatible.
However, the major cross-platform toolkits of wxWidgets, Qt, and GTK+ have run long projects to allow for native interface components on the platforms they support. This is usually something that can be configured at compile time.
VLC is wxWidgets and it offers a consistent user experience across platforms. Chromium is GTK+ and it does so as well. I'm not sure what's trendy in the UX snob circles these days so I don't know if they qualify as "amazing UX" or not, but they're two widely-used, major projects that incorporate standard cross-platform desktop toolkits.
Personally, I've always been partial to Qt, though I can't think of something off the top of my head that uses Qt and has widespread usage across platforms (Qt of course powers the entire KDE suite, but that usually doesn't cross over to Mac or Windows users, and Amarok's glory days are long gone). I guess Clementine uses Qt, and it may be widely used. I used it on both Win and Linux and the UX is identical.
Another very common Qt based app is Skype.
JavaScript is not good. We should be working to get it out of the way, not converting everything in our environments to run on it.