Hacker News new | ask | show | jobs
by herio 1778 days ago
I do agree with PHK on his feelings about autotools. It is a cargo cult dumpsterfire, unfortunately it mostly works and nobody wants to go in and fix it. Also suffers from changes breaking stuff for somebody somewhere who insists that modern software should run on his ancient OS running on even older hardware.

For me personally I have a bit of a dislike for GNU software in general because of the same type of things. It's all autotools and legacy code being dragged around. Don't get me wrong, I fully appreciate the GNU project and how much they have done; I just don't like their code very much.

On a larger scale the Bazaar suffers from not having managers paying people to do boring things. This leads to boring things generally not being done as much, people on their own wants to work on interesting things.

6 comments

Yes, there's a lot to be said for blowing away the cruft every now and then. At least autotools has been in a steady retreat since this was written and I don't see it too often now. It's perhaps noteworthy that this article coincided with autotools development winding down, after 2012 it didn't have a release until 2020 (https://lwn.net/Articles/834682/).
Take a look at Meson[1]. A lot of GNU, Gtk, GNOME and Freedesktops related projects have migrated or are migrating. The C, C++ and also Rust people use it.

I've started reading the Autotools manual and turned away, to much bloat and hard to read code. Meson popped up and I immediately went that direction.

[1] https://mesonbuild.com/

My favorite thing to see when I download a project is a build system that consists of a single 6 line Makefile. Granted this usually means the project only has a handful of files to manage and it does run out of headroom as the project becomes more complex, but those build systems always work on the first try and finish quickly.

Sure it means I would run into complications on a 30 year old AIX system with some old defunct C compiler, but that's a tradeoff I'm willing to make to simplify the build process.

I recently came across a project with no external build system at all. Just a perl script which mimicked enough of the functionality of a build tool to get the job done. Basically "which files need rebuilding, just rebuild those". It's actually rather trivial when you look into it. Plus Makefile syntax is so bad it actually makes perl look like a hot new language.
That works fine if you’re only building for Linux. If, however, you want to run on BSD, you need something like autotools.
A short Makefile means you aren't leaning on OS specific quirks and you have a short dependency list. It usually compiles on BSD just fine.

If you aren't including headers from the "linux" directory a BSD system is almost identical to a Linux system as far as C is concerned. Common libraries like OpenSSL, zlib, libpng, and so forth are identical as well. pkg-config exists on modern BSD systems and takes a lot of the guesswork out of dependencies.

As someone who used FreeBSD and Interix/SFU/SUA for a while, those were always the projects I hated the most. Just get over yourself and use autotools. Sure, your build will be a little slower, but guess what: it works.
> the Bazaar suffers from not having managers paying people to do boring things

That does definitely not work, see enterprise software

Nothing particularly against managers, but that idea hits me a bad way. Managers have a tendency to want more and more in their management pool. Either people or products, if they can't get clients. So... I don't see that being a good path.

Granted, developers often do this, too. If you can find a way to align incentives with users, I'm all for it.

Funny thing is that the cathedral was meant to represent GNU, vs the Bazaar that was Linux.