Review of Python Open Source Static Site Generators

I used 5 different static site generators to generate this new blog. This is a review of those site generators. I decided to test out the top 5, in reverse order of their popularity on GitHub, as measured by the number of stars. The one I eventually chose is: Pelican

Python Static Site Generators

Pelican

Pelican Github Repo 7,308 stars on Github. It's the most popular of these that I reviewed.

  1. Docs
  2. Quickstart
  3. Startup: This seemed to be a fairly straightforward quick start. You can view the site via the built-in server. It was pretty easy to get started.
  4. Getting a basic site going: Fairly easy. Run a startup script, make a few markdown pages, and modify them.
  5. Themes: Pelican uses the Jinja templating engine. I'm not a front-end developer, so templates are so not my thing, but it does seem fairly straightforward to create new themes.
  6. Open Source Community: This project has 303 contributors, and the most recent commit was 18 days ago. It is licensed under the GNU Affero GPL 3.0. It seems moderately active.
  7. Final opinion: I'm going with this one. I'm sure I'll have more to say as I dive in and keep working with it (I expect to use it for several sites eventually.)

Cactus

Cactus Github Repo 3,138 stars on Github

  1. Docs & Quickstart are on the main github page
  2. Startup: They suggest using easy_install, but I haven't used easy_install - I always use pip. You can use pip, and it installs a bunch of stuff, including: backports-abc, tornado, argparse, colorama, keyring, boto, Django, django-markwhat, colorlog, markdown2 - kind of surprising - I didn't expect that. I know that this uses Django templates, but it seems weird that it installs the whole Django package.
  3. Getting a basic site going: A little weird. I ran into a socket error, which might be a vaguary of Windows subsystem for Linux. But as I dove in, I realized that I'd have to basically write HTML - which for me, is part of the reason I'm using a site generator! Markdown is so much easier to use than Django templates from my perspective. You can do a blog w/o HTML, but you'd really have to spend some time editing and creating HTML/CSS first, before the blog would really work. I also don't really see a theme management system.
  4. Open Source Community: The project has 41 contributors. The last commit was several months ago, and it is definitely less active than Pelican. The license is permissive: BSD 3-Clause
  5. Final opinion: I'm nixing - too much template work needed in HTML/CSS, and it feels more unweildy than Pelican. The docs are not as well organized as Pelican.

Lektor

Lektor Github Repo 2,518 stars on GitHub

  1. Docs
  2. Quickstart
  3. Startup: There are a bunch of libraries needed for this to work, and the installation via pip is, as they say, highly discouraged. This isn't a big deal, but I do prefer to control my virtualenvs myself. But I couldn't install it the way they suggested - I ran into an error. And then I ran into a problem where it would only install if I did sudo, and I'm not really into that, so I decided try pip, and see how it went. It did install fine via pip.
  4. Getting a basic site going: I started a project, but then ran into an error. It's possible it was pip, but I don't know, so I got stuck. Basically, if someone who is pretty familiar with python (Um, I currently make my living at it) can't get this installed and running, there's something wrong. It could be a weirdness with Windows Subsystem for Linux, so I can't necessarily blame them, and it looks like it might be a cool package, but I think they are so focused on OS X, that they might not be tracking how it works with other systems.
  5. Open Source Community: The project has 56 contributors, and the last commit was 19 days ago. It's only slightly less active than Pelican, definitely more active then Cactus. It aslo has a permissive BSD-3-Clause license.
  6. Final opinion: I'm nixing - I couldn't get it going. I don't really have time to do detailed troubleshooting, or submitting bug reports at this point. I'm kinda bummed, because the admin interface looked kinda cool, although then again, I'm actually not all that interested in an admin interface. I'm looking for a simple package.

Hyde

Hyde Github Repo 1,429 stars on Github

  1. Docs are on the github page.
  2. Actually, I'm nixing this before I really even start. There's no python 3 support, and the last commit was 18 months ago. The last ticket was submitted more than a year ago, so I'm assuming this project is pretty much abandoned.

Nikola

Nikola Github Repo 1,292 stars on Github

  1. Docs
  2. Quickstart
  3. Startup: There are a LOT of packages in Nikola[extras]! For instance, it installs Jupyter! Anyway, it was easy to install it with pip (I love pip.) And there is a nice startup script which creates a new project with demo content.
  4. Getting a basic site going: The demo site was easy to build, and I can see the power of the underlying structure of the project. There is a small theme library, and Nikola seems to use both the Jinja2 and Mako templating languages. It uses It uses reStructuredText instead of Markdown. The server doesn't seem to work well - perhaps it needs more memory than my system is giving it - it took forever to load a page.
  5. Open Source Community: The project has 162 contributors, and the last commit was 3 days ago. It seems like a fairly active community. It's licenced under the permissive MIT license.
  6. Final opinion: I like Nikola, and it is definitely a close second to Pelican. What sealed the deal though, was that it uses reStructuredText instead of Markdown. I use Markdown almost every day, and I know it well - I don't want to have to keep track of another type of structured text language. If it were using Markdown, I might have picked it over Pelican.

links

social