I switched the engine behind http://tjjr.fi, 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.
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:
To build and deploy:
nikola build && nikola deploy
It is easy to configure:
- All configuration is in conf.py.
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.
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!