Cross-platform conundrum

A conundrum I’m having at the moment is that I have a vaporware home-time project which I’ve done a fair bit of design and research for. It’s really getting to the time that I should be writing some code, but I have a conundrum.

You see, this app has a very niche target user base of my (non-techy) friends. That means I need to write something which can be used on Windows, Mac OS X and Linux, whilst writing close to zero platform code (particularly for Windows, done that – not going back), and with minimal effort wasted (remember, home-time project).

First obvious choice is a web app, however after writing Blunderground I have some experience using JavaScript to develop an application and it’s not for meĀ (give me a compiled language any day of the week). Plus, I’d need some server-side pieces and then a server to host them on. I don’t have, nor do I want, a server to administrate.

Next we have Mono. While I like C# I’m put off by the ugliness of Gtk# on Mac OS X (and to a lesser extent, Windows). Of course, I can write a Mono core with native UI wrappers, but I don’t really want to maintain 3 separate UI code bases (or write host-specific code).

Third there’s that old faithful Java. The reason I won’t use it is simple, this is a GUI app and I hate Swing.

In four, there’s Clutter (and Mx) – brilliant. Only the non-Linux back-ends for Clutter will no doubt need some love, and for Mx are non-existent. Still… we could have a winner? I’m not very familiar with Clutter and I’m nervous how it would work out for what will basically be an IM client with a non-standard UI.

Finally, and by no means least, there’s Qt. The disadvantages to Qt are that I’d have to learn it’s intricacies (signals, slots, moc, etc) and obviously (as for Clutter) I’d need a host for each target OS to build the project on. That and using Qt would probably get me a flogging in the office.

Lots of choices, no simple answer. Bonus points if the platform has a decent XMPP library.

I guess that means fix and use Clutter/Mx, or write Qt and get flogged?


  1. An option that I’d be scared to suggest some time ago, but recently changed my mind, would be the Google App Engine. IIRC you can write at least Java and Javascript, and what you get is a web application, hosting seems to be free including some sort of storage, there are all the basic widgets, and it seems to generally work (though I haven’t done anything useful with it yet). Unfortunately I don’t know about XMPP support.. but I guess there might be some integration with gmail or gtalk or whatever. I’m sure it has its problems too.

    What I found really cool about the whole Google Code thing is that you can edit code collaboratively in your browser like a wiki (I was looking for some collaborative javascript editor and couldn’t find anything until Google. Github was close).

    1. Hey Andrew, App Engine is a good call, however I just took a look at their API and while they support sending XMPP messages it looks to be more as a form of notification. There is no API to handle XMPP MUC and it seems there is a quota for the amount of messages you can send from the app.

Comments are closed.