MongoDB uses Scons to build their product, or did when I was there. MongoDB is coded in respectable modern C++, with an admixture of Java bad habits and a history of Google Style pessimization.
Among the most used articles on MDB's internal wiki is "Scons: It's Not That Slow!"
In fact it is really quite, quite slow, but a universally popular add-on (not officially "supported" when I was there), is a Ninja build scheduler that is blindingly quick.
So, the slowness only manifests when you need to recalculate the dependencies, which doesn't appear in the typical edit-build-test cycle. With Ninja, combined with Ccache and a distributed build tool (whose name escapes me ATM), coding at Mongo was not bad.
This doesn’t exactly shine well on mongo’s development practices. Why go through all of this trouble when you could use something that works well out of the box like CMake? Maybe they like wasting money.
The answer is the same as everywhere: history. Not just the product build, but continuous integration, test suites (test themselves are largely JS, of course) and release management, are all tied together with Scons and lots of custom Python.
It would just be a huge job migrating to something else, for little better possible result than "it still works". And it does already work.
Among the most used articles on MDB's internal wiki is "Scons: It's Not That Slow!"
In fact it is really quite, quite slow, but a universally popular add-on (not officially "supported" when I was there), is a Ninja build scheduler that is blindingly quick.
So, the slowness only manifests when you need to recalculate the dependencies, which doesn't appear in the typical edit-build-test cycle. With Ninja, combined with Ccache and a distributed build tool (whose name escapes me ATM), coding at Mongo was not bad.