Friday, November 23, 2007

Disconnected Client Alternatives

I want to build a *simple* cross platform fat client application. It will allow users to enter data while disconnected and then upload it to a server when they have a connection.

I'd prefer not to use Java (black magic) or AIR (not ready?).

I'd prefer to hurt the web as little as possible (i.e., the more web technology in it the better for skills transfer)

I'd prefer it to be open source.

I'd prefer to not have to hire specialist ninjas to be able to build it. Every day web programmers should be able to get up to speed with it.

What are some good choices?

XUL? Mozilla Prism (some day)? Google Gears?

Update - Nov 27

This post got some helpful comments - thanks! And a nice post from Erik Onnen - thanks! There is much love for AIR. I went to the Adobe Bus Tour and generally like Adobe. The proprietary nature of it is tough pill to swallow - opening Flex was a step in the right direction, but I'd like to see more more more.


MWesty said...

Of your choices above, I would say AIR is your best choice. Depending on how much data you needed to store offline straight Flex in a browser might be better.

I don't see much difference between a Flash based source and something like Mozilla Prism. They both require something other than a standard browser, and Flash is currently more ubiquitous. Ok, it's not Open Source, but you can't have everything.

I built a similar system back in 2000 using Java. The offline component nearly killed us. I think the toolset is much better now, but it wouldn't be my first choice.

fuzzyBSc said...

I played around with XUL earlier this year, but am not really happy with it. I think that any tool that doesn't allow "foo.innerHTML = bar" to replace GUI elements fails to learn from the web. XUL is too programmatic when it comes to building lists and other widgets for my liking.


Sam McCall said...

How fat is fat? You could have a local webserver running a web app backed by a sqlite or similar database, with a page to upload the data to a remote site.
Obviously this depends on the UI requirements for the client, but it's good from a skills transfer perspective.

I know ruby-based frameworks generally have the option to run in a standalone web server, if your language of choice has something similar then the app can easily be self-contained.

Sarge said...

Tcl/Tk, Perl/Tk, Python/Tk. Tk provides a cross-platform widget library and all three languages have support for HTTP/TCP/IP.

MWesty said...

I just read something on Lazlo as well, it appears to be javascript which is compiled down to Flash. I could be mistaken as I just glanced at the sight. It is open source (but of course used a non-open Flash container.)

brian said...

Google Gears + Tibco GI :
- open source
- lighter weight than AIR
- x platform support
- requires you to know and love Javascript ;-)

Erik Onnen said...

You inspired me to catch-up on my blog :)

In short, AIR is the best option unless the license gets in your way.

tquaile said...

I would agree with erik and others that AIR is a good non Open Source option. What about using XForms (Chiba or Orbeon), I believe both of these can be done in an offline implementation. Also, I think that Firefox has an XForms extension. The code syntax is also XHTML/XML/CSS which is easier for web designers.