Transformative web applications

Steven Garrity discovers how different using Google Docs is compared to desktop word processing. While I use Google Docs a bit, I wouldn’t say it’s really changed my life a lot because I guess I just don’t write very much, at least compared to other people.

Let me jump off the Google fanboy wagon for a minute and talk about something different. What has changed things significantly for me, in terms of desktop->web transition, is Years ago when I was working on Rhythmbox, someone mentioned to me, and I took a quick look, but I wouldn’t say I really understood it. I guess at the time I was too busy inventing more complex ways to badly implement a database. Sigh =/

Anyways, so fast forward a few years and someone again (I forget who now) pointed me to and I subscribed, gave it a try. is a lot of things (music wiki and concert calendar to name two), but what I use it for is as a personalized radio of music I like that I can access from anywhere there’s a web browser. I don’t have to deal with backing up my music, or carrying it around with me (though support for caching some of my radio on my iPod would be nice).

I would say I’m probably more extreme than most users in that lately I haven’t been bothering with owning or buying music much at all anymore. I mostly just like something I can listen to on random when I’m working or driving. But even if you still own music (and their scrobbler supports this very well), is a great example of how truly transformative the web can be versus a disconnected desktop application. It would in theory be possible to show you a concert event calendar customized by the music you listen to with a desktop music player, but it’s just hard. Or the social network of like-musically-inclined people. It would be impossible to do the streaming music legally right now without some sort of business backing.

It’s actually kind of unfair to compare with a desktop music player because really, they aren’t the same thing at all. One’s a service, and one is software.

The Java consumer brand

Jonathan, you’re on crack. Java is a good brand – to a wide swath of programmers. The idea of trying to turn it into a consumer brand has completely failed. I’d say if normal people know it at all, it’s one of thirty other popups that appears periodically on their Windows desktop and asks to update itself.
Totally, completely irrelevant. If you go to, all you see is games and links to other stuff like Google Maps.

No normal person cares whether it’s Flash, Java, JavaScript, or an army of hamsters powering things like YouTube. All they care is that it works. Putting the Java logo all over the place won’t change that.

The smartest people on Earth

  1. The writers for the Onion
  2. The Firebug developers
  3. NASA rocket scientists

Seriously though…Firebug is amazing. Quite easily the most pleasant software for development I’ve ever used. I’m sure almost everyone who ever programs in javascript/css/html out there has heard of it, but if you’ve been living under a rock and are still debugging by using alert() or something…well, you should install it. That is all.

The Central Question in Computing

I am coming to believe that the software development industry in general has essentially an obsession with software that simply exists to “box” other software. Virtualization is a multi-billion dollar subsector that is the most obvious example. But this boxing obsession isn’t something really new.

I know I refer to this fairly often, but take a look again at the top two Linux applications according to Mugshot statistics. Both Firefox and GNOME Terminal are “boxes”. The entire purpose of existence of those two applications is to contain (launch,control) other applications. They are a means – not an end.

Further examples abound. The “window manager” is a literal display of the metaphor: it actually draws visible boxes around other software. And besides the window manager, the other most visible component of GNOME on my screen (in terms of pixels) is the task list applet – again – it’s just drawing boxes around the names of other software.

What actually started me thinking along these lines was Miguel’s post about .NET security, in particular how Microsoft implemented this CAS system that basically no one ended up using. CAS is a great example of a “box” for other software (in fact a huge swath of the general computer security industry is all about boxes). Probably a few very bright Microsoft engineers spent quite a bit of time on that, but it just didn’t end up being useful.

A lot of the Linux community spends a huge amount of time discussing “packages” – also just boxes. I posted about the endless nature of this particular boxing before. Someone should explain to me sometime why .spec files and debian/{control,rules} couldn’t just be replaced with something that looks a lot more like just a jhbuild moduleset, and put the stuff like descriptions on a web page somewhere.

Anyways, getting closer to the point I’m trying to make here – I think the entire development industry would be better off if we spent less time creating boxes. Don’t get me wrong – boxes are useful sometimes! I’m not dismissing virtualization for example – being able to just “turn on” a few more servers is really cool.

What I think would help for a lot of software development projects is to keep a central goal in mind. I have a proposal for that goal, which I am calling

The Central Question in Computing:

How does this software help my sister buy more shoes on Ebay?

To this end, one thing I changed recently in the online-desktop session is to start the browser by default. When I made the change, it was almost an afterthought. I was trying to set things up so that the sidebar started by default, and I realized – hey, why don’t I just start the browser too?

Bryan mentioned how I had observed that for my sisters, Marc Andreessen’s famous quote about Netscape reducing Windows to a set of device drivers has already arrived, in fact has been true for some time. For them, Windows is right now really nothing more than a glorified launcher for Internet Explorer to get to Ebay.
I had to ask myself – why aren’t we to the point where when they get to the computer, Ebay is right there instead of having to go through multiple boxes.

The Andreessen quote brings another one to mind, from one of my favorite authors, William Gibson:

The future is already here – it is just unevenly distributed.
So, launching the browser by default was one small change that I made recently, but it was a huge perspective shift for me. The desktop used to look like this:

Traditional desktop

And now:

Online desktop

I’ve been working recently on some code to further reduce the pointless work my sister would have to do to get to Ebay. It’s of course more general than that – in fact I think it’s turned out amazingly well. I know I’m being vague, but I’ll post more about that hopefully in the next few days when it’s ready for general consumption. It’ll have been worth the wait.

But until then – ponder this – what did you do today to help my sister buy new shoes?

What is the Online Desktop?

It’s pretty simple – the online desktop is this task list. Which is just a start (please add more!). It isn’t a single product you can download, though we’ve been working on prototyping components such as the GConf synchronization, a new sidebar, etc.
I’m excited by discussion like this that shows developers are interested. If you are looking to jump in – a really cool yet discrete project would be implementing the pick-a-service dialog from that todo list. In other words, the thing that should appear from F-Spot if you plug in a digital camera, but don’t have a photo site in your accounts.

Right now, you can get a person’s contact network from the data model, and then enumerate the “external accounts” (sites used) by those people. In fact, this is exactly how the BigBoard Photos Stock works. What you’d need to do is have some way of tagging services by what kind they are (e.g. photos). Then code the widget to query those, uniquify it, order it by some criteria, then just stuff it all in a treeview.

Firefox multilanguage

Mozilla supporting IronPython and IronRuby seems like pretty big news…not sure how I missed it. I’m going to have to pay closer attention to happenings in Mozilla-land.
So if I understand correctly, the way it would work is that Tamarin would include a translator from CIL bytecode to Tamarin bytecode? So finally when a website includes: <script lang=”text/python”>, what would happen is that the code would be compiled via IronPython (which itself was originally in CIL form, now translated to Tamarin) to CIL, and then Tamarin would translate that to its bytecode, and execute it?
Wow…why aren’t they just using Mono directly?