Sometimes Software Is Done, or Why Hugo Why (2024)

64 eric_khun 61 8/31/2025, 9:11:48 AM commaok.xyz ↗

Comments (61)

Hendrikto · 4h ago
> Hugo is officially on the chopping block. Suggestions for alternatives welcome.

People are trying to “keep it simple” by introducing a dependency for everything. They say: “There is already an off-the-shelf solution, so why code it yourself? Just pull yet another dependency and be done with it.”.

The problem is that this is never actually the case. In reality, the dependency does 80–90% of what you want, plus 27 other things you don’t need or want.

Then you spend time understanding the dependency, configuring it, coming up with and maintaining workarounds for the 10–20% that you need but are not solved by the tool. Then you need to update and maintain the tool and its configuration, and you won’t ever actually “be done with it”.

My suggestion: Don’t introduce a huge and complex dependency for a static blog with a few dozen posts. When what you want is just compiling a few templates, just do that: Choose a templating language, create a few templates, write a Makefile (or Meson build script, or whatever else), and actually KISS.

ApeWithCompiler · 2h ago
I had a similar experience with Hugo and the PaperMod theme. Such a large tool with all the dependencies to then just fail because of version mismatches with the theme.

In the end I sat down two weeks and wrote my own generator in python for my blog. Even wrote my own markdown parser for it. It's a sub optimal implementation for sure, but at least it's all my faults and I may fix them.

madduci · 2h ago
If you rely on Hugo, then why don't you use a versioned instance of it? You should.not always run the latest version, if you don't want to.change things that are broken.

They keep using the version 0.x.y, which means, they can at any time break things and don't care about backwards compatibility.

I use versioned instances of Hugo and had in all these years zero issues. I can simply test the new version, then do the required changes and adopt it for my build.

tphummel · 1h ago
I’ve been using Hugo for 7 years on multiple static sites. It has been a joy to learn and to use. I struggled with Jekyll previously along a number of the dimensions OP lists - complexity in the tool chain when there are weeks or months between new posts.

As a number of others have mentioned - pin the version of Hugo you use for a particular project. I do this and it works great for stability. Then I upgrade when I have the time or the need or I want to standardize across projects.

tga · 6h ago
The alternative I'd suggest to someone using Hugo for a simple site/blog would be https://www.getzola.org. Single binary, batteries included.

Does anyone have a better go to?

bovermyer · 5h ago
I switched from Hugo to Zola for a reason similar to the author's.

I've been using Zola now for years, and I'm really happy with it. Good features, and nice and stable.

samwho · 5h ago
This is what I use and I’ve been very happy with it for many years. It hasn’t caused me any trouble and as far as I can tell it hasn’t changed in the whole time I’ve used it.
asimpletune · 5h ago
I’ve used Zola for years and I love it. Good maintainer, does what it needs to, and it’s fast.
NeutralForest · 5h ago
I've used Zola and it gets the job done in a few commands, nothing else I need from it tbh.
krapp · 5h ago
I don't know about "better" but I like Nikola (https://getnikola.com)
AbuAssar · 4h ago
I'd take Rust over python any time!
nickjj · 5h ago
By biggest gripe with Hugo is it doesn't bubble up where problems are.

I posted this last year: https://github.com/gohugoio/hugo/issues/12693#issuecomment-2...

It makes troubleshooting really tedious.

As for updating versions safely, I highly encourage anyone to write a little tooling to build your site with version A and version B into different directories and then diff them to make sure nothing unexpected changed.

That is something I documented in a very long post where I went over converting my 500+ post Jekyll site to Hugo at https://nickjanetakis.com/blog/converting-my-500-page-blog-f.... If you search the page for "Updating Hugo Versions" you'll find the section.

privatelypublic · 2h ago
Did you also do wordpress to jekyll and/or hugo?

If so, huge thanks!

nickjj · 1h ago
Nope, I started with Jekyll sorry.

I have worked with WordPress in the past but not for my site.

Milpotel · 6h ago
That's exactly my experience with Hugo and why I stopped using it.
akshitgaur2005 · 5h ago
What do you use now?
Milpotel · 1h ago
I switched to Antora but recently shut down my homepage after more than 20 years.
hn_throw2025 · 4h ago
I found embedding some React into a Hugo site involved a few workarounds…

I will be trying Astro for the next site.

AndrewDucker · 4h ago
This is exactly why I prefer a hosted solution.

I have something to say, I just go to https://www.dreamwidth.org/entry/new and write, hit "Post" and I'm done. No need to worry about whether the software is up to date, deal with security issues, etc. That's all someone else's problem.

privatelypublic · 2h ago
Eg, decap cms?
hn-ifs · 5h ago
> I am only inspired to write a blog post every few months...

> Build failures of my static site, which has maybe a few dozen posts...

> Suggestions for alternatives welcome...

Plain HTML? No build process needed.

PaulRobinson · 4h ago
As others have pointed out, there are good reasons not to do that.

However, rolling your own SSG should take a few hours. You can look at features and CHANGELOGs of others, and decide if any of those sound neat to implement in your SSG, but to be honest, you can probably build something with a markdown converter or a liquid template library and `make` in about as much time as many SSGs require you to configure.

Want a specific theme from a well known SSG? If the license allows, port it.

I've been using hugo for a while and I'm running into similar issues. Considered jekyll and many others, but I've kind of resigned myself to spending a couple of evenings this week just writing my own very basic tool, probably based on a Makefile and some standard command line tools, and maybe a small amount of custom code that won't change under me (it'll be in my private repos).

jraph · 5h ago
Plain HTML isn't very workable for a blog. You'd have to maintain:

- RSS/Atom

- the post list

- next / previous links

by hand (and remember to fix the link tests if you change some post title)

And if you want to change the page structure layout a bit, you'll have to update all the posts by hand as well.

You could do without all this but that means it's difficult for readers to follow what's your writing.

marginalia_nu · 5h ago
The argument for a SSG is to make it possible to e.g. update your header or footer without this turning into a week process of changing thousands of blogposts.
oncallthrow · 4h ago
find -exec sed
jraph · 3h ago
It is definitely possible, and it's possible to copy paste each blog post in a manually-maintained RSS.

But one will need to convince me that it's less annoying than having to use some sort of blog engine, static or otherwise.

You can write scripts to automate some stuff, but you are just easing into using a custom blog engine if you do this.

zeeZ · 4h ago
What do you gain from compiling it yourself and never updating versus picking the binary you consider done and never updating that?
ajd555 · 2h ago
I've been using Astro for close to a year, and so far it's been quite enjoyable. I hope it doesn't follow in Hugo's footsteps
omnimus · 1h ago
I think the “stable” straightforward flexible static site generator in JS world is eleventy. Astro is anything but that. It is made with quite specific vision and gets breaking changes all the time.
ajd555 · 17m ago
I luckily haven't felt that, but I'll look into eleventy, thanks!
m82labs · 4h ago
I had a similar situation using Jekyll (before Docker) so I wrote my own SSG, and its compatible with Jekyll frontmatter.

Its been a great experience and completely solid to use. Need a URL shortener feature? Code it into the generator. Want some static search? Code it into the generator. Want to generate a newsletter for certain posts? Wire your generator up to SES and do it.

TheWiggles · 6h ago
HVM: Hugo Version Manager is an interesting project worth a look.

https://github.com/jmooring/hvm

Helpful for switching between different versions of Hugo.

Sesse__ · 6h ago
Every problem in computer science can be solved with another layer of indirection.

(And in particular, every design failure related to backwards compatibility can be solved with a virtual environment, evidently)

HexDecOctBin · 5h ago
At what point in this ever deepening well of abstractions does one simply use Wordpress?
angulardragon03 · 5h ago
Hugo is a static site generator, so I can host my site anywhere that can serve an index.html.

With Wordpress, you have to worry about PHP, a database, etc. It’s the difference between being able to use GitHub pages, and needing either a VPS or shared hosting

HexDecOctBin · 5h ago
> Hugo is a static site generator, so I can host my site anywhere that can serve an index.html.

As long as you have access to a computer that can run Hugo Version Manager (and who knows what else).

I am being facetious, obviously.

noAnswer · 5h ago
He knows that. :-)
GuestFAUniverse · 2h ago
That's why I stopped even using GitHub pages. The amount of (pseudo-)maintenance is unbearable. Seems to counter the idea of a near maintenance free static blog.
mediumsmart · 5h ago
I found Jekyll some time ago and was done.
altbdoor · 4h ago
I started with Jekyll, and tried out Hugo since there was all the hype.

I didn't had the same issues as OP, but Hugo docs are so confusing that I just gave up and switched back. Jekyll works OK for my simple needs, and still does.

For those interested, there was also a partial-Jekyll-Golang-port, https://github.com/osteele/gojekyll

politelemon · 3h ago
I've stopped using it for the same reasons outlined in the blog post.
imron · 5h ago
I've been using Hugo for the best part of a decade and I love it, it's fast reliable and does exactly what I need.

Even better, it's a standalone binary....

...because I'm still on version 0.18.1, and it was easier to just keep a copy of the binary in ~/bin than deal with all the breaking changes :-D

akho · 3h ago
Why do they update Hugo if they were happy with past versions? Static site generators can be, you know. Static.

Are you supposed to update these things?

wodenokoto · 5h ago
I am also looking for an alternative. I write a lot of my posts in Jupyter Notebooks, so I've been tinkering with using Quarto, but I simply don't see what it does for me in this regard. The label on the box says it is great for notebooks to blogs, but it's unclear what it does that makes it great for this.
dragonstyle · 5h ago
Here’s a pretty good summary of the features Quarto includes around publishing a blog.

https://quarto.org/docs/websites/website-blog.html

hn-ifs · 5h ago
I love Quarto. I used to use pandoc but Quarto has some nice extras and managed things I would have to manually set up. I much prefer writing plain text with minimal markup in a simple text file rather than fighting with a GUI.
marginalia_nu · 6h ago
Yeah this is my biggest gripe with hugo. There's this inexplicable feature churn that is always breaking stuff for no obvious reason, often it's not even communicated that things will break or how to fix it.
dvh · 6h ago
Fork the version you liked, fix security issues discovered since, remove unused features, clean it up, then rename and publish.
marginalia_nu · 6h ago
I'm not even sure why security fixes would matter in a SSG where you control the input.
ch33zer · 5h ago
Because a malicious ssg could expose private files (private keys etc) at a hidden url only the attacker knows to scan for, drop malware that grants them non-static file access, or really anything that other compromised binaries can do.
cosarara · 5h ago
But we are not talking about a malicious ssg, we are talking about a vulnerable ssg that somehow needs to be patched. Unless your ssg connects to the internet, this is a non issue.
delusional · 4h ago
> Unless your ssg connects to the internet, this is a non issue.

This, but for all software ever. In the nightmare realm we've apparently decided to settle down in we forgot the one way to make actually secure software: Run the complicated parts somewhere offline.

A security vulnerability is much less scary if the computer can't communicate with anything. It's the only way for us to get out of the pit of infinite work we've dug.

marginalia_nu · 5h ago
If the author of the SSG is compromised, I doubt they'd push fixes for their own exploits...?
iamtedd · 6h ago
(2024)

It's been over 18 months. Has the author switched?

littlestymaar · 6h ago
From the page HTML: <meta name="generator" content="Hugo 0.122.0-DEV">

The current Hugo version is 0.149.

So it looks like the author has indeed gone according to his short terms plan:

> And in the meantime, I’ll just compile Hugo myself from source, never update it, and live in the ever receding past.

AbuAssar · 5h ago
imagine if `ls` or `grep` or `cat` kept growing in features and break your memorized commands and parameters every now and then for the sake of improvments!

yea I agree with OP, some software are better done.

fanf2 · 3h ago
lawn · 2h ago
My suggestion is to simply build your own static site generator.

It's more upfront work of course, but you don't have to be bothered with the tool changing underneath you.

rendall · 5h ago
I was thinking that a webpack (or similar) config that converts markdown to HTML (or your favorite framework) is good enough and maintainable?

What does Hugo et. al. add on top of that?

empiko · 5h ago
In my experience, a custom setup like you described is the most robust way to do a long term blog. You basically want to decouple from any tech stack, staying with the bare minimum that you need to publish. That's why you can still see custom HTMLs from 30 years ago while many things published in 2010s are already gone.
bananapub · 5h ago
it's definitely annoying, but it doesn't have to be your problem - just pick a version and then use that forever. go is annoying in many ways but this isn't one of them - you should be able to just rebuild a particular Hugo version for ~ever.