6 ms·
Pants: Build system by Twitter, Foursquare, and Square
- kolev 12y agoHere's the original post: https://blog.twitter.com/2014/hello-pants-build https://blog.twitter.com/2014/hello-pants-build
- kolev 12y agoSource code: https://github.com/pantsbuild/pants https://github.com/pantsbuild/pants
- n0rm 12y agoTwitter is going to make the internet a better place.
- exacube 12y agoFinally, 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 12y ago> 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 12y agoIt's not really a generic tool like Pants is, but it's something. Thanks for sharing!
- skybrian 12y agoThey're explicit about this: "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" :-) [1] http://pantsbuild.github.io/announce_201409.html http://pantsbuild.github.io/announce_201409.html
- lahosken 12y agoIt'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 12y agoCan't wait for someone to add C++ (llvm and g++) support!
- hatred 12y agoI 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 12y agoIt'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.
- harryh 12y agoHere 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-pants-a-build-system-for-large-scale-codebases-like-foursquares/ 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 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 12y ago> 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.
- vishli 12y agoAnother perspective http://learningtosketch.tumblr.com/post/84319786305/ity-at-mixit14-talking-about-scaling-twitter http://learningtosketch.tumblr.com/post/84319786305/ity-at-m...
- billconan 12y agoI don't want to learn another build system. why would I?
- prezjordan 12y agoWhat a strange attitude.
- serge2k 12y agowhy? What problem does this solve that hasn't been solved many times already?
- sulam 12y agoThe 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 12y agoWe 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 12y agoMaybe, 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.
- chton 12y agoClaiming 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.
- jnye131 12y agoShame about the name
- peterwwillis 12y agoBasically 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 12y agoThe 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-how-build-system-works.html http://google-engtools.blogspot.com/2011/08/build-in-cloud-h... The word "goal" should disappear from the command line at some point. Alas, we're not quite there yet.
- squidmccactus 12y agoIs this like maven? What sort of social and mobile integration does it have?
- jameshart 12y agoAs 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 12y agoLinus 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."
- kayamon 12y agoI'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 12y agoWell, maybe they weren't aware of it. I wasn't. Ninja looks nice! Thanks for sharing!