Moving to pelican
In the end I was quite disappointed by ikiwiki, which I’ve used for the first relaunch of the techblog.
Ikiwiki is very simple to use. Create a new file, put content inside, git add and git commit. That’s it, the “compiler” is run in the background, and also the upload to the server is taken care of.
One useability issue I had with ikiwiki was that there is no preview mode. This means you commit your edits blind, check on the webserver what it looks like, the correct the typos, markdown issues etc. The repeat the whole git stuff anew, adding one more commit. While it’s not a big deal for git to handle this, in practice it’s not the way I’d like to work.
One other issue I had, was that ikiwiki uses file’s mtime to determine the published date of a post. This is not really what I want, as I often write the posts (some) days after doing the practical testing. I wanted to be able to determine the publishing date of the posts bymyself (defaulting to mtime is fine if no date provided).
I found two other wiki compilers:
- SecondCrack, PHP-based, and written by the creator of Instapaper
- Pelican, Python-based
First tried SecondCrack, which comes with a preview area. From this area, posts have to be validated until they become visible in the productive area. But I stumbled accross some PHP syntax error warnings during site generation. As the code is unmaintained since 2 years, I prefer to drop this tool.
Pelican has no such staging area (though there seems to be a “draft” status), but it has the ability to generate a test site, or a productive site. So the whole preview and testing stuff can be made on a local generated site, and when everything is fine, the productive site can be generated.
Talking about generation… this is done through Makefile, so the whole process is only about a “make html” call. “Make publish” will generate the HTML files using the productive settings, and “make rsync_upload” will do what we can expect of it
As usual with python, a mini-webserver can be fired on port 8000 to test the local site through http: protocol instead of file: . This webserver also watches the files, regenerating on the fly upon saving - only a refresh in the browser is needed to see the changes.
Switch was quite easy, as the markdown is compatible with ikiwiki’s Syntax. There are still options that I need to tweak, but so far I’m quite happy with Pelican.