My personal holy blog-publishing grail
I’ve discovered the blogging CMS system I’ve been wanting for a very, very long time. I tried to create something simple with my Fikus project, but I see now that I kind of missed the point. I was focused too much on building a web-enabled admin and editor for my content that I forgot to think about what would be the best way to actually deal with blog content.
Blog content should be easy to edit. It should be in a familiar markup language to the author. It should be able to be backed up, easily placed into templates that are editable by technical and semi-technical people alike. It should be organized logically, and you should be able to create RSS feeds easily. Editing the content should be as easy as firing up the content creator’s favorite text editor and going from there.
Notice that I didn’t say anything about a “database”. To me, blog content is just a collection of documents, and not particularly worthy of being considered relational data. Sure, documents may related to one another, but by and large blogs consist of singular posts organized by dates, categories, or tags.
The astute members of the Ruby community may see where this is heading. If you don’t already know, Tom Preston-Werner’s jekyll project fits the requirements I outlined above perfectly.
Your content is organized as a series of text files in either markdown, textile, or html format. You can add some YAML front-matter to the beginning of the document to serve as metadata, describing the title, any permalinks, categories, tags, etc. Running jekyll actually combines your data with layouts (using liquid for templating), and generates static files. There’s also a rack-jekyll gem if you want to deploy the site and run it as a rack application if you don’t want to stick with the static files (or if you have a read-only filesystem in the case of deploying to Heroku).
I’m working on converting over my one remaining Wordpress blog over to jekyll now. Then I can totally uninstall PHP and be done with it! From there I’m going to work on figuring out neat ways of handling social network notifications for Twitter and Facebook, then convert a Tumblr blog or two. I encourage you to check out jekyll if you need something simple, quick, and fun.