Buck2 is IMO much better than even Bazel is from a design POV, because it actually cleanly separates all user rules from the build engine, and has a coherent modern design around a sound theoretical basis. Neil, one of the leads and author of this post, has written many build systems, so it's not like he's unaware of Bazel; his taxonomy of build systems and ones like Bazel in "Build Systems a la Carte" is worth reading even for Bazel users. It also has a snappy UX and is fast on the command line, which Bazel still lags at a bit. Bazel has all the mindshare, though, and a lot of good features and libraries. But Buck2 is in a different league from Buck1 completely, and in many ways even from Bazel, IMO.
Even then, it's not like rewriting a billion lines of BUCK files to use Bazel was even practical. Realistically any solution had to have a direct migration path from Buck1 without rewriting everything. I don't even work there, this is just pretty obvious from the design constraints and talking with the dev team, though. Frankly, I'm pretty impressed they were both able to meet the goals they had (migration from Buck1, better performance, more extensible), while still jam-packing the thing full of good design decisions and features like they have. It's good work.
(I am a pretty happy, non-Facebook user of Buck2 already, FWIW.)
I hope Buck2 is better. Like I said, I have no experience with it.
My issue is more organizational. Meta, as a company, in my experience, does not put in sufficient investment to build a mature, robust open source project with few exceptions. Even things like the www test infra, which are core to the company when I was there had ~1 FTE SWE. That's not open source but you get my point. Buck (and Thrift) seem to have been woefully underinvested for years. Thrift was originally an intern project at a time when Stubby (Google's protobuf-based RPC) was not open source.
That's fair, and I agree because honestly almost no companies IMO actually know how to build robust FOSS projects outside their own needs, I wouldn't put that totally on one place. It pretty much actually comes down to the engineers, in my experience, and how much they understand the whole thing. It's a big problem actually. But I know what you mean, Buck2 is definitely a Meta-first project right now, since they're still gearing up to replace everything. They've been pretty receptive to me, at least, but it probably helps that Neil has a bunch of FOSS experience (and we have a bit of rapport with each, so that helps), and there's many more people than just him on the job who all seem to want it to succeed! I think a lot of the technical decisions will help it grow better than Buck1 did, too.
Even then, it's not like rewriting a billion lines of BUCK files to use Bazel was even practical. Realistically any solution had to have a direct migration path from Buck1 without rewriting everything. I don't even work there, this is just pretty obvious from the design constraints and talking with the dev team, though. Frankly, I'm pretty impressed they were both able to meet the goals they had (migration from Buck1, better performance, more extensible), while still jam-packing the thing full of good design decisions and features like they have. It's good work.
(I am a pretty happy, non-Facebook user of Buck2 already, FWIW.)