tl;dr: I migrated from Drupal to Hugo. I’m happy with it, but here are some things I found a bit weird.


Context: I have been using this site since 2001 as a disorganized shoe-box for tests, during which time, I experimented with various ways to manage a small website, using similar tools than what I used in my day-job at the time. So from plain HTML, to Perl/mod_perl, to Spip, then Drupal. For the past many years, my day-job hasn’t been about managing webites anymore (altough still web-related), and I don’t feel the need to experiment on a personal website. So I felt like exploring static site generators (SSG).

I looked at Jekyll and Hugo. My criteria were:

  • Is it simple to install on Linux?
  • Does it have a basic theme that did not require too much fiddling?
  • Does it support for bilingual websites?
  • Is it really really simple to learn?

On a whim, I decided that:

  • I’m not a fan of Ruby dependency management (gem) and Ruby performance, whereas Hugo is written in Go, which I am not very familiar with, but most Go tools I use do work quite well.
  • The Hugo website mentions multi-lingual on the front page.
  • The Hugo website was nicer (easier to read).

I probably spent more time writing the above lines than doing actual research. To be honest, Go vs Ruby was probably what tilted the balance most.

Getting started was very simple, as most SSGs seem to make it look like. Run a few commands, create a vhost on the webserver, and done.

The weird things

I then migrated a few pages of content from my old Drupal site to the new Hugo site. My old site was pretty simple, and I had been removing lots of old content that I did not feel relevant to migrate.

So here are some things I found annoying in Hugo (which probably apply to most SSGs):

  • Markdown is great, but uploading images is a bit of a pain (compared to a typical drag&drop in a normal web editor).
  • There isn’t a clear/easy way to have draft content. After all, it’s a static site, so we can’t hide content behind a login.
  • Default themes are nice, but tweaking the syntax requires diving into a custom language for which I have no other use than for this specific tool.

And finally, most people would probably use Gitlab or Github to store their content and to provide some sort of user-interface to edit content. This also requires some automation to automatically deploy to a production site (and maybe a git branch for a dev site). Which for many people might be simple, but most others, is more complicated than installing a PHP application on cheap hosting (I work with many devs who don’t even understand basic ssh or git).

In terms of layouts, using an SSG will also likely be very limited, compared to most modern layout-builders out there. I don’t need that, but I can’t think of a single client would could live without that.

The good things

There are lots of pros/cons of SSGs out there and I won’t list them all. Obviously, the resulting site is quite fast and I worry less about potential security issues for a personal website that I don’t want to spend much time maintaining.

Overall I’m happy this was an easy migration and the site has been easy to maintain since. I don’t need to upgrade Hugo unless I want to, and otherwise the generated static HTML “just works”. I can now worry even less about my personal website, and still use it as a disorganized shoe-box for tests.