HelenOS GUI – experimental demonstration (2012)
youtube.com
youtube.com
I think this is basically ChromeOS, right? Using things like the HTML DOM and CSS for design, and then some supporting application code. One negative for me in a world like this is the limitation of using JavaScript for development, but webassembly is going to change this, we'll be able to use pretty much any language inside the browser soon.
There are a lot of advantages to this model. It would be a unified Web and OS experience. And the other thing would be a built in sandbox. Combine this with Docker, and you can deliver nicely packaged applications with all their resources. I've been thinking this would be an awesome direction for Redox and have thought of getting involved there.
Anyway, I'd love to hear about a people's experiences with ChromeOS, as I think that's the closest thing to this concept right now.
Edit: I think people are misunderstanding my question. What I'm suggesting is that Web technologies should be used to render the desktop. It should function 100% offline (not require a network connection to run). This would unify UI development across the web and the desktop, with WebAssembly being the application build target.
If you ask me: No. They should be 0% web based. Browsers are the worst platform for GUIs that has ever been devised. You will probably even get better OS integration if you write your GUI in Squeak or Oberon.
Quick checklist for high quality GUI applications:
[ ] Does your application allow arbitrary shortcut keys with and without command keys that are user definable?
[ ] Does your application use the correct OS-provided system paths for user documents, preferences, temporary files, etc.?
[ ] Does your application have the look and feel of other applications on the OS and does adhere to the OS developers user interface guidelines?
[ ] Does your application work exactly the same on every platform, except for platform differences like command keys and menu positions that are expected and desirable?
[ ] Does your application provide instant user feedback when the user operates controls, click with the mouse, etc.?
[ ] Does your application allow drag & drop to and from the desktop on OSs that support it?
[ ] Does your application work offline as well as online and allow the user to export and backup all data stored by the application to arbitrary locations?
[ ] Does your application work gracefully with nonstandard or slightly outdated filesystems?
[ ] Does your application respect file permissions and other access control features of all platforms?
[ ] Does your application use controls that are appropriate for the data and do these work seamlessly with huge amounts of data such as lists of millions of entries?
[ ] Does your application keep confidential user data local or does it protect this data with strong encryption and user-supplied keys if it stores data online?
[ ] Does your application have unlimited undo?
[ ] Does your application estimate the time of long operations correctly and always displays a time estimate and progress without blocking the GUI when an operation takes longer than a few seconds?
[ ] Does your application highlight user selections and allow copy & paste to other applications running on the user's machine?
[ ] Does your application use the standard system fonts or does it have a good justification for not using them?
[ ] Does your application otherwise integrate well into the OS environment (e.g. desktop), for example by updating a tray icon, providing OS level notifications, linking up with OS level backup and indexing services?
If the answer is NO to any of these questions, then your application sucks. I might have forgotten some, tough.
It's important to remember that browsers were specifically designed to render a language for sharing and linking documents. Then they were extended to style and script them using languages with their own built-in assumptions and needs. That was then extended to do stateful, dynamic applications over a stack and protocol designed for stateless, static documents. The result is that it will never be as flexible or effecient as a low-level graphics stack. It will often be less efficient or secure than a built-in GUI with simple elements. Just look at uTorrent app for example of efficiencies one can gain. Can't happen with the browser because you still get the bloat that comes with the browser.
This sounds horribly inefficient and slow, even to the point of still being noticeable on modern hardware (especially low-end consumer hw).