Computers, Science, Technology, Xen Virtualization, Hosting, Photography, The Internet, Geekdom And More

The Blog Capacitor

Posted on | September 28, 2007 | No Comments

How would you like a free service that let you easily show all revisions and edits (versions) of your blog posts? I would. Blogging software (even the all mighty WordPress) does not come ‘out of the box’ with extensive version control. How would you like to never worry about losing your database ever again? Read on :)

I use the ext3cow file system for many things. The ‘cow’ stands for copy on write, simply put, ext3cow lets you store and access your files ‘as they were’ at some point in history. You do this by accessing your file by its name, then ‘@’, then the date stamp that you want. An example would be something like file.txt@123456789 , as opposed to just file.txt. The @ is fondly called the ‘flux capacitor’ by those who write time traveling tools to manage these types of files.

Lets say you were writing a book. We’ll aptly call this book ‘book.txt’, because, well, its a book and you are using a computer to write it. Lets say, you did a cut and paste operation and completely screwed up chapter 3, not realizing your mistake you hit ‘save’. If you were using ext3cow, you could very easily travel back in time, grab the file just prior to your mistake and copy the un-screwed version of book.txt into the present. Neat, yes?

I fondly refer to anything that changes often, but not obviously as ‘rose red’. The network of blogs active today is one very, very big ‘rose red’. I’ll post (usually) 3 – 5 articles per day, then continue to edit and refine them over the course of a week. Many people edit in a similar way, its ideal because you quickly become snow blind to mistakes. Other times, we just find ways to refine things.

Anyone who blogs fears database corruption more than anything in the world, even monsters under the bed are not as scary as a corrupt table. What if, through the magic of pings and RSS, every version of every post that you ever wrote was stored somewhere easily retreived? Even neater, what if you could login to such a place and click a button to generate SQL import files from any period in time? Or, perhaps you’d just like to offer neat links on your blog to allow your readers to see previous revisions of your work. All of this is possible.

Here’s the process :

You write a post. You ping this service, the service collects your article via RSS and stores it, taking a snapshot. If you update your post, a new version of your text is saved, however you can still access the old version. Fortunately, I’d only have to store one file for you, with very little overhead if I used ext3cow.

The good news is, I have written all of the tools for ext3cow to do most of this work, released under the GNU GPL 2 license. All that I need to develop is the ping/trackback API and a way for bloggers to login and do neat things. My friend Paul who runs ectio has also expressed interest in working on this.

Some plugins become possible when this is done :

  • A plugin to push text when blog software autosaves drafts, with options to revert.
  • A plugin to re-populate your database if corrupted or vandalized.
  • A plugin to show previous versions of your posts

My service would allow people to search ‘back in time’ for what people were blogging about. Once running 3 – 5 years, this would be neat. You could see what was popular on March 9, 200(x). Not quite a web archive, much more :)

I’m not an expert on writing WordPress plugins, but I did find some more sensible ping plugins that I could use as a base released under OSI approved licenses. The server-side stuff would be rather simple.

One of the most interesting things about ext3cow is that it does not use much room to save revisions. This means, 250 MB worth of space could easily hold a few thousand posts with 5 – 10 versions of each post. I could offer that much free, a small charge if you needed more (hey, I gotta buy the drives, gimme a break!). I’ll store these on a commercial RAID for redundancy, this would make my new service a vault, more or less.

I’ll write more when I have the system designed. I’ll make everything but our front end for the user experience completely free (GPL), the plugins for WordPress will have to remain whatever license the building blocks that I pick used.

Sometimes, an idea is neat enough that you just need to do it :)


Leave a Reply

  • Monkey Plus Typewriter
  • Stack Overflow

  • Me According To Ohloh

  • Meta