(no title)
entelechy | 6 years ago
Currently we marketing it for C++ but it can be used for any language that is supported by Buck.
entelechy | 6 years ago
Currently we marketing it for C++ but it can be used for any language that is supported by Buck.
Game_Ender|6 years ago
entelechy|6 years ago
Here a couple key points:
- Buck and Bazel are very similar.
- Buck currently models C++ projects better [1].
- Buck leverages remote caches currently better than Bazel [3] - Bazel is very easy to install
- Bazels "toolchains" make it very easy to onboard newcomers (to any project and language) but also ensure the build will run as expected.
- Bazel is less opinionated and more extensible than Buck.
In fact Bazel is so powerful that you can have Buildfiles that download a package manager and use it to resolve more dependencies. This is great to get things off the ground, but makes things less composable because the package manager won't see the whole dependency graph. As a result you might get version conflicts somewhere down the line.
To summarize: I think having a very opinionated build-system is easier to reason and scales usually better.
Communities with very opinionated packaging and build-systems are proving this by having orders of magnitude more packages that eg. the highly fragmented C++ community where configuration is prefered over convention.
> Have you considered offering support in Bazel for your package manager?
Yes we did. As soon as this feature [1] is implemented we will have a 1:1 mapping for C++ Buck Projects and Bazel. Then after a small (automated) refactoring of our Buckaroo packages, you should be able to build any package from the Buckaroo ecosystem with either Buck or Bazel.
Btw. The cppslack community is attempting to create a feature matrix of various build-systems here [2]
[1] https://github.com/bazelbuild/bazel/issues/7568
[2] https://docs.google.com/document/d/1y5ZD8ETyGtxCmtT9dIMDTnWw...
[3] https://github.com/bazelbuild/bazel/issues/7664