Browser-based application or stand-alone GUI app? Browser-based application or stand-alone GUI app? python python

Browser-based application or stand-alone GUI app?


Let's pretend for a moment that the development/deployment/maintenance effort/cost is equal and we look at it from the application user's perspective:

Which UI is the user going to find more useful?

in terms of

  • Ease of use
  • Responsiveness
  • Familiar navigation/usage patterns
  • Most like other tools/applications in use on the platform (ie, native)

I understand that "useful" is subjective. I personally would never use (as a user, not developer) a web interface again if I could get away with it. I hate them.

There are some applications that just don't make sense to develop as browser based apps.

From a development perspective

  • No two browsers available today render exactly the same.
  • Even with Ajax, javascript and dynamic, responsive interfaces are non-trivial to implement/debug.

There are many, many standalone GUI applications that are just terrible, no argument. Development/deployment and maintenance for a multi-platform GUI is non-trivial.

Developing good user-interfaces is hard, period.

The reality is that I've made my living over the last 10 years developing mostly web based applications, because they're faster to develop, easier to deploy and provide enough utility that people will use them if they have to.

I don't believe that most users would use a web interface if given an alternative.

IMNSHO


The obvious advantages to browser-based:

  • you can present the same UI regardless of platform
  • you can upgrade the application easily, and all users have the same version of the app running
  • you know the environment that your application will be running in (the server hardware/OS) which makes for easier testing and support compared to the multitude of operating system/hardware configurations that a GUI app will be installed on.

And for GUI based:

  • some applications (e.g.: image editing) arguably work better in a native GUI application
  • doesn't require network access

Also see my comments on this question:

Cross-platform GUIs are an age-old problem. Qt, GTK, wxWindows, Java AWT, Java Swing, XUL -- they all suffer from the same problem: the resulting GUI doesn't look native on every platform. Worse still, every platform has a slightly different look and feel, so even if you were somehow able to get a toolkit that looked native on every platform, you'd have to somehow code your app to feel native on each platform.

It comes down to a decision: do you want to minimise development effort and have a GUI that doesn't look and feel quite right on each platform, or do you want to maximise the user experience? If you choose the second option, you'll need to develop a common backend and a custom UI for each platform. [edit: or use a web application.]

Another thought I just had: you also need to consider the kind of data that your application manipulates and where it is stored, and how the users will feel about that. People are obviously okay having their facebook profile data stored on a webserver, but they might feel differently if you're writing a finance application like MYOB and you want to store all their personal financial details on your server. You might be able to get that to work, but it would require a lot of effort to implement the required security and to assure the userbase that their data is safe. In that situation you might decide that the overall effort is lower if you go with a native GUI app.


When it comes to simple data entry using user-entry forms, I'd argue that using a browser-based solution would probably be easier and faster to develop.

Unless your core feature is the interface itself ("If it's a core business function -- do it yourself, no matter what." , see In Defense of Not-Invented-Here Syndrome from Joel on Software), I feel that the browser will be able to perform the form rendering and handling better than having to develop a GUI from scratch. Also, not to mention the it would take a much longer time to code a GUI as opposed to generating HTML forms and processing them after they are POSTed by the browser.

What I found in the past was that I was asked by a friend to write an application to enter results from a survey. At first, I was writing a Java applet to display the survey itself with all the radio boxes, when it hit me that I would be better off writing a simple HTTP server which would generate the forms and process them.

What it really comes down is to whether you are either developing:

  1. the user interface
  2. data-entry application

If you are making a data-entry application, then leave the user interface to the browser, and focus on your core functionality.