Thursday, October 17, 2013

// // 2 comments

Choosing the right desktop development technology

I've recently had a requirement to build out a desktop offline application that mostly does data collection.

Here are the requirements technical and otherwise
  • Must work offline
  • Will be mostly installed on Windows laptops (assuming Windows 7+)
    • Nice to have the ability to run it on Mac as well
  • Simply data entry application
  • Should be easy to maintain by a group of unknown future developers. 
    • This is not for a company, but a volunteer based organization
As I started evaluating different technologies, I went from

Native Technologies

1. Windows Forms Application - Rejected because styling is difficult 
2. Silverlight Out of browser application - Rejected because silverlight is rapidly becoming obsolete
3. WPF application - Not bad. This is, after all, the recommended technology by Microsoft. But I balk at this choice simply because it unnecessarily complicates development (one has to learn XAML). Also because after having done years of XAML development, I realized that even a gap of a few months had wiped out my expertise.

Local Web Server 

Having rejected most of Microsoft's recommend technologies, I decided to explore some form of HTML 5/ Javascript backed application. 

The simplest option is to, of course, run some sort of lightweight web server on the user's machine( Maybe IIS express) and use ASP.Net MVC. But remember that I'm going for a simple install, and running an IIS express is not part of the plan. There are far too many things that can go wrong with an IIS express instance like port configuration, administrator privileges etc.

Shell Application

Since I'd been working lately with phonegap, it occurred to me that something of that sort should work well. After all, I don't need http capabilities - simply the ability to use HTML 5 / CSS and javascript as my front end programming stack.

The most promising option in this direction seemed to be App.js - a framework designed specifically for this purpose. A quick review of technology shows that this depends on node.js (not something i want to throw into the mix), but more importantly that this open source project has not had any check-ins for a month and a long list of bug. Won't do.

Other options seem to be


  • TideSDK - Looks a little too heavy for the purposes i have in mind.
  • node-webkit - backed by intel.
  • Brackets Shell

Clint Berry has a good run down on these options on his blog - http://clintberry.com/2013/html5-apps-desktop-2013/

As for me - I have a long night ahead evaluating these option. If node-webkit works, I'm all for it.

2 comments:

  1. Nice! Looks like you are exploring a vibrant range of frameworks. Stay away from WPF, as the client would require .Net framework and YES - XAML is a time kill for development. Hail html 5 & JS!

    Two weeks back I think, your site was on blogspot and now a dedicated url, it makes quite a difference. Keep it rolling!!

    ReplyDelete
  2. Thanks Dee - i'm going to follow this one up with my final choice - which is bare-bones ASP.Net MVC + IIS express, but mostly depending upon HTML 5 + Javascript. With windows 8, it should become even easier. But for my money, ANY UX work needs to be on HTML + js. WPF and XAML are mostly dead.

    ReplyDelete