3 ms·
The problem with make, is that it's yet another DSL to learn. Every single tool in your toolbox could introduce a new one, and it leads to fatigue. Task runne
by BiteCode_dev 6y ago
The problem with make, is that it's yet another DSL to learn.
Every single tool in your toolbox could introduce a new one, and it leads to fatigue.
Task runner? New DSL (make)
Test runner? New DSL (robot)
Deployement? New DSL (Ansible)
Batch spawning? New DSL (tox)
Etc
Of course, dev in half of those DSL is a total pain, because, like with most DSL, the tooling sucks: terrible completion, linting, debugging or composing experience.
So people write/leverage tools they can use with their favorite language. And why not? You have to install it anyway (make isn't default on windows, it's not even installed on vanilla Ubuntu!).
When I need a make-like tool, I use doit (https://pydoit.org/ https://pydoit.org/).
Why?
It's in Python, the language of my projects. So I can use the same tooling, the same libs, the same install and testing procedures. And so can people contributing: no need to train them. Most devs don't know how to use make (most of them are on Windows after all).
Using make adds zero benefit for me: doit just does what make does (ok, that sentence is hard to parse :)). But make adds an extra step of asking to install it while I can just slip doit among my other python project dependancies. I have to google the syntax. I can't use tab to complete names, of right click to get documentation. And if (actually when) I need to debug my make file, God have mercy.
It's not against make. It just doesn't provide enough value to justify the cost of it.
- The_rationalist 6y agoI agree with this, personally I use gradle with kotlin script which is just the normal programming language but behaving as a REPL
- vimax 6y agoMake is an extremely simple syntax for declaring file dependencies and then shell agnostic for all of the build rule scripting. If you want to use python, put this in your makefile: SHELL=python .ONESHELL:
- BiteCode_dev 6y agoI've never seen a simple make file that was not a toy exemple. Besides, the opposite is preferable: define the running conditions in $FAMILIAR_LANGUAGE, but then run system shell commands.
- yjftsjthsd-h 6y ago> You have to install it anyway (make isn't default on windows, it's not even installed on vanilla Ubuntu!). What are the odds that you're compiling software on Ubuntu and haven't installed base-devel? I mean, it could happen, but it feels contrived.
- BiteCode_dev 6y agoYou assume make is only for compiling, but it's not. It's just a task runner.