Site icon Random Thoughts

Emacs Cloud

I’m taking a vacation from my programming day job to fix Gnus/Emacs stuff.  As well as going to Utah.  But that’s finally over, and I’m Imageback on a couch in San Francisco.

I think I’ve covered the outstanding bugs now, so it’s time for new features.  Mah favourite.

First off: I’ve been meaning to implement “cloud” features for Gnus for yonks, but the right time never seemed to arrive.  But now it’s here!

Basically, my vision is that you’d open an Emacs on a totally fresh machine, say `M-x gnus’, answer a couple of questions, and then you have your entire setup on the new machine.

Using magic?  No.  Using Dropbox?  No.

Using IMAP.

Everybody has an IMAP account.  Somewhere.  Even if it’s only Gmail.

Basically, it should work like this:

There’s a special “*Emacs Cloud*” mailbox.  This contains a sequence of data chunks that will bring your Emacs/Gnus setup up-to-date.  There are base chunks, and there are incremental hunks.

The Emacs Cloud will cover a subset of the files needed: .gnus.el, News/*.SCORE, .authinfo, and .signature.  And perhaps a few more.  If you edit these files, they’ll be uploaded (in full) the next time you sync.  In addition, Gnus deltas are handled specially.  If you read a message in rec.arts.sf.written, a command to propagate that is added to a trace file that’s also uploaded.

The first time you ask Gnus to start clouding it up, it’ll upload all this data, in full, in a “base chunk”.  After this, only “incremental chunks” are uploaded.  When downloading, Gnus will download enough stuff to recreate the situation on the other side(s).  When the incremental chunks (cumulatively) become big enough that they’re bigger than a base chunk would be, a new base chunk is uploaded.

Before uploading anything, the entire chunk is compressed, encrypted (using symmetrical encryption), and then base64-encoded.

So, to return to the opening scenario: You’re on a fresh machine.  You say `M-x gnus’.  Gnus will then ask you “Do you wish to sync with the Emacs Cloud?”  You answer “yes”, and Gnus then asks you what the IMAP server is, what the IMAP user name and password are, and what the Emacs Cloud password is.  Gnus then connects to the IMAP server and downloads the data.  And there you are.

Later, during normal usage, Gnus will automatically detect updates done in other instances, and download/upload data as required.

So you get a kinda sorta virtual file system over IMAP.

Details to be decided: What kind of format to use for the chunks (something rnews-like?), and what encryption to use.  And…  er…  no, I think that’s it.

And then there’s only typing remaining and we’re done.  Unless I get a cold.  Then there’s procrastinating before starting to type.

Now, if somebody would just release an Android phone with a physical built-in keyboard, then I could just run Emacs natively on the phone, and read all mailing lists and blogs in Emacs.  And with eww, I’d never have to leave Emacs and actually use the horrible Android OS.

Exit mobile version