Readit News logoReadit News
Posted by u/milbone 3 years ago
Ask HN: Do we need another build system?
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?

mumblemumble · 3 years ago
It doesn't matter if you need another. You will receive one, anyway. There can never be enough build systems.

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.

yuppie_scum · 3 years ago
Third, merger/acquisitions will lead to multiple CICD pipelines that nobody will want to consolidate
robalni · 3 years ago
Yes, we need 83714 build systems, no more, no less. That's the only way to improve the current software situation in the world. Just joking.

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?

bluejekyll · 3 years ago
> 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

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.

TheAceOfHearts · 3 years ago
It seems weird to single out this person's project.

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.

milbone · 3 years ago
"weird to single out this person's project."

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.

steven-xu · 3 years ago
General purpose build systems need to make API expressiveness, observability, performance, and correctness tradeoffs in exchange for their platform breadth.

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

andrew_ · 3 years ago
Competition yields innovation and/or standardization. While it can also fragment, ultimately competition, even friendly or "alternative" varieties, in software usually ends up benefiting the ecosystem in the long run.
didgetmaster · 3 years ago
Do we need another X??? You could ask the same question about operating systems, file systems, databases, cloud platforms, or programming languages. There will always be someone who is unsatisfied with the status quo and will invent something new in an already established category.

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.

idlehand · 3 years ago
I 100% want people to continue spending their free time inventing new open source things. A lot of software I use on a daily basis only exists because some people decided that they could do better than whatever they were using before.
collegeburner · 3 years ago
is this just a submarine ad for BUSY? lowkey seems like it. anyway i feel like a user friendly layer on bazel might be a good solution to a lot of problems, maybe along with a port to a compiled language so no JVM dependency.