Pants: Build system by Twitter, Foursquare, and Square
pantsbuild.github.io
pantsbuild.github.io
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...
And here's the one on the Square Eng blog: 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.
Thanks for pointing that out. We updated the title.
(this looks a LOT like Google's and Facebook's and Amazon's internal build config as well, btw)
Well there is Buck, Facebook's Java and Android build tool: https://facebook.github.io/buck/
"Pants models code modules (known as “targets”) and their dependencies in BUILD files—in a manner similar to Google’s internal build system" [1]
But I have to wonder why they choose to spell out "dependencies" :-)
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.
The word "goal" should disappear from the command line at some point. Alas, we're not quite there yet.
What problem does this solve that hasn't been solved many times already?
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.
If you usually invoke './pants goal test bundle src/my/awesome/project tests/my/awesome/project' (to run tests and bundle up an app), to skip testing instead invoke './pants goal bundle my/awesome/project'.
Yes, you can add a goal to generate compressed CSS. The docs are, alas, still skimpy, but they're getting better; meanwhile, they give an inkling: http://pantsbuild.github.io/howto_customize.html
[0] http://apenwarr.ca/log/?m=201012#14 - designed by djb, implemented by apenwarr.
[1] http://gittup.org/tup/ - the fastest build system you'll ever meet, with an essentially perfect automatic dependency tracker
Pants also does nifty things like artifact caching between members of a team which is nice.
It will continue to do more nice things in the future as it's under active development by a decent number of people at this point.
redo is explicit; it doesn't automatically do dependency tracking, you have to tell it what went it. But it's fast and incredibly elegant - it's extremely easy to make it track any dependencies you know about, and it's built for easily rebuilding just a part of your system.