Someone who I respect a lot told me at GUADEC ‘open source is doomed’. He believed that the small-ish apps we tend to do pretty well will migrate to the web, increasing the capital costs of delivering good software and giving next-gen proprietary companies like Google even greater advantages than current-gen proprietary companies like MS. (I’m vastly over-simplifying his complicated argument, but bear with me :) I’ve had a half-written essay on ‘why web apps suck and they are beating us anyway’ on my drive for a while, but this conversation at GUADEC made the light switch on for me.
Three big things:
- Web development/deployment is easy, and desktop is not.
- Web development makes certain things easy; primarily location independence and collaboration.
- Desktop development has advantages web devel does not (rich inter-app integration, localized search, etc.) but taking advantage of them is a PITA.
Or more simply- our biggest competition in the developer space is not microsoft, and it isn’t apple. Our biggest competition in the developer space is php, rails, and the web client-server paradigm. C# and Java are great, but as long as they are pretty wrappers on the same style of development we’ve always done, they are lipstick on a pig. We need to take the plunge and fundamentally make development more web-like while also leveraging the strengths of the client, or else we really are in trouble.
So, what’s the constructive takeaway that became clear to me at GUADEC? Our developer platform (really, any developer platform that wants to be relevant in 3 years) needs to be:
- braindead easy to start with: if you can’t have an app running in an hour, you’re in trouble. 80% principle applies here- the rails people say ‘we don’t care if you can’t build Amazon with rails’; we should probably say ‘we don’t care if you can’t build evo with g-rails.’ If we can’t make developing a desktop app as easy as a web app, people will develop web apps. Simple as that.
- dead easy to ship, deploy, and update: probably impossible to be easier than the web here, but we keep saying ‘apt is better than windows install tools’, which isn’t relevant- that’s like saying your car is better than a horse and buggy. Might be true, but the web’s install/use experience is a formula one car. You must beat that, not the horse and buggy. This is something I’m sure others have realized forever but I never did.
- building a collaborative app must be easy: I have been using writely instead of abi at work because I can trivially and transparently collaborate with my co-workers. The development platform must have collaboration as an easy-to-use part of the platform or the web will wipe us out on that feature alone.
- easy/powerful integration with search: search is really just the canonical example, for me, of things that are easy do across a desktop but which are hard for, say, GoogleOS to do. Obviously google can make it easy for me to search across all google properties, but never (or at least painfully) across flickr, delicious, etc. Our development platform should make it trivial to automagically instrument your files and let beagle know about them.
- easy/powerful integration with hardware: another thing desktops can do well and web apps can’t- our platform should make it easy to take full advantage of webcams, microphones, etc. Of course, like many of the other things on this list, this goes way beyond GNOME, but we’ve done that before, and must keep doing it. [Ed.: added later. I knew I’d forgotten something ;)]
- identify the web’s weak points, and go after them: search is just one example of things that local, client apps can do easily that web apps cannot. Development platforms (and apps) should be brainstorming hard about all those things, prioritizing them by user impact, and doing them. Every advantage of things you can do that the web can’t should be made trivial to develop and brought to users quickly.
Anyway… I guess that’s just a rant. But it was something that I hadn’t fully known how to say until a conversation or two at GUADEC.