Tuesday, December 27, 2005

Choosing Platforms

I just listened to a podcast on Rebel Platforms by Richard Monson-Haefel from IT Conversations

I've also been reading The Innovator's Dilemma and The Innovator's Solution by Clayton Christensen. (And his podcast Capturing the Upside)

It got me thinking about what I'd choose for platforms for new projects.

For a desktop application, I'd be tempted to go with Java + Eclipse + SWT + RCP (Rich Client Platform). I haven't actually written an application on this platform, but I've done a lot of reading and some playing around and it seems like a pretty powerful combination. But I still have some concerns with the ease of installing Java based applications. Maybe there are solutions, but I'd hate to require users to install a Java runtime.

Another portable approach would be wxWidgets with one of a variety of languages e.g. C++, Python, Ruby, Tcl. Again, I'd prefer to package it so the user didn't have to install any support for the language.

Of course, for a lot of things, I'd still lean towards using my own Suneido application platform :-)

The other big area is web applications. The "establishment" approach would be to use J2EE, but that seems like an awfully heavy-weight solution. Tomcat + Spring + Hibernate would be a more light-weight option. But if I was going to write a web application, I'd want to use something like Ajax to provide a richer user interface. Ideally, I'd want something with Ajax support like Ruby on Rails or maybe the Zimbra toolkit (or a Flash based alternative like OpenLazlo). Again, I haven't actually developed any applcations with these platforms so it's hard to say what's best. I have played around with Rails and it seems good, and it's getting a lot of positive press these days. I don't think it hurts that Rails came from 37signals, the developers of Basecamp and Backpack. I really like a lot of their ideas.