When to choose between web interface and native GUI?

I'm increasingly of the opinion that we should use web-based, javascript (or flex) interfaces as the default. It means lots less code in the application image, plus it allows one code base that does something well, over several that may, er, do it less well.

If you build to a web interface to start with, you never find yourself needing a separate project to build a web interface.

With modern browsers, javascript and ajax, and javascript libraries, you can build an extremely rich interface that can easily be changed.


I think this is the wrong question. What you need to do is analyze the differences between the platforms and how they impact your organization. To give you a real world example.

I worked for a small company which had only ever built Web based applications. One of the apps was not succesful, in part because we had a lot of dialup users, and needed offline support.

The company went ahead and developed a .net client application, and they got a rude awakening. The company was not prepared for the complexity of deploying to any number of client configurations. We got bit by Novell Networks for example. They were not prepared for the increase cost of supporting a client application. (And yes the development had cautioned and tried to warn them what this meant).

So not only do you need to ask various questions but you need to evaluate them within the context of the organization producing the software.

Things to ask include:

  1. First and formost is can your app run as a web app? Some apps just arent feasible. if you need access to low level resources, your not going have many options.
  2. Can you afford the maintance costs of client software? If this is a distributed app, what happens when you update the server but the clients arent updated.
  3. Can you support the client?
  4. What experience does the team building the software? This is huge IMHO. No matter how good a team is at building web applications, they will make mistakes doing client apps that an experinced client developer wouldn't.

There is no general answer to that question. That depends on some factors:

  • Your target group - Is it wide spread or pooled?
  • Portability - On which platforms do your users work?
  • Performance - Is much of it needed? If yes, a desktop application would be better. I can't imagine a video editing software running in a browser. Maybe in 10 years :)
  • and more that have to be figured out individually

But the trend clearly goes to web-based applications. You can reach quite a bunch of people with them.


Some points for a web interface:

  • When the program needs to be administered from another computer on a network
  • When more rapid development speed is needed (Generally faster to write html/javascript than Qt/Gtk etc)
  • To keep the program as cross platform compatible as possible