vision

It’s early in the morning, I get up. During breakfast I check the happenings on the web on my desktop – my laptop broke again. People blog about the new Gnumeric release that just hit the repositories. I click the link and it starts. I play around in it until I need to leave.
On the commute I continue surfing the web on my mobile. I like the “resume other session” feature. Turns out there’s some really cute features in the new Gnumeric that I really need to try.
Fast forward, I’m at the university. Still some time left before the meeting, so I can play. I head to the computer facilities in the lab, log in and start Gnumeric. Of course it starts up just as I left it at home: same settings, same version, same document.
20 minutes later, I’m in the meeting. As my laptop is broken, I need to use a different computer for my slides. I grab a random one and do the usual net login. It looks just like at home. 3 clicks, and the right slides are up.

This is my vision of how I will be using my computer in the future. (The previous paragraph sounds awkward, but describing ordinary things always does, doesn’t it?) So what are the key ingredients here?

The key ingredient is ubiquity. My stuff is everywhere. It’s of course on my desktop computer and my laptop. But it’s also on every other computer in the world, including Bill Gates’ cellphone. I just need to log in. It will run on at least as many devices as current web apps like GMail does today. And not only does GMail run everywhere, but my GMail runs everywhere: It has all my emails and settings available all the time. I want a desktop that is as present as GMail.

So here’s a list of things that need to change in GNOME to give it ubiquity:

  • I need my settings everywhere

    Currently it is a hard thing to make sure one computer has the same panel layout as another one. I bet at least 90% of the people configure their panels manually and download their background image again when they do a new install. So roughly every 6 months. Most people don’t even know that copying the home directory from the old setup solves these issues. But I want more than that. Copying the home directory is a one-time operation but stuff should be continually synchronized. In GNOME, we could solve most of this already by making gconf mirror the settings to a web location, say gconf.gnome.org and sync whenever we are connected.

  • I need my applications everywhere

    I guess you know what a pain it is when you’ve set up a new computer and all the packages are missing. Gnumeric isn’t installed, half the files miss thumbnailers, bash tells you it doesn’t know all those often-used commands and no configure script finds all pkg-config files. Why doesn’t the computer just install the files when it needs them? Heck, you could probably implement it right now by mounting /usr with NFS from a server that has all packages installed. Say x86.jaunty.ubuntu.com? Add a huge 15GB offline cache on my hard disk using some sort of unionfs. Instantly all the apps are installed and run without me manually installing them. As a bonus, you get rid of nagging security update dialogs.

  • I really need my applications everywhere

    Have you ever noticed that all our GNOME applications only work on a desktop computer? GNOME Mobile has been busy duplicating all our applications for mobile devices: different browser, different file manager, different music player. And of course those mobile applications use other methods to store settings. So even if the settings were synced perfectly, it wouldn’t help against having to configure again. Instead of duplicating the applications, could we please just adapt the user interfaces?

When looking at this list, and comparing it to the web, it’s obvious to me why people prefer the web as an application delivery platform, even though the GNOME APIs are way nicer. The web gets all of those points right:

  • My settings are stored on some server, so they are always available.

  • Applications are installed on demand – without even asking the users. The concept is called “opening a web page”.
  • Device ubiquity is the only thing the web doesn’t get perfect by default. But a) the browser developers are hard at work ensuring that every web site works fine on all devices, no matter the input method or the screen size and b) complex sites can and do ship user interfaces adapted to different devices.

The web has its issues, too – like offline availability and performance – but it gets these steps very right.

So how do we get there? I don’t think it’s an important question. It’s not even an interesting question to me. The question that is interesting to me is: Do we as GNOME want to go there? Or do we keep trying to work on our single-user oriented desktop platform?

12 comments ↓

#1 Jason D. Clinton on 05.12.09 at 21:56

Java/RIA was the last chance for full-blown desktop apps getting automatically installed and executed in any kind of a sandbox. And it failed miserably because of Sun. IMO, there’s nothing wrong with this idea; it’s just that the web has SUCH a huge head-start, at this point. I don’t see applications catching up. However, the apps can come from the other direction: the web. Think Mozilla Prism, Google Gears, HTML5, and Adobe Air.

This is why I think that pushing JavaScript in to our platform stack is how we continue to evolve to remain relevant. Once Prism is here, we can start to figure out how to push and pull from these apps from within Gnome–using JavaScript.

#2 Rogu on 05.12.09 at 22:33

I hope you get your laptop fixed… ;)

Seriously, this is a great idea.

#3 nona on 05.12.09 at 23:29

I completely agree. I’ve been investigating and experimenting with a distributed p2p “file system”. Making sure your data is available everywhere on the internet is a prerequisite (making it not rely on entities like google or facebook or whatever is crucial too). My goal would be to turn every computer (be it pc, laptop, or phone) into a stateless machine that acts as a cache for both data and apps on this global file system.

#4 Dread Knight on 05.13.09 at 06:28

I think KDE is way ahead of gnome on this path. Plasma and other backend-pillars ftw.

#5 danielpoe on 05.13.09 at 07:38

I think 0install tries to solve some of the installation issues, maybe worth a look: http://0install.net/

#6 amondo on 05.13.09 at 08:09

Wizbit is supposed to be the answer to all these problems. It is a distributed version-controlled filesystem with automatic conflict resolution. Hopefully this will do away with the need for syncing application data, as it is the filesystem that is being synced.

Wizbit: “We all have lots of devices and places to put our data.. All of these places have their own data stores. Your data is stored in different formats. You need to make decisions about what should be on what. You need to manually transfer your data around, and this may even be a manual process. Things get out of sync, especially if you are working on it with someone else. So your collaboration just failed. Your sync just failed. And you don’t know what is where, your backup just failed too. Oh dear.”

http://www.wizbit.org

#7 Randall on 05.13.09 at 08:47

Why not do something like Citrix, Quest, and VMware are doing for windows with XenApp/XenDesktop, vWorkspace, and Thinapp/View?

These are all application/desktop virtualization systems for Windows OSes that pull the entire desktop into the data center, but that either execute it on the end user device (laptop, desktop computers) or failback to simply pushing the terminal services to the client (like XDMCP).

#8 Ubiquity « Hepaajan’s Weblog on 05.13.09 at 09:30

[…] two computers that I use and already I miss the features Benjamin Otte describes in his recent blog post. Fortunately there is some work being done for this already! I noticed that Conduit has GConf […]

#9 Tom on 05.13.09 at 15:53

You mean something like this:

http://www.ulteo.com/

( It is from the Mandrake founder )

#10 otte on 05.13.09 at 16:22

@Tom, Randall: No, I don’t mean some sort of virtualization. That’s not built into the desktop but tacked on. I want the whole system to embrace these paradigms. (I think I got a buzzword bingo there.)

@amondo: I’m not entirely clear what Wizbit wants to be. But it looks like it wants to be a lot more. Anyway, it’s not done yet, and afaik it’s on hold, too, because the devs are doing other things. But yeah, if it were done already, it’d certainly solve quite a few pieces of this puzzle.

@danielpoe: 0install doesn’t look like what I want. First of all it’s not the system package management program. Second, it still needs to install stuff (there are no menu entries for not-yet installed software) even though it says it doesn’t. Third, it does not in any way sync between different machines. And last but not least, it looks like a failure because it doesn’t solve the problem of trust at all. So I’m not impressed – but then, I haven’t used it.

@Dread Knight: How about you take a screenshot of your desktop, log out, come to my machine and log in. If your desktop then looks like on that screenshot, you win. Otherwise I’ll continue to be as unimpressed with KDE as I am right now. :)

#11 Thomas Leonard on 05.16.09 at 15:08

[ 0install.net ]

“Second, it still needs to install stuff (there are no menu entries for not-yet installed software) even though it says it doesn’t.”

You can have menu items for not-yet-installed stuff (and file associations too). From the FAQ:

“How do you do integration (eg, making a Start menu show all installed software)?

Since there is no concept of software being ‘installed’ or ‘not-installed’, this is not required. The menu (or other launching device) simply shows applications that the user may want to run. They will be fetched on demand.

For example, the set of applications your system shows you on first install is the applications the distribution author thinks you might like. They may be already in the cache, or they may be loaded on demand (depending on the distribution’s installer).

Indeed, the question is backwards. The menu doesn’t show installed software; rather, the ‘installed’ software is what the user has put on the menu (e.g. using the 0desktop command).

The new menu entry is independent of the program data though; removing the program from the cache doesn’t remove the menu item (clicking on it would simply offer to download the program again).”

“Third, it does not in any way sync between different machines.”

Correct. You need to set up syncing of your configuration files yourself. Once you’ve done that, it will get the software on demand.

“And last but not least, it looks like a failure because it doesn’t solve the problem of trust at all.”

If you don’t like the default trust database, you’re free to use a different one. What kind of trust system did you have in mind?

“So I’m not impressed – but then, I haven’t used it.”

$ apt-get install zeroinstall-injector

#12 Understanding (or not) Cloud Computing | Breaking Eggs And Making Omelettes on 05.24.09 at 03:13

[…] Otte has recently posted the most cogent use case of (what might be) cloud computing. One aspect of his vision is that his desktop settings are the same no matter which computer he […]