We already have serious incompatibility problems with projects using autotools vs CMake vs Meson vs GYP vs Boost.Build vs SCons vs ...
and now we throw BUSY (https://github.com/rochus-keller/BUSY/) onto the pile.
Why do people continue to invent new build systems?
Why should we care that BUSY is statically typed?
It's an inevitable consequence of two basic natural laws. First, every development team will eventually come to dislike some core feature of their current build system. This is true regardless of the build system. Second, developers like to scratch itches.
Build systems are only worth it if they are tiny and already included in the repository (or so common that everyone has them, like make) so that when I build the project, all code necessary to build the project is built (please no download) and executed.
Something like: build.sh executes `cc build.c -o build && ./build` which then builds the software; it's also pretty important that the build system is written in the same language as the rest of the project so that you don't add another dependency just to be able to build. The question is just whether you need that. Is your software really so complex that you can't just build it with a small script or Makefile?
I tend to believe this, but to me the issue with all build systems is the point where you need to build multiple languages in a single project.
For this, there aren’t a lot of great options, and the ones that exist are complex. Maybe they need to be complex, but that lowers the uptake of those tools.
I don't think build systems have peaked yet, so it's good that there are people willing to explore and experiment with new or interesting ideas within that domain.
If the author reads this: kudos to you for being willing to try experimenting with your ideas.
Just because it was advertised today; you can take any of these projects with funny names advertised during the last few weeks. Please or Buck or whatever.
By narrowing breadth, most often by targeting only one ecosystem[1] or making correctness tradeoffs[2], new build systems can be way more expressive and performant. For now.
They’re also fun to write because DAGs are parallelism are cool problems to think about.
[1] e.g. only targeting one language allows you to use that language instead of a generalized DSL to describe your build graph [2] e.g. abandoning sandboxing altogether and using manual invalidation or just trusting the user
I invented a new kind of database https://www.youtube.com/watch?v=OVICKCkWMZE because I was dissatisfied with existing ones that required you to create many indexes on big tables in order to get reasonable query speeds. That doesn't mean my system will gain instant success over Postgres, MySQL, SQLite, SQL Server, etc.