3 ms·
IMHO the greatest falsehood I believed about build systems was: - If build system X is used, people will read its documentation and write build rules according
by yongjik 6y ago
IMHO the greatest falsehood I believed about build systems was:
- If build system X is used, people will read its documentation and write build rules according to the documentation.
No, people will just copy what's already there. And if it pulls in 35 external dependencies, compile 500 unnecessary files, and fails 25% of the time because of race conditions between external dependencies, people will add "Note: if build fails, run again."
Sigh.
- dcow 6y agoAnd then there's `make`. I've seen a philosophically correct Makefile maybe 3 times in my life. Most of the time I see people making every target .PHONY and using patterns to save keystrokes rather than match multiple files. You'd tend to think people learn over time but no. It's gotten worse. Right when you thought the industry was on the cusp of a build revolution the go community decides to push an old tool that most people can't utilize even 3% of when paired with `go build`. I kinda blame the go ecosystem for pushing Makefile adoption when they already have a caching build tool just so the maintainers didn't have to give the compiler a polished UI. Simplicity at the cost of functionality even if it's simply broken amirite? Sigh.
- ancarda 6y agoI've never seen Go projects use Make? When did this change happen?
- dcow 6y agoThe golang project itself is a perfect example: https://github.com/golang/go/blob/master/src/Make.dist https://github.com/golang/go/blob/master/src/Make.dist
- rumanator 6y ago> and using patterns to save keystrokes rather than match multiple files. To be fair, I'm still yet to see a document clarifying how to use patterns with make.
- ben0x539 6y agoI think this is an argument that the user interface of a build system needs to go out of its way to make it hard to misuse it. It's not realistic to believe that all users will find and read documentation from start to finish any more than you can expect them to read EULAs. I'd love to really grok the philosophy of every tool I use so I can apply them in the most intended and synergistic way possible, but things keep getting in the way...