But there are a lot of applications that benefit from a graphical interface and when it comes to the web, it’s pretty much expected.
In the early days the web was one of the easiest ways to write a graphical application. It didn’t take long to learn enough HTML to create an interface out of standard components and format it on the screen. However over the years this has become extremely difficult, and these interfaces rarely work consistently across various operating systems and web browsers.
For JS/OS I want a way to write graphical applications that is as low-friction as possible. I don’t want to spend time thinking about layout and calculating the position of things and having miles of code to make it work on various devices. I want it to work like the web, to flow like text and just be simple even if that means giving-up some control.
The closest thing I can find to what I have in mind is TK’s Geometry Managers. The idea is fairly simple: you pick a basic format (like a grid), add the controls you need (input boxes, buttons, etc.) and let the manager lay them out on the screen as it sees fit. The result is a GUI with virtually no cognitive overhead for the programmer. Done well, applications created this way have a consistent look-and-feel and can be rendered more dynamically allowing them to work similarly across multiple display sizes, user agents, etc.
The opposition to this approach usually comes in the form of developers wanting more control over the way their application looks, maybe to set it apart from other applications or maybe because they feel they know better how things should be done. I would counter this by saying that such differentiation isn’t beneficial to the person using the software and that consistency in the rules and design of the interface are more important that each developer choosing their own design rules.
Of course JS/OS applications are just HTML and JavaScript, so nothing is preventing someone from doing it however they want, but I want to include a optional “GUI toolkit” for people who want to streamline the development process and provide users with a comfortable, consistent experience.