QBT - Why QBT?

{Fast, Correct, Scalable, Powerful}.keepall()

QBT is an exciting new build tool. It is easy to be skeptical in a world where everyone thinks the solution to “there are 15 choices for X, and they all suck” is to make a 16th one which “also sucks”. QBT is far from another “me too” build tool, it distinguishes itself from every other freely available offering in at least one way, and often many highly valuable ways. The landing page listed some of QBT's standout features, but here we will try to stand QBT up against the build tools currently in common use, then explain why QBT offers such a huge benefit over them. We will also discuss some of QBT's drawbacks.

Many of these questions have an answer that depends upon how your build is structed. It may be slightly unfair to these very established tools, but we will generally answer by the “average” project using the tool, as that is most indicative of how the community uses the tool and what the tool encourages people to do. If you think any of our evaluations are inaccurate, please do not hesitate to reach out. We do not wish to misrepresent any other tools.

LEGEND:

QBT Feature Matrix

Here are the features we will discuss in this document. We consider each feature either important, or critical, in an enterprise software development environment, a quality open source project, or both.

Gradle

Gradle is probably the most powerful free, open source tool, and covers the largest part of our feature matrix besides QBT. Unfortunately, Gradle (like all of the other tools on this list) still has some serious shortcomings related to trust, incremental building correctness (see GRADLE-2579), and inability to facilitate atomic cross-package change unless the packages are all stored in the same repository, or using git submodules which make development very painful and hurt scalability.

TOTAL: 9.5 / 17

Maven

Maven is a highly opinionated, “convention over configuration” java build tool used by the vast majority of Java libraries. Despite its popularity, it performs very poorly in enterprise settings because of its inflexibility.

TOTAL: 4.0 / 17

Ant

Ant was written as “cross-platform-compatible make”. It has only some of make's benefits and all but one of make's shortcomings (namely, that it is cross-platform-compatible).

TOTAL: 7.5 / 17

Make

Make is literally 4 decades old. One of the most stable and common choices for a build tool outside of the Java ecosystem, make has no support for external dependencies and requires you to write basically everything it does (or use external tools like autoconf, etc).

TOTAL: 9.5 / 17

QBT

TOTAL: 14.0 / 17

Honorable Mention

We have not yet evaluated tools like bazel.io or the various golang build tools, but it would be appropriate to include them here as well.

QBT Drawbacks

QBT may be an exciting new tool, but it is not without flaws, some of them serious to users with certain usecases. Here we'll expand upon the “points” lost in the previous section, and other considerations to make before using QBT in a production environment.

Summary

QBT is a framework you can use to manage a set of consistent versions of many interconnected software projects, and make changes to those projects while ensuring none of them break. QBT is just a tool which can manage dependencies and stitch together many repositories. When used correctly, however, it enables reproducibility, consistency, change management, and trust/auditing.

QBT is the first open-source build tool targeted at usecases the likes of which have previously only been served in large enterprises like Amazon.com.

vi: ft=markdown