My Gnome 3.0: A Real Web Desktop


So I missed the stream of What I Want for Christmas Gnome 3.0 by … a while, but better late than never!*

The Win

Essentially what I want for Gnome 3.0 is what Tomboy just got: a web interface called Snowy. Part synchronization, part collaboration, all “cloud” for those buzzword minded among us.

The Fail

Luckily there’s already Conduit which I think does the synchronization bit… I say “I think” because I’ve never actually gotten Conduit to work. I drag & drop F-Spot onto the canvas**, neat. I drag & drop Network to the right of F-Spot, neat. Now what? There’s no configure option for Network. Heck, there’s not even a Remove*** for Network. I right click and select Synchronize in hopes it will prompt me for details, but instead it happily reports synchronization is finished. Huh?!

I poke around in Preferences hoping for guidance on how to sync to another computer over a network. Wow. The first tab is fine, but the other 2 tabs are just long lists of text. Wait a second, if you scroll horizontally to the right in the Data Providers tab you can see a checkbox to load/unload them! Why you’d want this option other than for development, I’m not sure, but its there if you know where to look.

At this point Conduit has failed to gain my trust, so I give up. I’m fine with Pidgin being crash happy or Eclipse being ridiculously complex to configure. The former isn’t mission critical and the latter is intended for developers.

However, I’m expected to entrust all of my files to Conduit. Files and account information for network resources if I could figure out how to get that to work. I have pretty high expectations for anything I’m entrusting my files and passwords too. Right now Conduit seems more like a demo of GTK+’s canvas drawing abilities (it is pretty looking) than a powerful synchronization tool.

The Dream

My expectations for web enabling Gnome are insanely high. Synchronization isn’t enough (although it’d be an excellent start). I need web enabled collaboration features as well. I need it to Just Work™ as well as be Secure By Default™.

This means:

  • All applications can synchronize their settings and data.
  • All data has some sort of web viewable format and ideally a way to interact with it on the web as well.
  • By default all settings and data should be private.
  • Fine-grained CRUD permissions for all settings and data. The Create and Update are key here: not only should I be able to give other users the ability to edit my files but Grandma should be able to upload photos to my photo album.
  • While I’m dreaming can I add versioning support (like Dropbox)? Cool, thanks. 😉

The Implementation

Unfortunately I think Conduit is the wrong way to go. The concept is sound, but Worse Is Better™: each application needs to be allowed to implement their own integration with the cloud synchronization and collaboration system. There’s too many application specific tasks to accomplish intuitive synchronization and collaboration features outside the main application.

Tomboy has had pretty good synchronization for a while now. Firefox is getting it with Weave.

In a way F-Spot and Banshee support 1-way synchronization and collaboration. F-Spot can upload photos to a variety of services which have all (or at least most) of the features I’m pining for. Banshee’s ability to download Podcasts and music synchronize to iPods (note: I’ve never used that feature) is a sort of primordial synchronization. If only Banshee Web had survived (and wasn’t written in ASP.NET, the ickiest of all webdev platforms). Abiword has been toying with cloud services for a little while as well.

Perhaps Evolution is the poster child for this: I currently use it as a Gmail and Gcal interface sometimes because there are certain use cases for which I prefer it (shocking I know!). Despite its past reputation for being bloated and buggy, it Just Works&tm; these days and integrates beautifully with the rest of the Gnome desktop (are those calendar events in my system tray calendar?! amazing! Pidgin integration?! <3 Evolution). Evolution lives completely in the cloud and synchronizes everything locally beautifully (after years and years of effort). Why Gnome Can Do It

Gimp is actually the first Gnome app to really make me realize working on the web can and should be as easy as working locally. All it did was utilize Gnome’s VFS to edit and save images via FTP or SSH. With Gnome’s screenshot tool, I can save a screenshot to a web accessible location in 1 keypress and 2 clicks. Amazing! Thats almost as fast and easy as using a pastebin tool on the command line for sharing text.

Snowy seems like an excellent poster child for the web interface I’m whining about. I haven’t used it yet, but the very idea that Tomboy already has an open source reference implementation is an excellent start. 3rd parties could implement the protocols and offer competing services.

In an ideal world this would create a revenue stream for open source applications: services like Dropbox could support the synchronization and collaboration protocols and in return support development of the projects. The more people who use apps that integrate seamlessly with Dropbox, the more people who pay for Dropbox… or or Amazon or… you get the idea. Does What?!

That’s right, needs to lead the charge here. Its not enough that the protocols are open, application developers need libraries to make synchronization and collaboration easy. In that way Conduit is right: each application should not completely reinvent the wheel. needs to follow Mozilla’s lead. Mozilla realized early on that in order for their browser business to succeed, they needed open standards to succeed. needs to do the same. A KDE application should be able to synchronize to the same service as a Gnome app (this is where Conduit’s monolithic-master-synchronization-app model seems too optimistic to succeed). OSX and Windows apps should be able to use the base synchronization libraries as well, even if they don’t use GTK+ or QT.

At the end of the day I should be able to sync my photos, documents, and mp3s between my laptop, desktop, cell phone, Kindle, etc as well as any relevant application settings (Tomboy for Kindle?! yes please!). …and so much more.

* Not always true. For example: posting opinions on a piece of software long after the roadmap has been made.

** Strike 1 against Conduit: “Canvas” isn’t a very end user friendly term IMHO. A minor complaint, but as confusing as the UI already is, it needs all the help it can get. Perhaps the problem isn’t the name “Canvas” but rather that the fact that it doesn’t even need to be said. Remove all references to it and just put a textbox that says “Drop data providers here.” when the canvas is empty. The “Clear canvas” option can just be “Clear” as there’s really only 1 thing that can be cleared.

*** Strike 1.5: “Remove” would be better than “Delete”. Delete makes me wonder if its going to erase my files! Remove seems more descriptive and precise. Also, drop “item” from the end of each right click menu option. Its redundant when every option operates on the item you clicked.