|Web applications and GNOME
||[Jun. 18th, 2004|10:13 pm]
Joel Spolsky thinks web applications are the future. Interesting article. The salient points:
- Microsoft's strategy with MSIE was to destroy the competition and then kill off MSIE development so that the web would stagnate.
- This was crucial so that application developers would not migrate to the web, making windows irrelevant (Netscape is going to reduce windows to a slightly buggy set of device drivers -- Marc Andreessen).
- It worked.
The natural question that came to me was, "so where are all the web applications that he's talking about?". As I thought more I realized how many web apps I was using without even realizing they were separate apps. Livejournal is one. Wikipedia is another. [Several years ago (in a previous birth, as a Windows user) I used to own an encyclopedia app. It stored its database in an obfuscated format and had its own viewer which had "features" like not letting you copy text out of it. Sheesh.] Dictionary.com is a third. I used to use kdict (with a dictionary server running on localhost! What could I do, I was on dialup back then), but I don't any longer because it's so much easier to open a new tab than use a separate app. And of course web mail. Heck, I even use a web app for a music playlist.
If web apps indeed pan out, it represents a huge opportunity for the linux desktop. How can GNOME capitalize on it?
Two things are crucial:
1. Build a kick ass browser and integrate it into the desktop.
We already have a kickass browser in mozilla/firefox, and happily integration plans are already afoot.
2. Provide desktop interfaces for web apps.
This one's a biggie. There are three ways to do this.
- Write a whole new desktop app.
For instance, I'm typing this in drivel. Although its great that I can blog from any machine with a web browser, I'd much rather use drivel if its available on the machine. Gnaughty is another nice concept.
If someone can write a GNOME app for Gmail, that would be fantastic, because the speed and responsivity would be greatly improved over the web interface.
- Integrate existing desktop apps with web apps where it makes sense.
For instance, Abiword's Tools menu lets you do look ups on babelfish.altavista.com, freetranslation.com, google.com, dictionary.com and wikipedia.org.
- Write browser plugins.
Mozilla's extension system is still maturing, but there are already quite a few extensions that give you easier and quicker interfaces to websites, RSS feeds etc.
Strategy 1 above helps to get users to the linux desktop and Strategy 2 helps you keep them there. Note that I'm advocating keeping the user on the platform by building a better product, as opposed to Microsoft's way of keeping you on their platform, which is to lock you in with proprietary formats and protocols.
What really needs to happen is perhaps more dramatic. GNOME needs to live up to the N in its name, thoroughly. The new mDNS stuff in gnome-vfs is the tip of the iceberg.
Publishing needs to be seamless. Open a gnome hypertext editor. Write something. Drop it on a webdav share, perhaps part of a blog system. It's merged with the blog content. A window pops up asking if you want to notify subscribers. An XMPP message is fired across the void and it appears in the RSS/Pubsub readers of the blog. They click the "read article" button and their browser opens. Writing a response is similar, plus some drag-and-drop trackback.
Files get stored on the web. Your computer becomes a seamless part of it. Let profiles be stored on a DAV server. None of this nonsense now with keeping things in synch between desktop and laptop. (The Sun mantra of "The network is the computer" is such a good idea.)
I think we're seeing the first of the enablers hit the GNOME desktop now in mDNS. When any user on any machine can publish something, even epehemerally, it opens the floodgates to all sorts of new services.
2004-06-21 01:33 pm (UTC)
Key technologies: XHTML+CSS+JS, and XUL (and similar toolkits)
Integrating a browser into the desktop is less important than just having people using browsers that correctly implement standards.
These days we have *much* better browsers available, so there's not just a choice between ultra-broken crappy browser A and ultra-broken crappy browser B. What we need next is to get these browsers into the hands of users, and maybe to develop some killer apps that require standards compliance in order to work (rather than being hacked so that they will work in IE 6) so that people will upgrade. Coddling IE 6 users is a short-term strategy. Yes, I know there are a lot of them, which is why this step will be hard and will probably require someone small and new to pull it off.
Also, there are some relatively new cross-platform development environments that don't require you to be a C++ guru. Mozilla's XUL is interesting. The Eclipse SWT for Java is interesting. I'm sure there are others I'm overlooking, but the point is that it's becoming easier to write responsive, rich user interfaces using fairly familiar web technologies, running in a local container with privileged access to the local system. This is how I think the "Provide desktop interfaces for web apps" step should be achieved. Use the same people to develop your fancy XHTML+JS+CSS web site and your X[HT]ML+JS+CSS thick client app... what a concept. A lot of this stuff is still buggy but it's getting there, and the more you use it and write test cases and explain why particular bugs are important, the more people will take the time to fix those bugs and the easier time they'll have finding those bugs.