1. 10
  1. 5

    Of the projects listed, I’m particularly confused by the popularity of Hugo. What was wrong with Jekyll? I know everybody loves a static generator, but is “because go” an interesting differentiator in this space?

    1. 4

      Hugo’s a ton faster than Jekyll (like, fractions of a second v. seconds faster), works on Windows (as others have noted), and integrates directly with a pile of Go web servers, including Caddy. (I in turn use Caddy because it shipped HTTP/2 and one-line ACME support way before anything else did that, and it has a very, very simple configuration format that’s much harder to mess up than Apache or nginx. ) Hugo’s also stupidly easy to migrate to from Jekyll, making it easy to try out, which is why I jumped to it so easily. Further, because Hugo’s so popular, it’s getting ecosystem effects, where some CDNs actually just natively support Hugo-defined sites sanely. That’s not a feature of Hugo per se, but that kind of thing is also why I and many others used WordPress for a long time despite preferring either MovableType or something bespoke: it’s much easier to go with the dominant technologies.

      So, some “it’s faster and easy to verify that,” some “it’s got an ecosystem now,” some “it works on Ruby-hostile operating systems”.

      1. 1

        Does Jekyll do a full rebuild of the site every time? What about Hugo?

        I wrote a Makefile for the Oil blog [1] to support incremental builds, and I thought it might have been overkill at first. But even with a few dozen posts, incremental builds speed things up drastically, and they help the writing workflow. And now I have more than a few dozen posts!

        If you have incremental builds, I don’t imagine that the difference between Ruby and Python is significant. If you don’t, then I imagine it’s probably significant. You can “brute force” it with Go’s speed.

        I also have “incremental deploy” with rsync. Makefiles + rsync FTW! :)

        (My site doesn’t use any kind of framework – it’s a Makefile, shell scripts, a few hundred lines of Python, and Markdown.)

        [1] http://www.oilshell.org/blog/

        1. 2

          Hugo not only does incremental builds, but also knows the dependency chain for templates, allowing it to only regenerate what was changed in surprisingly complex scenarios. I think Jekyll actually also does something similar, but I have a hunch it’s not as intelligent—or else, the critical path may lie in an odd place compared to Hugo. I’m not sure.

      2. 3

        I don’t fancy Go at all, but picked Hugo for Contributor Covenant for these reasons:

        • Easy for non-devs to install (a self-contained binary, all deps static linked.)
        • Multilingual out-of-the-box.
        • And yes, fast.
        1. 3

          When I tried Jekyll I found it really hard to do anything too different from a blog. And it doesn’t work on Windows.

          1. 1

            It’s a pain in the ass on Windows for several reasons, but it does work.

            The docs are bad for non-blog things but it mostly boils down to “don’t use _posts and just make your own folders.”

          2. 1

            I have tried a couple of static site generators. Especially also Jekyll. I cannot pinpoint it, but Hugo felt a lot more straight forward to use for me.

            However that’s highly subjective and may be related to trying Hugo very late. Also I’d be cautious on saying that the chosen language has much to do with.

            I get why you are surprised though, because I was myself. A lot of the time Go projects just work. The opposite is true for many kinds of Go libraries though. One is kind of advised stick to stdlib (and /x/foo) and not even go for libraries which appear to be widely used. At least I constantly stumble across strange APIs, really rough edges and antipattern usage a lot there. I think many of the libraries outside of Go are made by people who come from some other language and try to copy what’s commonly used there, while ignoring or trying to bend the Go language. However, that is rather common for young and hyped languages. I am sure this will change over time. After all it hasn’t been eight years for most of its users. :)