On Wednesday, 12 December 2018 at 22:41:50 UTC, H. S. Teoh wrote:
And here is the crux of my rant about build systems (earlier in
this thread). There is no *technical reason* why build systems
should be constricted in this way. Today's landscape of
specific projects being inextricably tied to a specific build
system is completely the wrong approach.
You could reduce all this language-specific stuff to a way to
generate a description of what needs to be built and what
programs are suggested for doing it. This is quite a layer of
indirection, and that means more work. "I can do less work" is a
technical reason.
Ensuring that your output is widely usable is also extra work.
There is also a psychological reason: when you're trying to solve
a set of problems and you are good at code, it's easy to tunnel
vision into writing all the code yourself. It can even,
sometimes, be easier to write that new code than to figure out
how to use something that already exists (if you think you can
gloss over a lot of edge cases or support a lot fewer pieces, for
instance).
This is probably why Dub has its own repository instead of using
Maven.
Seriously, building a lousy software project is essentially
traversing a DAG of inputs and actions in topological order.
The algorithms have been known since decades ago, if not
longer, and there is absolutely no valid reason why we cannot
import arbitrary sub-DAGs and glue it to the main DAG, and have
everything work with no additional effort, regardless of where
said sub-DAGs came from. It's just a bunch of nodes and
labelled edges, guys! All the rest of the complications and
build system dependencies and walled gardens are extraneous and
completely unnecessary baggage imposed upon a straightforward
DAG topological walk that any CS grad could write in less than
a day. It's ridiculous.
If any CS grad student could write it in a day, you could say
that having a generic DAG isn't useful or interesting. That makes
it seem pretty much useless to pull that out into a separate
software project, and that's a psychological barrier.