3 ms·
It is really nice to see how bazel is used in the wild. It looks so clean. Why we are not using it for everything?
by matesz 4y ago
It is really nice to see how bazel is used in the wild. It looks so clean. Why we are not using it for everything?
- mort96 4y agoI wouldn't want to use a build system written in Java for non-Java code. Adding the whole JVM as a dependency just for the build system isn't worth it,
- kaba0 4y agoSurely that 5 megabytes will break every computer out there.. While we are at it, why not just strip out libc as well? It’s just bloat, right?
- mort96 4y agoIt's not a disk space thing.
- kaba0 4y agoThen what?
- mort96 4y agoIn general, I think it's good to limit how much stuff you depend on. Not in an extreme minimalist "write everything from scratch" sort of way, but in a "don't just needlessly add billions of lines of dependency code for the hell of it" sort of way. If you've decided to write a program in Java or another JVM language, you already have some JVM as a dependency, so you might as well use a build system written in it, but when nothing else depends on anything Java-related, I'm gonna need an incredibly good reason to add JVM as a dependency just to be able to use one build system instead of another. And IMO, Meson[1] is good enough, there's nothing I'm sorely missing from it and the build configuration doesn't end up as an unmaintainable mess, so switching it out doesn't seem to cross that threshold. Then there are some reasons specific to Java itself. For one, the JVM is just incredibly slow to start up, and I hate having to deal with Java-based tooling. Gradle is infuriating to work with for that reason (and others). I'm also incredibly uneasy regarding anything made by Oracle, I definitely don't want to add a critical dependency on an Oracle product just to be able to use a build system which may or may not arguably be slightly better in some areas. I know OpenJDK is a community project, but it's one that's completely dependent on Oracle. With Oracle's recent-ish hostile moves regarding LTS builds of OpenJDK, I'm even more wary than normal. [1] You may point out that Meson is written in Python, which means using Meson adds a dependency on Python. And yeah, I think that's totally fair, and I would respect someone's decision to use CMake instead of Meson to avoid adding all of Python as a dependency. But Python falls in a different category for me personally, because: 1) a lot of my projects end up with a build-time dependency on Python regardless of build systems, since Python is what I use for things like custom preprocessors and random scripts; 2) the sorts of systems I care about (Linux, macOS) tend to come with Python anyway; and 3) I trust the Python foundation way more than I trust Oracle.
- matesz 4y agoI think the problem is that there is no good cross-platform build tool and as a project grows it almost always depends on some other runtime/language. I don't want to manage Cargo.toml or requirements.txt or pyproject.toml or package.json or whatever. It's all the same stuff - just a dag of dependencies, each has it's own type and output and build pipeline and defaults and env vars etc. Bazem, from what I've heard, is the best. Maybe that is the reason for the lack of adoption - it's very good but not good enough? PS. I never used Bazel
- kaba0 4y agoBazel is good on many fronts, but it is quite specific to a google-like huge mono-repo structure, where your dependencies are also checked out into the same repo. I believe it can be circumvented, but the base model is that.
- kaba0 4y agoFor anything that doesn’t run in “humanly instant” timeframe the startup speed won’t matter - and build tools are definitely in this category. The fear for Oracle is also completely irrational, Java is probably the safest bet ever — it is not tied to processor architecture, has a specification both on the language and the JVM level (both are uncommon in other platforms), has multiple completely independent implementation and the majority of fortune 500 companies definitely have business critical infrastructure running on top of it, so even if Oracle would do something those can single handedly support the platform indefinitely. Especially that Oracle has been a surprisingly good steward of the language, and they were the ones that finished open sourcing everything.
- mort96 4y ago> For anything that doesn’t run in “humanly instant” timeframe the startup speed won’t matter - and build tools are definitely in this category. 100% disagree. Waiting multiple seconds as the tool starts up just to get to the point where it actually invokes a compiler is infuriating to me. If you don't have a problem with that, good for you I guess. > The fear for Oracle is also completely irrational Again, I 100% disagree. Have you seen how they're treating ZFS? And the lawsuit against Google shows that they consider copying their APIs to be copyright infringement, so I wouldn't bank on non-Oracle-sanctioned community re-implementations. If you want to tie your C++ code to Oracle, I won't stop you, but I won't be doing that. I'm happy that you found a build tool you like. I will stick with one that's not based on Java.
- deleted 4y ago[deleted]