Blog software du jour - Hugo

A few years ago, I’d migrated from Wordpress to a static site generator for my blog as part
of migrating off a shared web host to a VPS. I’d started with
Octopress since it had been getting a fair bit of buzz at the time.
I was pretty happy with the rendered output, but the underlying software had its flaws. The
author (Brandon Mathis) highlighted some of those flaws in his post on the road to Octopress
3.0 and in various interviews I’ve
heard him give. In reality, Octopress 2 was less of a blog engine than it was some guy’s
Jekyll-based blog with a mix of plugins, tweaks, and configurations to end up with the
feature set he wanted. It made getting a nice result out of Jekyll easy, so a lot of folks
(myself included) simply forked his repo and piled our own changes/tweaks on top of it. If
you decide you want to update based on improvements he’d made, you were stuck trying to git
merge in his changes and hoping you didn’t break anything or have too many merge conflicts
to resolve as a result.

Mathis seems to have learned a lot from his work trying to maintain version 2 as something
others could consume. Version 3 aims to be modular (Octopress functionality delivered as a
large collection of ruby gems you can pick and choose between) and should better complement
Jekyll than before. It seems like it’s been a major undertaking (they’ve got ~50 gems at this
point). I suppose it’s not entirely surprising to me that they haven’t yet made a big public
announcement about 3.0’s release even though they’ve been working on the rewrite for ~3
years. Based on gem versions, it certainly looks like individual gems are “production-ready”,
but I’m guessing there are some things they’ve decided are release requirements that they
still haven’t ironed out yet. Last I’d heard that involved the theme system and probably some
documentation including a migration path from 2 to 3, but that was several months ago.

I really hadn’t intended for this to be a post about Octopress 3, but that’s certainly what
it seems to have turned into. I migrated my blog from Octopress 2 to 3 a back in February and
in June moved it to be hosted on Github Pages. I’ve found minor things that annoyed me, so I
decided to try out Hugo. It took a little bit of work to get my content
ported over and a theme tweaked to my liking, but overall I’ve been pretty impressed so far.
It’s still a very young project, but it’s blazing fast to render a few hundred posts and
gives me an opportunity to poke around in some Go code since I’ve been
looking for an excuse. Being such a young project, it’s not without its issues (documented
examples for deploying to Github pages are… complex), but it certainly has some upsides.
Downloading a single Go binary and your content is all it takes to set up a system to build
sites with it unlike Octopress where I’m likely to install a mountain of ruby stuff to get to
that point. Not a big deal for me since I’m doing a lot of ruby these days anyway, but that’s
not something I could readily hand off to someone else. I may end up coming back to Octopress
due to my greater familiarity with ruby, but for now I’m pretty sold on Hugo and may need to try it out for some other semi-static websites.