Feeling more and more like a curmudgeon with each passing year, I've been busy recoiling against the Web 2.0 onslaught of publicity and hyperbole. Perhaps from a strong desire to learn from the mistakes of the past and from an inordinate sense of deja-vu, the best I can say about 'Web 2.0' is its a nice evolutionary step. I was even going to accept my newly confirmed curmudgeonhood and stay in my corner but then I came across Ebrahim Ezzy's post on Richard MacManus's blog entitled Webified Desktop Apps vs Browser-based Apps.
At first I was just happy that I might have company in my corner, and commented that I wrote something similar and even had the temerity to write a desktop application on my theory. And then Richard put up this poll asking people if they prefer desktop apps or web apps. More than 80% prefer web apps? Are you kidding me?
I began to think of my nice safe corner again.
But then that curmudgeon voice came back. 'You've seen this before', it said. 'The poll represents an ideal instead of a reality', it whispered. 'Is Intel fooling itself by making faster and faster chips for the desktop?'. That was my business voice chiming in (I tend to have pretty lively internal discussions).
'OK', my ego replied. I agreed to look at Web 2.0 some more, and my first question was, what does it really mean?
Wikipedia thinks its "a supposed second-generation of Internet-based services that let people collaborate and share information online in new ways — such as social networking sites, wikis, communication tools, and folksonomies." O'Reilly, the putative inventor of the 'Web 2.0' term, devotes 5 web pages trying to define it. I didn't do a word count, but the definition of Web 2.0 seems quite a bit longer than Tim Berners-Lee's original proposal for the World Wide Web itself, so one would think this Web 2.0 must be pretty revolutionary indeed.
However, O'Reilly in fact demonstrates Web 2.0 is evolutionary right on the first page by showing a nice table of Web 1.0 -> Web 2.0 fish coming out of the sea. For instance, 'publishing' loses its fins to become 'participation.' My question: aren't HTTP methods exactly the same for Web 2.0 as they were for Web 1.0? 'Participation' is really better utilization of the available, well-defined HTTP methods, which is a nice step toward consumer usability. Maybe its this notion-- that consumers will now be willing to pay for web services-- that makes Web 2.0 revolutionary.
Cynical as that may sound, I also have a revolutionary side of me that rears its head from time to time. And if Web 2.0 truly wants to be revolutionary, then it should stop focusing on applications and start focusing on data. Specifically, data identity. No, I don't mean better URLs or better addressing for web pages. What I mean is data identity that lives past the URL request, page view or even application. Why? Because you have an identity, corporations have a legal identity and its about time data had an identity too. When data has identity, then the debate between desktop apps and web apps becomes irrelevant.
The first thing to do is take a look at that O'Reilly evolutionary table again. And let's pick the first example of primordial web apps crawling onto the beach: DoubleClick becoming Google AdSense. My second question about Web 2.0: Did the DoubleClick data you entered magically evolve into Google AdSense? Or did you have to do that evolutionary step yourself? OK, now go through that list again and ask yourself about re-entering all that data again. Are you willing to carry the weight of another evolutionary step?
What I wish Web 2.0 really meant is the ability for data to start taking these evolutionary steps too. These types of data exist today. I can think of a blindingly obvious data type that is at home both on the desktop and on the web. More importantly, its also been fine and dandy with each evolutionary step of desktop applications and web applications. The result is the means to access this data type is the choice of each user. Is mobility the key? Data management? Do you want a rich UI, a web UI, or BOTH depending on what you feel like?
The data type is email, of course-- the single most valuable desktop/web application, and probably the first application for Web 2.0. Though its kind of a bummer that email has been around for so long. Its kind of hard to hype something everyone has grown so used to, but I would argue email is in fact the first Web 2.0 application using my criterion: does its data have an identity that allows it to move from presentation to presentation. Let's see, I can view the same email from dekstop to web to phone to blackberry using smtp, imap or exchange. So the answer is an emphatic yes.
However, email is the rare data type that preceded the mass consumer adoption of the web. I'll bring up another data example that lacks the RFC, but is no less important to millions of people and is approaching ubiquity. It also happens to be something I'm intimately familiar with: Project Tasks.
Everybody has tasks. And just about every office system has tasks. If people have modelled tasks adequately, shouldn't it be trivial to move task data from system to system? Right now the answer lies in how accurate you want the task data to be. Do you want the task data to be 100% accurate for a specific system, like MS Project? Or do you want the task data to be mostly accurate for all project systems? And remember, there are a lot of project systems.
And most importantly, do you want any sort of referential integrity for task data between disparate systems? For example, if I start with a MindManager project, and somehow manage to publish tasks to a SharePoint task list (sounds like a good idea! Hmmm....), wouldn't you want the ability for people to adjust task data via their SharePoint browser and have it somehow reflected back to the MindManager project?
Now that speaks of Web 2.0 to me-- addressable data that blurs the current demarkation of what is desktop application data and what is web application data. But unlike email, a task is not a task-- at least not in the eyes of today's applications. In order for tasks to maintain their integrity, they need a little help. They need specialized applications/services to come along and help make these leaps possible.
So what will happen in the revolutionary Web 2.0 environment? Its sort of a tale of two cities. If you want a piece of data to be able to manifest itself in different forms on differerent devices, today you either need all the devices to agree on the data schema, or you need a middle man (or service) that helps the data make the transition. Because there is very little incentive to create cross-application data schemas (and make it really work), its more likely that we will start seeing more applications that are also services which enable data to make hops from one application to another. And if people are willing to pay for these apps/services, then there will be alot of incentive to create them.
Remember, that Wiki entry wasn't so much about web applications being superior to desktop applications, but in fact 'supposed second-generation of Internet-based services that let people collaborate and share information online in new ways'. I sincerely hope people will start asking themselves what kind of data they would like hopping from desktop app to web app and back. 'Internet-based' doesn't mean 'web application', it means 'a universal medium for information exchange', at least according to Tim Berners-Lee's Semantic Web.
Now that will be a revolution!