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?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s