Static Site Generators with Justin Mayer and Roberto Alsina


August 25th, 2015

1 hr 32 mins 35 secs

Your Hosts

About this Episode

Visit our site to listen to past episodes, comment on the show or find out more about us.


In this episode we had the opportunity to discuss the world of static site generators with Roberto Alsina of the Nikola project and Justin Mayer of the Pelican project. They explained what static site generators are and why you might want to use one. We asked about why you should choose a Python based static site generator, theming and markup support as well as metadata formats and documentation. We also debated what makes Pelican and Nikola so popular compared to other projects.

Brief Introduction

  • Welcome to Podcast.__init__ the podcast about Python and the people who make it great
  • Follow us on iTunes, Stitcher or TuneIn
  • Give us feedback on iTunes, Twitter, email or Disqus
  • We donate our time to you because we love Python and its community. If you would like to return the favor you can send us a donation}. Everything that we don’t spend on producing the show will be donated to the PSF to keep the community alive.
  • Date of recording – August 08, 2015
  • Hosts Tobias Macey and Chris Patti
  • Today we are interviewing the core developers of Nikola and Pelican about static site generators


  • Introductions
    • <- Justin
    • Upriise <- Justin
    • Works for Canonical <- Roberto

  • How did you get introduced to Python?

    • Justin:
      • Needed a way to get order data to payment processor for commerce company

    • Roberto:

      • 1996 got involved with Linux
      • Found XForms
      • Wrote Python bindings

  • For our listeners who might not know, what are static site generators and what are some of the advantages they bring to the table over other similar systems that perform the same function?

    • Roberto
      • Remove all the effort from the computer that serves the website
      • Server runs no code
      • Smaller ssurface area for security purposes

    • Justin

      • Better performance – important for responsiveness and uptime
      • Easier deployment and maintenance
      • Easier versioning and migration
      • Can version both input and output

  • There are a number of static site generators available in virtually every language. Why would a user want to leverage a Python solution vs Ruby, javascript, Go, etc.?

    • ReStructured TeXT is best supported in Python
    • Good language for supporting various markup syntaxes

  • Most static site generators seem to have a primary focus on blogging. What is it about these tools that lend themselves so well to that use case?

    • The author of the tools shape the purpose of the tool
    • Most popular among programmers which is a demographic that is likely to have a blog
      • Workflow is similar to what programmers are used to

    • Still useful for non-chronological pages due to templating system

  • Something that struck me comparing the two systems is that they have largely the same kinds of data going into the metadata block for each post, but it’s expressed in a different / incompatible way in each. Have you ever considered agreeing on a standard and even advertising it as such so all static site generators could make use of it?

  • Challenging because of the idiosyncratic way problems are solved in each system

  • Wouldn’t end up with the same site even if metadata were identical

  • Roberto & Justin are talking, this may happen!

  • The themes in Pelican and Nikola have very different feels and one of the things that initially drew me to Pelican is the larger catalog of themes available. What are some of the challenges involved in creating a theme for a static site generator?

  • Many programmers who write SSGs aren’t amazing at HTML

  • Pelican and Nikola seem to be the most widely used projects for creating static sites using Python. What do you think is the key to that popularity?

    • Frequent updates, good documentation and large community
    • Easy to get up and running
      • Need to be productive inside of 2 minutes

    • Good first impressions are key

    • Importance of extensibility

    • Core modularity and availability of plugins

  • A lot of people have written about the importance (and difficulty) of writing and maintaining good documentation in open source projects. Nikola’s documentation is excellent. How did Nikola manage this in its development process and what can other open source projects learn from this?

    • No secrets – just do it and keep it updated.
    • Need to look at the tool as if using it for the first time

  • What are some specific examples of unique and interesting uses your site generators have been put to?

    • Justin:
      •, Debian, Chicago Linux Users, TransFX (translation house) all use Pelican
      • Embedding Jupyter notebooks and MathML rendering in posts
      • Site search plugin

    • Nikola:

      • Big adoption in the sciences (Jupyter notebook embedding supported in core)
      • Output is forever
      • Plugin to trigger internet archive to reindex site

  • Nikola’s flexible deployment architecture (e.g. the use of doit tasks) seems to lend itself to some interesting use cases. What was the inspiration for this?

    • Build was taking 1 1/2 hours, doit allowed for incremental generation
    • Doit is a generic task system. Nikola has no “main” it’s a collection of doit tasks.

  • Is there any specific help that you would like to ask of the audience?

    • Contribute themes
    • Help with reviewing issues and pull requests


Keep In Touch