...I'm writing from about 38,000 feet, somewhere over the Atlantic ocean. Right now, I really miss being able to work with my bug tracker and databases. But I'm getting a lot of software written and have cut my inbox down from over 400 new messages to a more manageable 26. My version control system and mail client can sync their data with a server before I go offline.
Perhaps you saw David Hanson's post "You're not on a fucking airplane" earlier this month. In it, he rails against the current focus on 'syncable' Web 2.0 applications.
What David tells us is that we all need to unhook, unwind and pretty soon we're going to have network everywhere anyway. In fact, the only people who want their applications on airplanes are 'traveling salesmen or geeks who attend too many conferences.' I'm actually in both demographics, so maybe I'm just deluded. But I'm going to come out and say it anyway.
Hosted applications are wrong. [1]
Hosted applications are a return to the days of mainframe culture. Everything you care about lives in the Great Machine.
It just so happens that these days, the 'mainframes' are built on the backs of open source software. Some, like David's 37Signals, actually help bring new open source into the world, but all too often, they're just consumers of open source, not active players in the community, but I'll save that for another rant.
Hosted applications are not 'open'. I don't care if you get a full data feed or a free API that lets you spread your queries across a thousand servers. Someone else has full and unfettered access to your data. (While most of this post was written beforeNat's post on Radar, he's on the same page.) Someone else runs the applications for you. You have no real guarantee that they'll be there tomorrow. You have no real guarantee that they're not taking your private data and leaking it (or selling it) to some third party. You can't choose to move your application in house when you need better security, better uptime or just start to feel uncomfortable with the provider.
If you thought things were bad after the first dotcom bubble burst and the people who sold you software vanished overnight, just imagine how you'll feel when the folks who host your photos, do your books and keep track of your todo list go off to work for Google and vanish without a trace.
People have started to talk about 'Sync' as the silver bullet that will let Web 2.0 survive server outages and plane rides. They're half right. (And here's where I agree with David, even if just a little bit). Being able to use a single-user imitation of your hosted application offline is...not exactly actually all that sexy.
There's got to be something better.
I don't want a wordprocessor that only 'fully' works when it's connected to Fooble, your word processor vendor.
Sync isn't going to do a lick of good when Fooble get bought, go out of business, discontinue their wordprocessor, "upgrade" the software out from underneath you or change their acceptable use policy to say that you need to pay them if you're using it to write business letters.
Don't get me wrong. I'm absolutely thrilled that applications can make use of internet services, particularly when those services _aren't_ something that could run on the desktop. Moving essential functionality to the server is great for the business people and it makes the developer's job a lot easier. But from a user perspective, it just sucks. Hosted apps are the most degrading form of lock-in.
If your vendor has embraced Web 2.0, you'll have easy access to your data, but your app could vanish at a moment's notice. And unless you have a contractual relationship with your app's provider, there's not a thing you can do about.
That's the gist of my Chicken Little-esque rant.
So, the obvious next question: Do I have a better answer?
Of course I have a better answer.
And it still involves that dirty word.
Sync.
Sync is only slightly interesting when you live in a client server world. Sync lets you put a copy of your address book on the server. Sync lets you download your email for offline use. Sync lets you keep a copy of your software project on your local disk for offline hacking.
And this would all be fine if you could depend on your server to be there. No matter where you are. No matter whom you're talking to. No matter what sort of program you're working with.
Unfortunately, we only have magically connected servers that never crash in fantasyland. Anyone who tells you that they can provide you with a server you'll always be able to access is lying to you. Anyone who tells you they can provide you with Internet access that works everywhere you need it to is lying to you.
The only sort of sync that makes sense is peer to peer sync. You should be able to share documents and applications with anyone you're working with. Your application should be able to share a full copy of all the data you're working with. When you sync with someone a second, third or 300th time, your software should /know/ when you last synced and whether any of your changes have already propagated through some other chain of syncs. When your computer has that kind of information, it can Just Do the Right Thing when reconciling changes.
Sync will set you free.
[1] We make Hiveminder.com It's a fantastic collaborative task tracking tool for regular people, alone or in groups. We've built tools to let you sync your Hiveminder to a textfile, create and update tasks by mail, download tasks as an Atom feed, but it's not nearly enough. We're working on it ;)