Moving to Pelican

After a good run, I've decided to retire YAWT for the time being. I found the workflow I set up to be a bit complicated, and I found myself wanting to concentrate more on writing rather than the nitty-gritty of publishing. I also got a bit tired of the lone wolf thing and I wanted to try using piece of software that other people actually use.

But I still liked the basics of my workflow. I still liked writing blog entries with a standard text editor (Emacs in my case). I still liked the idea of keeping my site under source control, as plain files. In other words, I did not want to switch to Wordpress.

Jekyll was a contender for a little while, as it is very popular (27859 stars on github as of this writing), but it uses ruby and I had heard that the templating system wasn't particularly powerful, so I passed.

Eventually I decided to try pelican, since it uses python and the Jinja2 templating engine - both of which are used by YAWT, so I figured it wouldn't be too much of a leap.

Pelican, like jekyll and several other similar pieces of software, is a static site generator. The idea is to compile your site into HTML files that you can just rsync or otherwise copy to your webserver of choice. It's an old idea; at some point in the deep past (many, many, many months ago, as these things are measured in the tech world) I used WML to compile my own website so it's not an idea with which I'm completely unfamiliar.

It does, however, go against the design of YAWT, which generated the pages dynamically. Dynamic site generators (which comprises most of the blog software world) make dynamic features like full text search and comment tracking easier. While such features are not impossible with a static site generator, they are often a bit more difficult to set up (and, perhaps ironically, require a bit more dynamism in the webpage itself, i.e. more Javascript). Of course, I can't honestly say that I was really taking full advantage of the dynamic nature of YAWT on my blog; though I had implemented full text search, I did not implement a commenting system, and there was no way to add new blog entries except by committing them to a github repository. So I figured the missing features wouldn't be too glaring in pelican (though, as of this writing, I still haven't added full text search).

I did, however, end up writing two pelican plugins to cover other bits of missing functionality that I was used to having in YAWT and that weren't incompatible with a static site generator. The first one generated article summaries that tried to honour the configured word count but which always ended on a paragraph break. The second one generated my preferred permalink scheme in parallel to the standard category based scheme.

I also wasn't overly thrilled with the available themes from http://www.pelicanthemes.com/. I ended up more or less settling for pelican-bootstrap3, but with some fairly significant tweaks. The result is a theme that I'm calling pelican-website, which is geared towards blogs that are just one part of a larger context, i.e. websites with perhaps a bit more standalone pages than average.

Anyway, we'll see how this goes. I may end up moving back to YAWT. Or I may end up writing more plugins for pelican. Who knows?