The release of Pants 1.0

By ‎@digwanderlust‎

Today, Twitter is excited to announce participation in the first major release of the Pants open source project: 1.0.0, an open source build tool for monorepo-style source repositories. After more than five years of development, this significant milestone has greatly improved the project, and we invite you to test out this new and improved experience. Pants 1.0.0 provides a better user experience with:

  • Easier installation, allowing Pants to be setup with an empty pants.ini file
  • Stable public APIs and options with a clear deprecation policy
  • Regular, vetted, stable releases from release branches

Pants at Twitter

Before 2010, Twitter experienced a growing codebase that existing open source tools like ant and maven were unable to scale up to. In 2010, former Twitter engineer John Sirois began to develop Pants in order to address those scalability problems. Pants was open-sourced in 2012 under the Apache 2.0 license.

Currently, Twitter uses Pants in its internal monorepo for building and testing internal code. Twitter remains committed to developing Pants and will continue to work with the community to improve performance, enhance support for mobile development, and solidify Pants as a best-in-class build tool.

In addition to having a distributed cache, great subtarget incremental build performance, and support for a diverse set of languages, Pants also integrates well with Twitter developers’ workflow. Many developers at Twitter use IntelliJ and the IntelliJ Pants plugin imports Pants projects in a way IntelliJ understands and also provides compile/test assistance based on IntelliJ’s understanding of the project structure.

Why we use Pants

There are several monorepo-style tools available today, including Buck, Bazel, and more. When Pants was first developed, these tools were still closed source. Because there were no other tools available that fit Twitter’s needs, we wrote our own.

Now, a vibrant open source community has grown around Pants, with more than 100 contributors. Pants has since added support for several languages including Scala, Java, Python, JavaScript, Go, C/C++, Thrift, protobuf and more, many of which are used at Twitter. Additionally, there is added support for a rich plugin API and fast, reproducible builds. With this 1.0.0 release, we are stabilizing the plugin API, enabling caching by default, and removing some unnecessary configuration to make setup easier.

Today, Pants is an excellent choice for a monorepo-style build tool. We have a great open source community with an active Slack channel and mailing list, that includes participants across several companies. Pants also scales favorably when compared to other tools for larger targets because of its support for partial-target incremental builds for the JVM, which can make Pants significantly easier to adopt when compared to tools with strict requirements on target size.

The development continues

We’re dedicated to continually enhancing the Pants user experience, performance and build reproducibility. To learn more and get involved, join the conversation.

Pants documentation: http://www.pantsbuild.org/

Github repo: https://github.com/pantsbuild/pants