Build Systems Discussion

Builder battle heats up as Make gets roasted and readers side-eye the Lua choice

TLDR: The post argues that build tools should clearly show inputs, outputs, and setup, while taking sharp shots at Make and questioning bigger systems like Bazel. In the comments, the loudest reaction wasn’t even the main argument—it was readers instantly poking at the choice to build the project around Lua.

A deceptively nerdy post about how software gets put together turned into a mini build-system cage match. The author laid out a simple big idea: a good build tool should clearly show what goes in, what comes out, and how the whole thing gets assembled. Along the way, old-school tool Make got hit with the harshest shade, dismissed as basically a pile of shell scripts wearing a fake mustache of structure. Even mighty Bazel, Google’s giant internal build machine, caught some criticism as the author argued for a smaller, more personal approach built around their own Lua-based system, civ.

But let’s be honest: the real juice is in the replies. The author popped into the comments with a breezy “hey, author here” energy, which gave the thread that classic internet vibe of “everyone be cool, the creator is watching.” Then a reader swerved the conversation into a totally different lane with the hottest side-eye in the room: why Lua? That single comment injected just enough chaos to turn a theory-heavy discussion into a language-choice drama. The subtext was loud: if you’re not even making your own version of Lua, why pick it at all?

So the strongest opinions here are less about folder structures and more about taste, philosophy, and vibes. One camp loves the clean-slate, rethink-everything attitude. The other is already raising an eyebrow at the tools behind the tools. It’s not meme apocalypse territory yet, but the mood is unmistakable: Make is getting dragged, Bazel is under suspicion, and Lua is now on trial.

Key Points

  • The article compares several build systems—Bazel, civ, clib, and Make—while focusing on what a good build system should accomplish.
  • It defines a build system as a program that transforms source code, binaries, and configuration into output files, binaries, and configuration for a target platform.
  • A central principle proposed in the article is that the inputs and outputs of each phase of a build should be made explicit.
  • The article argues that a good build system should allow inputs and outputs to be configured programmatically for different target systems.
  • The civ build system is described as using a central configurable abstraction called the sys hub to separate user build specifications from platform-specific output structure.

Hottest takes

"Hey, author here" — vitiral
"Unrelated but I’m curious" — Kinrany
"they could have selected a different language" — Kinrany
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.