Web 0.1 (or, How to Stop Worrying and Keep All Your Data)
So I was just reading Jono's Unity commercial^H^H^H^H^Hpost about his desktop :), and it reminded me of a post I wanted to write. I run a lot of the same stuff on my desktop as Jono does - particularly Evolution (like Jono, I think Evo has got a very unfair bad rap, but I think it rather depends on the exact configuration you use it in), Rhythmbox and gedit. The big differences are that I don't tweet (it just feels like a waste of time to me) and I don't use Empathy, which leads me into what I really wanted to write about... I've talked about various bits and pieces of my setup before, but looking at it overall the other day I was struck by the extent to which my systems are now really just fat clients. They run all their apps locally, but almost none of my data is localized to any computer any more. I can switch from my laptop to my desktop with virtually no loss of my usual workflow. So, my typical work environment includes Evolution, xchat-gnome, a terminal, Firefox, and Revelation for password management. Evolution on all my systems connects to my mail server, which aggregates mail from six or seven accounts and does all the filtering server-side with procmail. It also acts as an SMTP relay, mainly so I can send mail from my cellphone. So whatever system I'm using, I have the same mail in the same folders with the same read/unread status...but Google doesn't own it all. (I was reading the other day that Hotmail didn't even do end-to-end SSL encryption until recently, and still doesn't do it for non-web connections. I mean, yeesh.) Evo is also connected to my contacts and calendar...which I do keep on Google, unfortunately, because I can't get eGroupWare to sync with my cellphone yet. This means I have access to my contacts and calendar from any system and also from my phone, and I can add a contact or event on any system (or phone) and it's there on all of them. xchat-gnome connects to my IRC bounce server, which runs bip as an IRC bouncer and bitlbee as an IM gateway; all my IRC and IM traffic goes through this setup, so I can connect from any machine and I'll get any traffic since the last time I connected from any machine, I can connect with multiple machines at once, and the logs are stored on my big-lumps-o-data disk (actually a 1TB RAID-5 array which lives in my HTPC because it's the only machine with the space for all the disks, and is mounted on all my machines via NFS). On Firefox I have Firefox Sync set up on all the machines. I love Sync. It synchronizes your history and bookmarks (I don't use bookmarks, but hey) and passwords (again I don't use 'em, but it's there if you do) and most other personal data to a master server; again, it pretty much means that whichever system I'm running on (even if I'm running in Windows to play a game or something) my Firefox is pretty much the same, with access to the same browsing history and stored form data and so on. The first tab in Firefox is always open at the tt-rss installation running on my web server machine (which also hosts this blog); tt-rss is just an RSS feed reader implemented as a web app. So again, whatever machine I'm logged in from, I have all my feeds available, with the correct read/unread status - it's such a silly little thing, but I can get up from my desktop, grab my laptop, go sit out on the deck (or, er, in the little boys' room) and carry right on reading the news wherever I left off on the desktop. The only awkward thing with tt-rss is that its mobile interface doesn't render very well on my creaky Windows Mobile phone's Opera browser, so I can't use it too well from the phone. Then there's the awkward little bits: I use revelation for password management, as I mentioned, and for that I simply copy the database between machines every so often. It'd be nice to have a client/server password manager (anyone know of such a thing?), or perhaps someone could write a password manager independent of Firefox which can store its data via Firefox Sync. That'd be nice. For music, there's lots of newfangled technologies like DAAP and UPnP, but I have a stuck-in-the-1980s approach: all my music files are on the RAID-5 drive on the HTPC and it's NFS mounted on the other systems where I play music. It may not be 2010 buzzword-compliant, but it works fine. For documents and pictures, I use the rather neat unison; it's just a directory synchronization tool, but a good one. I have pairs set up so I can sync my Documents and Pictures directories across desktop, HTPC and both laptops, and every few days I just run unison and run those sync operations (I could schedule this but haven't really felt it necessary yet). I could just store them on the RAID and NFS mount from the other systems, but then they'd be unavailable on my laptops when I'm outside the network. I suppose the next step is to implement them as git repos stored on the RAID, or something. That'd be interesting. Yes, I know I'd basically be doing dropbox the manual way. :) So, why Web 0.1? Well, this setup has most of the flexibility of The Cloud (oooh, cloud!) but has the (to me, at least) rather distinct advantage that it doesn't involve handing off control my data and the server end of things to some random giant corporation for its own benefit. The only exceptions here are calendar/contacts (and I'm trying to make eGroupWare work for that) and Firefox Sync, which I trust just fine because they have an excellent privacy policy and implementation (all the data is encrypted, and Mozilla cannot actually decrypt it; there's literally no way for them to access your data, only you can). It makes for a really enjoyable experience, for me: everything is very streamlined and I don't have to worry too much about any of my systems failing (all the important data is backed up between the server machines via cron jobs). If a Rawhide update screws up my desktop I just grab the laptop instead. If I get a new system or do a re-install I pretty much just install a few apps, set up Evo, Firefox and xchat to connect to the right servers, grab my Revelation database, and I've got my setup right there. I just wish setting things up this way wasn't so arcane; I gradually threw all these bits together over several years and I'm sure many of you reading this have similar stuff with your own personal twists set up for your systems, but it is something you need a bit of enthusiasm and technical knowledge to do. It may be inevitable that for most people the only way to get this effect is to rely on some company to do the server end in exchange for access to all your data, but it's a bit of a shame, really. It'd be nice if we'd somehow managed to make these kinds of setup more accessible. I think it might be interesting if Firefox Sync really takes off, and the Weave protocols prove to be robust enough to handle other types of data from non-Mozilla applications; that could be a really interesting space for app developers to play around in, with a really big potential user base. And it's a system that's done right, with privacy built in right from the start and a good commitment to interoperability and the ability to run entirely independent from Mozilla's own implementation.
Comments