Home

Advertisement

Customize

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?

Comments

I thought the central question in computing was "How will this software get my users laid? (http://www.jwz.org/doc/groupware.html)" :)
Haha, true! In fact notting said the same thing to me on IRC.

Not claiming the conclusion is new in any way, just kind of posting my realization =)

(Anonymous)

boxes are good

Boxes represent modularity, and modularity is the only way that human beings can successfully manage complexity.

Re: boxes are good

In some cases I guess, but my point here is that all of those boxes exist for one purpose - to help my sister get to Ebay. We could be doing a lot better in terms of preventing those boxes from interrupting that process.

(Anonymous)

Re: boxes are good

If you want to optimize your sister getting to eBay quickly, not only should the browser start up with the session, but the browser should never exit and the session should never end. Instead of logging out, she suspends the computer. She clicks the button and poof, there's her eBay page right where she left it.

(Anonymous)

Re: boxes are good

Or just make "Automatically save session on changes" (used to be save on logout) the default and there is no problem at all. Well, the problem is that firefox, as far as I know, doesn't integrate with XSM at all, but that's why everyone should use epiphany.
Then just log out or suspend or whatever and when you come back your browser is exactly where it was left off - on a shoe search in eBay in one of the tabs (the selected one of course, because your sister always looks at that before logging off due to the obsession with shoes :) ).

-- Mart Raudsepp

(Anonymous)

Why not ditch the traditional desktop (background image and icons) and just let the browser be the background? think a borderless window with out toolbars etc, just a place to render webpages. And the stick the address bar in the panel. Now that would be an online desktop :)
Yeah, I thought about that - it would probably be a fairly quick hack to make the browser have no WM decorations, but it would probably be harder to make that *not* happen for popup windows.

Also there is the weirdness that a lot of people I see use multiple windows instead of tabs.

Maybe the closest thing for now would be to just auto-restart the browser if it's closed.

As for the address bar - my secret project relates to that! Wait and see =)

(Anonymous)

"Foxybuntu"

I (Nigel Tao) made a mock-up of something like this last year: http://blogs.gnome.org/nigeltao/2006/10/02/creating-passionate-grandmas/

Right now, there's no shareable code, just ugly, stale patches to Epiphany and XFCE. If I get some time, I'll bang it into shape and post it...

Re: "Foxybuntu"

Interesting! I like this direction a lot. What kinds of patches did you add to epiphany?

(Anonymous)

Well..

..that, is exactly what Microsoft did ten years ago.

They named it "the Active Desktop".
Great invention. It starved a painful dead.

(Anonymous)

Re: Well..

Active Desktop still exists. The idea is good, but it updated the pages bad (just like IE, first erasing and then repainting), you couldn't really surf using it, it had the same security issues in the past (nowadays that part has been entirely fixed), and the desktop icons were on top of it irritatingly. It is just plain unusable.

As a better implementation to that the Vista offers these desktop widgets. They can reside anywhere on the desktop and there are two kinds of (I'm simplifying this not to get dragged into too much technical details) widgets. You can either program one entirely traditionally or you can do what many of them are doing - they are just pieces of html, and can refresh parts from the network etc. One could use those for engulfing the whole desktop perhaps.
somebody has a shoes fetish :-)

(Anonymous)

I hate Pidgin



Most important applications are those that allow us to collaborate and refine information with other people and machines. You can do some things, for some time, without networking and communicating but most of the things will start deteriorating pretty fast. Networking and communication are the key to most of the present success stories, and the social network effect pressure does magnificent things. The already using people drag the others in, and the more joins the network the more useful it is for anyone. Those things grow exponentially.

It is not enough to have some XMPP/Jabber connectivity. It's not about technological superiority as some clueless people seem to be thinking. What is the most important thing is that you can reach the people that you need to reach, and in a way that is usable! For that, in many environments, you need regrettably multiple protocols.

To get that, most of the people are running Gaim/Pidgin. It is nice because it supports (to some degree) a great amount of protocols. At the same time that application is one of the appalling ones I have ever seen. One of the reasons is what you described, boxing.

You have to run it. It's contained in its own little world. Then you have to poke it constantly to keep it running. It doesn't really integrate with the desktop environment, and even slightest network connectivity problems often force you (Pidgin is just plain awful, the developers have been absolutely clueless on how to handle those events) to move you focus for a second into that box and poke it a little bit - even though you are not willing to actually do anything with the application (communicating with it!).

To be able to communicate you have to work with these little boxes. They pop up (behind others often) when something happens and you have to move into them. Or you have to work with the tabs. Or you have to have one virtual desktop cluttered with these open windowses to keep you connected to for instance the IRC network and to keep you on the channels. In the end sometimes you are more working with the boxes itself than with the actual primary tasks of that application. Also, the actual chats are often boxes with no boxes inside them. You Run Applications when you get sent a file. They are just appalling text boxes. Go take a look at the web based 37Signals' chat to see something that breaks boxes a little bit and it provides awesome usability while at it!

Pidgin is plain horrible. Awful. It should die. Fast. Also the usability is low, thanks to the fact it was modeled after pre-existing applications that have poor usability. There's no imagination in for instance searching for people, sharing documents and files, group chat things, configurating things is hard and required, and so on. The list of its problems in that area as well is endless.

But there's no alternative! The only alternative would be these Telepathy based clients. They are still far away in the development, but they have this promise to be able to actually do some of these things like they should have done years ago already... And I'm outraged that their development is not getting the resources they should. The present offering really does not help with solving those real-life problems, and the development is practically stalled.

If you look at https://blueprints.launchpad.net/ubuntu/+spec/feisty-telepathy you see the one single strategically (for desktop Linux) most important blueprint on the whole list. Yet, it has been now deferred for the 3rd time or so in row. Considering how weak the competition is, how important these network effects can be, and how much it could help the actual people in concrete ways in their real-life tasks, it has the potential to be even the most important lever for tackling the bug #1. I'm dead serious.

(Anonymous)

Re: I hate Pidgin

Breaking those Boxes on this area, integrating things well, and actually thinking of the workflows people need when for instance
- working with multiple friends to write a paper for school (ie. abicollab, sharing instructions text, multi-point audio chat)
- searching for an old friend, or new friends to chat with (ie. directories, leveraging search engine APIs)
- working in an office and organizing a meeting (ie. telepathy-CALENDARING connection manager and the proper UIs, agendas, project gantt -telepathy)
- getting help for their propblems with their Linux distribution X (ie. #ubuntu+launchpad combined in persistent ticket chat, offering auto-runnable solutions [consider "templates" for problems, that the people could hand over, like scripts with descriptions and quality control and GUIs for running and offering them!] by certified people, remote control)
- chatting with floss people about development of X (ie. show documents, patches, collaborate, draw ui sketches in collaborative Glade and then discuss about them, report and work on bugs)
- telling about your last vacation to your friends (ie. show image gallery, make a voip call)
- making quick notes (ie. funneling notes to Tomboy)
- sending email to a friend (it is all the same - communicating!)

... and so on for the actual first time in the history of desktop operating systems would produce stellar results. It is possible to do this all in a way that has less boxes and provides superior value to people! Communicating and collaborating is a lot more than just couple (text) boxes.


If I was given ~10 good Gnome/Telepathy/Ubuntu devels for 6 months I know the outcome would be such that die-hard Windows people would switch to Linux specifically because of the awesomeness of the fresh communication platform (marketing speak term, not technical). It would be just plain legendary, and give the competition some actual hard time answering to all of that.

In fact, it is my dream to get a chance to get paid work to make this all happen. I have had this dream for some 3 years already, and in that time I have seen no development on this area. I haven't seen any real interest from any direction either, which is even more baffling. It will take with this speed some 10 years to get where we could be in 6 months. It is not a technical issue. The technical problems can be solved. What is missing is VISION an LEADERSHIP to build the correct features, and some RESOURCES so that it isn't just someone's part-time hobby. I really really like break some serious boxes on this area.

Re: I hate Pidgin

I completely agree with you that Pidgin is an exercise in frustration.
It's definitely a truly key part of an online (or really, any) desktop, and right now the user experience is pretty crappy in a lot of ways.

Though let's be fair - they did get some stuff right. For example, supporting AIM and other protocols, and not assuming some rosy future where everyone uses XMPP.

(Anonymous)

Re: I could make M$Windows at thing of history

Sooo hoping you've already kicked off a group at Launchpad.net and/or GNOME.org, + made a pitch to Canonical /+ Redhat & friends, and have a talk lined up at the GUADEC (GNOME) conference!
I would guess you'll get plenty of capable people keen to be the team that makes the future.
Esp as there's this window of opportunity here while machines are still choking on/bogged down with Vasta ;)

packaging

Packaging is engineering. It's not glamorous, but it is necessary. On the jhbuild moduleset thing: one, I don't see how that's particularly an improvement on a spec file or a Debian build, and two, the answer would be "because most other software is not as well behaved as GNOME".

It may not be immediately obvious how good packaging practices relate to the end user experience, but they do. Bad packaging practices don't hurt you for a while, then they start biting your ass by causing upgrades to mess up, packages not to work together properly, needless complexity in the filesystem and so on.

Good packaging practice manifests itself mainly in you not noticing it: it's just like good plumbing or good street cleaning. You don't notice it and so you don't think about it and maybe it doesn't seem very important, but if it stopped happening, you'd realize why it *is* important very quickly.

Of course, if you don't think packaging is useful or important to the end user experience, you may wish to switch to using LFS. Let us know how that goes. ;)

(Anonymous)

Help me to begin home business via internet.

Hello,
I am only looking for
The best soft to PC-where to buy, join site & other tipe to do a home online business.
Thanks for the info.

Advertisement

Customize