Why and when to break out of the browser

"A web app can do what a computer from 15 years ago, without a disk can do" Daniel Jalkut
While Daniel Jalkut was sort of kidding when making this statement on "Core Intuition 17", he wasn't really kidding. The fact remains that desktop applications sport a lot more features, both UI, functionality and user friendly vise compared to Web 2.0 applications. But, when does it make sense to move something onto the desktop, and to what desktop?

With the advent of the real iPhone SDK and the AppStore, Apple managed to light a spark in the idea of creating applications once again. It's nothing new, this idea of creating applications instead of webpages, however the distribution model(AppStore) is "new". Suddenly everybody, designers, web-developers, marketing people.. the list goes on.. everybody is making iPhone applications. In most cases they are good apps, however in other cases there seem to be a lack of planning/thought ahead of launching xcode.

Why and when should you consider making your project into an application instead of a web-application? I always ask myself the following questions before making such a decision:
  • Does the application need to access local resources on the users computer?
  • Does the application need to exist outside the web-browser? Why?
  • Does the application rely on server storage completely?
  • Does the functionality ask for a custom UI?
  • What solution handles the users frustration level in the best way?
  • Does the IA need a page-based layout?
  • What's the degree of interaction required?
While contemplating these questions you would probably form an idea as to what is needed for your application to succeed. But, bear in mind that most of the questions above result in solutions that can and will run fine in a browser. Trough RIA tools like Flex and SproutCore, the most demanding UI demands can be met. But, if your application needs to do a lot of local file access, or it needs to exist outside a browser session... Imagine a chat client running only in the browser, it would be no good because you'd go offline when you closed the window.

My advice would be this: Think about it.. are you presenting information that constantly updates, like a news site, why in gods green acres would you do that in an application, it screams web page! Remember that users pick their applications(no matter the platform) with much greater consideration and care than they pick websites to read/use. An application on the computer desktop or on any device needs to satisfy a need or solve a problem, be it something practical or a just game. An application exists forever, because you don't own it like you own your webpage. A webpage can be revoked and it will for all intense and purposes be gone from this world. An application is downloaded and cannot be removed unless the user decides to delete it.
Don't try to emulate a desktop application in a webpage if the application actually needs to exist on the users computer. Try to see if you idea fits into the following boxes, in this order:
  1. Can I solve this using HTML/CSS?
  2. Can I solve this using HTML/CSS and JavaScript
  3. Should I solve this using SproutCore/Flex(or similar)?
  4. Can I solve this without platform specific APIs?
Here is what I would do:
  1. Create a webpage
  2. Create an advanced webpage
  3. Create a RIA application running in the browser
  4. Create a RIA/RAD application running in a cross platform runtime(AIR or Java)
  5. Create a platform application
Now, go do some real work, until next time.. cheerio!

No comments: