Website re-powered by Nikola

Website re-powered by Nikola

I switched the engine behind, to a simple but featureful static site generator, Nikola. Previously, my website was generated with a simple homebrew script which basically just glued together Jinja2, Docutils and rsync. It was really simple and worked well in my modest usage scenarios: only handful of pages, irregular updates, no commenting, no galleries and no archives. But now requirements have changed since I'm planning to start blogging regularly.

Below you can find a list of (highly subjective) reasons why I chose Nikola. And because of its highly subjective nature, this post must not be considered as a testimony of Nikola's superiority over its rivals. Chances are that it might not be the best tool for you. This post is only about why Nikola works for me.

Why Nikola?

  • It is a static site generator:

    • There is no need to run and maintain any application servers and/or databases, just place Nikola's output to a directory served by a web server and you are good to go.

  • It is well documented:

  • It is easy to install:

    pip install nikola
  • It has clean and simple command line interface:

    List all commands:

    nikola help

    To build and deploy:

    nikola build && nikola deploy
  • It is easy to configure:

    • All configuration is in

  • It is written in an elegant and clean language, Python.

  • It is freely licensed.

  • It produces aesthetically pleasing pages by default.

    • Simplicity is beautiful.

  • It is easy to customize and extend:

  • It has a fairly vibrant developer community:

    Excluding merges, 9 authors have pushed 176 commits to master and 184 commits to all branches. On master, 503 files have changed and there have been 4,856 additions and 23,025 deletions.

    GitHub Pulse June 15, 2015 – July 15, 2015

It was clear that my own script was not going to meet the new requirements without extensive development work: it lacked few quite essential features, such as tagging and dated archives. Moreover, the generation of navigation bar and blog post index was a bit ugly hack and image galleries and comments would have been nice to have. Because development of static site generators is not my wet day dream, I googled for a suitable tool and quite soon stumbled upon Nikola and decided to give a try. And so far so good, I'm pleased how Nikola meets my needs.

What next?

One thing is still missing though: reST extension for rendering ASCII Box diagram markup as PNG files. Now that I have a system with well-documented extension interfaces, it shouldn't be difficult to write a plugin for asciibox...

Update: I wrote a Nikola plugin for ASCII Box. The migration is now complete!