Web technologies on GUI apps

guiqtweb

I developed many GUI applications for the Windows platform during my early professional career, and saw several GUI frameworks come, have whole magazines devoted to them, and then fade away. MFC is iconic.

Tasked with writing yet another GUI application, I starter researching cross-platform frameworks like Qt and WxWindows. I found the same steep learning curves I knew from before, and tooling doesn't help much in building a functional and elegant user interface because its clumsy and complicated.

But people are building beautiful and functional UIs on the Web all the time (look at this site!). The standards, the libraries, and the tools are certainly there.

My thought and my question: Why not write a GUI in which most of the UI is handled by an embedded browser? I already know that the Qt widgets support a large part of CSS and JavaScript, and programmers with good knowledge about web development are relatively easy to find, …, so…

Have you done something like that before? What's your experience/advise?

A browser widget will likely support a subset of the functionality of mainstream browsers, but enough to produce a rich user interface using web technologies. There's the added advantage of the enormous simplifications possible when the web-stuff doesn't have to talk to a server to service UI requests.

My idea is not to embed a full-blown browser (yikes!). It is to enable the use of web technologies in GUI programming.

[Edit]

I haven't accepted an answer because the ones so far are suggestions about doing something else, and not about previous experience doing what I suggest. They're not even opinions or speculations about the pitfalls or benefits of doing it the suggested way, which is what I would expect in the unlikeliness that I'd be breaking new ground by using a browser widget to provide part of a GUIs interface. Think HTML, CSS, and limited JavaScript, with no Internet, no .Net or Java (or Air or Flex/Flash), no relational database; just executables, libraries, and templates that can be installed by copying them, and persistence to the user's home directory using the file system.

Some Addtional Related Questions

These are drawn from the answers so far:

  1. User experience: Isn't the WebApp that runs StackExchange rich and intuitive enough?
  2. User expectations: Hasn't the Web, and aren't portable gadgets (smartphones and tablets) moving the user experience away from the traditional GUI?
  3. Could it be that there apps that must be GUI but benefit from being webified while other's don't?

Best Answer

I was actually once involved in working on a web app, which we eventually almost ended up marketing as a standard "desktop application". For some reason, Marketing got it into their heads that one of our major clients wanted the product to "appear to be a GUI application", so we created a little Windows app that just hosts the IE ActiveX control, and points to our web app (hiding the fact that it's actually a browser). So effectively, to an untrained eye it looked like the product was a standard GUI app.

Granted, this isn't exactly what you're asking (we were still pointing at a web app, and not hosting the whole thing locally) - but it's close enough. It would have been trivial - minus some of the remote web services it used - to set this up to just have the whole thing sitting on the local machine.

Here was the biggest problem though: look and feel. Especially feel.

People expect certain behaviours from rich GUI apps (drag and drop, native-feeling windows and dialogs, etc). It is extremely hard to get a genuinely native look and feel from a web frontend. There is simply a different user flow in what is expected when you open up a web app in a browser (eg. Gmail), as opposed to when you use a rich GUI application (eg. Outlook). In my experience, trying to equate the two is asking for trouble. If you put out a "GUI app" which acts like a web app, you're likely to be flooded with usability and LAF complaints.

TL;DR - Web apps and GUI apps have different looks and feels, and a different user culture to some extent. While it's technically possible to do something like this, from my experience, I wouldn't go there (again). At best you're likely to end up with a horrendous mix of client-side scripting that will be more difficult to learn, use and maintain than doing the whole thing as a normal GUI app in the first place. And people WILL complain about things "not quite feeling right" for a native GUI app. It's tempting to think that they won't - but they will.

Related Topic