
Pants: Build system by Twitter, Foursquare, and Square - kolev
http://pantsbuild.github.io/
======
harryh
Here is the actual blog post from today announcing a bunch of Pants
milestones:
[http://pantsbuild.github.io/announce_201409.html](http://pantsbuild.github.io/announce_201409.html)

This is actually a collaborative project between Twitter, Foursquare & Square.
All three companies contributed a ton of work.

Here's the announcement on the Foursquare Eng Blog:
[http://engineering.foursquare.com/2014/09/16/introducing-
pan...](http://engineering.foursquare.com/2014/09/16/introducing-pants-a-
build-system-for-large-scale-codebases-like-foursquares/)

And here's the one on the Square Eng blog:
[http://corner.squareup.com/2014/09/trying-on-
pants.html](http://corner.squareup.com/2014/09/trying-on-pants.html)

It's a fully open source project so we'd welcome contributions (or jokes) from
any and all interested folks! Pants is a great build tool that we hope to grow
and use for years to come.

~~~
dang
> This is actually a collaborative project between Twitter, Foursquare &
> Square. All three companies contributed a ton of work.

Thanks for pointing that out. We updated the title.

------
lahosken
It's not just "by Twitter" anymore. Since about 2012, we've had some great
contributions from other organizations.
[http://pantsbuild.github.io/announce_201409.html](http://pantsbuild.github.io/announce_201409.html)
has some history.

------
exacube
Finally, a modern-day build tool! I thought Facebook would open source theirs
first.

(this looks a LOT like Google's and Facebook's and Amazon's internal build
config as well, btw)

~~~
ch0wn
> I thought Facebook would open source theirs first.

Well there is Buck, Facebook's Java and Android build tool:
[https://facebook.github.io/buck/](https://facebook.github.io/buck/)

~~~
exacube
It's not really a generic tool like Pants is, but it's something. Thanks for
sharing!

------
hatred
I had a query regarding C/C++ support in Pants in the near future. Is that in
the road map at all ? What does Twitter use internally for building such
applications ?

~~~
sulam
It's on the "we'd like to get to that sometime" or "pull requests accepted"
list. It's not on the immediate roadmap unless we get a contribution from
someone that needs it. Internally we don't have so much c/c++ that people
can't just use traditional tools.

------
kolev
Here's the original post: [https://blog.twitter.com/2014/hello-pants-
build](https://blog.twitter.com/2014/hello-pants-build)

------
peterwwillis
Basically it's similar to other build tools, except over half of the functions
are specific to building Python and Java. Here are two lists of functions:
[https://pantsbuild.github.io/goals_reference.html](https://pantsbuild.github.io/goals_reference.html)
[https://pantsbuild.github.io/build_dictionary.html](https://pantsbuild.github.io/build_dictionary.html)
Hopefully they can figure out a way to organize those better so it doesn't
evolve into a giant wall of functions you have to dig through to find
something you want.

Their BUILD file format is not easily human readable. I know we have to
compromise between whether the machine or the human has an easier time
managing a config, but the build system is one of those i'd prefer be easier
for humans.

Hopefully they clean up the user interface to make it easier to run, too. For
example, you almost always have to type './pants goals <arguments ..>', where
you'd expect an alias like 'pgoals'. Some kind of web interface would probably
be useful for a lot of the included functions. This seems like a tool that
belongs integrated with Jenkins or something similar.

~~~
lahosken
The BUILD file format looks a lot like Python code calling some functions.
[http://pantsbuild.github.io/first_tutorial.html#build-
files](http://pantsbuild.github.io/first_tutorial.html#build-files) . It'd be
great to have something more readable. For what it's worth, Google's been
using a similar format for several years, and folks seem to find their way OK:
[http://google-engtools.blogspot.com/2011/08/build-in-
cloud-h...](http://google-engtools.blogspot.com/2011/08/build-in-cloud-how-
build-system-works.html)

The word "goal" should disappear from the command line at some point. Alas,
we're not quite there yet.

------
kolev
Source code:
[https://github.com/pantsbuild/pants](https://github.com/pantsbuild/pants)

------
chton
Claiming it supports "a variety of languages" is stretching it a bit.
Currently it builds the 2 biggest JVM languages and Python. I like where
they're going, and if they truly manage to support a wide variety of projects
in the end, it'll be fantastic, but for now the claims are too bold.

------
exacube
Can't wait for someone to add C++ (llvm and g++) support!

------
jameshart
As Americans continue to release more and more tools with names like 'Pants'
and 'Git', it really does start to look like they're just trolling British
developers.

~~~
h3st
Linus is Finnish, not American. And I suspect he's aware of what it means,
given the quote "I name all my projects after me: First Linux, now git."

------
billconan
I don't want to learn another build system. why would I?

~~~
prezjordan
What a strange attitude.

~~~
serge2k
why?

What problem does this solve that hasn't been solved many times already?

~~~
sulam
The blog post goes into details, but the main advantage pants has over other
build systems we could have used is that it is designed from the ground up for
a large codebase that is broken up sensibly into modules, libraries, or
projects. It is smart about what it builds (or more importantly: what it
doesn't build) and operates from the conception that most of the code you work
with is available to be changed in any given commit. This is very much not the
style that other build systems support, where trying to work in this way
either results in a huge, undifferentiated pile of code or forces you to
completely break things up entirely (ie work on stable dependencies). Once you
have a significant number of engineers, this becomes inefficient whichever way
you go -- either by giving you long build times or by making it unnatural to
work outside your project.

~~~
theboywho
We are a team of 25 engineers working on the same sbt based project. I don't
see why we would move to pants. Do you have any non-marketing reason for why
Pants is better than sbt?

~~~
lahosken
Maybe, maybe not. As your codebase grows, it's likely to turn into separate
parts with some common code. Pants can get you faster incremental builds:
quickly figuring out what needs building, building just that. If sbt is quick
for you, you might not have hit the point where Pants helps.

If you reach a point where sbt gets slow and you're looking at other build
tools, that's a good time to look at Pants.

------
kayamon
I'm disappointed to see that like many build systems, they're inventing their
own backend instead of just using Ninja
([http://martine.github.io/ninja/](http://martine.github.io/ninja/))

~~~
kolev
Well, maybe they weren't aware of it. I wasn't. Ninja looks nice! Thanks for
sharing!

------
vishli
Another perspective [http://learningtosketch.tumblr.com/post/84319786305/ity-
at-m...](http://learningtosketch.tumblr.com/post/84319786305/ity-at-
mixit14-talking-about-scaling-twitter)

------
jnye131
Shame about the name

~~~
Cthulhu_
Python Ant, seems apt.

------
n0rm
Twitter is going to make the internet a better place.

