Alex Hudson

Thoughts on Technology, Product, & Strategy

What I realised I’m missing from Gnome

Not that long ago, I did a switch on my Android phone: against all the promises I made to myself beforehand, I switched on the Google account and allowed it to sync up to GCHQ/NSA the cloud. I did this for one main reason: I had just got an Android tablet, and I despised having to do the same stuff on each device, particularly since they weren’t running the same versions of Android, and one was a Nexus – so not all the UI was the same. The benefits, I have to say, were pretty much worth it: I don’t have too much sensitive data on there, but the ease of use is incredible. What was particularly good was that when I broke my phone, and had to have a new one, once the new one was linked up everything was basically back how it was. That’s tremendously powerful.

Now, I recently acquired a bit of Apple equipment and of course installed Fedora 19 on it. Just to digress briefly: installing Fedora 19 on any new Mac hardware, particularly if you want to keep Mac OS X around (I don’t much care for OS X, but keeping it for now seems handy), is tremendously difficult. I had wired ethernet (brilliant, because I was using the netinstall – which, I should note, is a truly wonderful experience in the new Anaconda) which was lucky, since the wifi doesn’t work by default. The disk partitioning is incredibly complex, and the installation documentation is not particularly good. At some point I might try and help update the documentation, but it would feel a little like the blind leading the blind at this stage: although I have Fedora booting, the Mac OS X grub entries don’t work.

Logging into my desktop, though, I realised everything was bare. This was not like the Android experience at all – everything, from my username to my dot config files, needed to be set up again. I rarely change hardware, and previously I saw this as a reason to make a fresh start of things: but actually, now I value the convenience more highly.

It’s not like things are totally bad:

  • Gnome’s account settings can pull in some limited information, from Google or OwnCloud or other similar systems
  • Apps like Firefox have excellent built-in secure synchronisation that’s not a complete pain to set up
  • you can use apps like SparkleShare to make specific directories available elsewhere.

However, this really isn’t the experience I want:

  1. I should be able to use some online “Gnome Account” in the same way I can set up Enterprise Login during install
  2. That “Gnome Account” should have all my key configuration, including the details of other accounts I have linked up (maybe not the passwords, but at least the settings)
  3. If I have online storage / backup somewhere, it should offer to sync that up
  4. I should be able to sync my entire home data, not just specific bits
  5. If the two machines are on, I should be able to access one from the other – even if there’s a firewall in the way

I realise point five above is particularly moon-on-a-stick territory.

Technically speaking, a lot of the basic bits are kind of there, one way or another. Most Gnome apps use the standard dconf settings system, and in theory it’s possible to synchronise that stuff where it makes sense (this is, of course, handwaving: whether or not you want all settings exactly the same on each machine is virtually an impossible question to answer). Discovering and syncing other data shouldn’t be that hard. Remote access to another machine is definitely much harder, but the various protocols and discovery mechanisms at least exist.

Annoyingly, there doesn’t seem to be much development in this direction – not even prototypes. There are lots of nasty problems (syncing home directories is fraught with danger), and even if you were willing to buy into a simpler system to get the goodies, making it work in Gnome is probably an awful lot easier than dealing with the other apps that aren’t Gnome aware.

I’m certainly not in much of a position to start developing any of this stuff right now, but it would be interesting to at least attempt to draw out a believable architecture.  A decent 70 or 80% solution might not even be too hard to prototype, given the tools available. It would be interesting to hear from anyone else who is working on this, has worked on it, or knows of relevant projects I’ve missed!



A first look at




  1. This all reminds me a lot of the old Mugshot, GNOME Online Desktop, BigBoard, stuff from 6 or 7 years ago I think.

    Even though Mugshot started out more as a social network thing some bits of the Mugshot server (I think) were used for which was meant to provide things like configuration sync and backup.

    So ideally you would then have been able to sit down at any GNOME installation and choose to login via and you would get everything configured as you were used to – even on your friend’s machine that you had never used before.

    It never quite got to that, though, and the project eventually died out.

    I wish I had more of a timeline of it all. As I recall Havoc Pennington was one of the primary developers of it, so his blog probably has more information somewhere in the archives.

  2. Alex

    Yeah, mugshot was really something – it’s a shame it never caught on, the login system alone was a bit ahead of itself. It’s a shame that the whole online/web thing nev got further forward.

  3. This sounds to me like the start of a KDE/GNOME collaboration using the NEPOMUK and akonadi frameworks. I know, I know… but consider it. GNOME already uses NEPOMUK in “tracker,” and it’s a great way to manage information about your files, like what to sync, sync status, and other things. Plus, when it works, akonadi has information about all your accounts *and* it’s a caching sync engine.

    If we could finally bring to fruition the full promise of the inter-connected semantic desktop, this project would no longer be about “catching up” with the likes of Google, but showing them how it’s done.

  4. Alex

    I’d love to hear more about why you think Nepomuk might be useful for this kind of project: I took a quick look at some of the documentation (although I’m not really familiar with KDE), and it wasn’t really that obvious to me that there was much of use.

    Synchronisation is definitely important, and there would be a galaxy of small details to get right. IMAP, for example, has great support for synchronisation but it’s incredibly e-mail specific (you can use it for other types of data, but it’s not as appropriate). For something like dconf, I imagine that the “ideal solution” would know something about the type of device you’re using, and very fine-grained controls about whether a piece of data should be synchronised. So, for example, I might always sync all my accounts information, but maybe my desktop is dual-head and I don’t want to share that specific configuration. That kind of issue makes me think that the config side of things would need to be quite usecase-specific, and generic tools might not be much help.

    It would be interesting to look at the Android code and see what they’re doing in this regard.

  5. yes, for instance i was almost surprised that the list of my GNOME extensions and their configuration is not sync’d between my laptop and my PC once I tie to the google online account.

  6. There is about a million ways to solve the problem your describing, using free software without uploading any of your data to any server you don’t control. The point is that you need something to refer to — an URL or an IP that won’t change. That’s really the biggest issue — which should be possible to fix using relatively few resources (free ddns systems could do the trick).

    Once you have some stable reference point all you need is some way of syncing the data you want to have available — for this you could use, for example, a VPN and NFS or a similar setup. Simply mount the NFS partition somewhere != $HOME and copy the data you need synced. Or use GIT/SVN/some other VCS to automatically scan for changes on login and every now and then (every hour for example).

    Sure, it takes a bit to get working, but once you have it running, everything should be under your control and the chance that NSA/Google/Apple or some one else gets hold of your stuff is very low.

  7. Re: NEPOMUK

    The tagging system could be used to distinguish items to backup, sync automatically, sync when required, make publically available, etc. Imagine every device you own knows about every file on every device you own, because the metadata is automatically synced. Then it wouldn’t matter where the file is (or first was) because NEPOMUK could tell some app where to get it, and that app could use akonadi (or a similar system) to get it.

    You wouldn’t even need to maintain a consistent directory structure across devices, since you could find duplicate files easily.

    I think i’ll write my own blog post about this, to help explain!

  8. Alex

    Tagging is great a file level, but most config systems are not whole-file based – e.g. dconf isn’t. I can see that Akonadi or Nepomuk data would be the kind of thing you would definitely want to sync between machines, but I’m still not really buying it as a decent syncing mechanism 🙂

    I think there’s always a risk attempting to apply generic tool sets to specialised problems. For things like syncing files, you might want to introduce concepts like versioning or external access control – concepts that don’t really fit the PIM model.

  9. My tentative solution to this was to install Fedora 19 on a big fast new USB stick and take it wherever I go. So far, it’s booted fine on every x86_64 PC I’ve tried. This does not address mac and phone sync, but that’s not a requirement for me.

    NSA/GCHQ issues aside, my future expectation is to have all my stuff in the cloud, with my local devices (PC, mac, phone, toaster, shaver, etc) transparently caching any files, directories, and config locally as needed. I think the concept of syncing is fundamentally flawed, since it implies user awareness through the UI of multiple copies of stuff on multiple devices. I suggest forget about syncing altogether, since that’s just a short-term transitional solution anyway, with adequate workarounds already available while we work on better long-term solutions.

  10. Alex

    I think the “cloud files with local cache as required” is just a special case of syncing to be honest: you can’t get away from the UI-awareness totally IMHO (for example, conflicting updates when two devices are active simultaneously, or deciding that some files [like video?] shouldn’t be uploaded – these are unfortunate realities), but you’re right that it should essentially be transparent. That’s essentially how an Android device operates, and I think they are the user experience exemplars right now (even if the tech is questionable).

  11. Ironic that the things you want are almost entirely provided by the OS that you have shunned 🙂

  12. With respect to Nepomuk & Akonadi, it’s a handy idea, but consumes a lot of RAM. I’m a KDE user (Kubuntu Trusty Tahr here) and have accepted memory usage as a required overhead; though, even with 8GB of RAM, consider the following shot:

    Nepomuk relies on Akonadi, but it’s kind of a pig. 😀

Leave a Reply