TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Please – A cross-language build system

318 pointsby siliconmountainover 4 years ago

31 comments

gravypodover 4 years ago
Please build is really fantastic and I loved using it. If it had better ide integrations I&#x27;d recommend it over bazel for oss work. It&#x27;s extremely fast and we&#x27;ll documented and the community seems very welcoming.<p>Glad it&#x27;s getting some discussion on HN. Can&#x27;t wait to hear other&#x27;s experiences.
评论 #25239244 未加载
offbyoneover 4 years ago
I love build tools, and work with them professionally, and this tool seems to be getting one thing quite right: it is not injecting itself into the dependency resolution process. Where I see build tooling fall down is where they try to replace the idiomatic dependency modeling tools that exist in each language.<p>The build logic and CLI experience looks to be well thought out. I really like the native sandboxing support and the intentional exclusion of the calling environment. There&#x27;s a lot of polish here.
评论 #25240661 未加载
评论 #25239351 未加载
mdomsover 4 years ago
It&#x27;s hard to tell what the value proposition is here, apart from vague hand-waving about parallelization. The quick start is not enough to get started actually building something.<p>Changing build systems is hard, and getting buy-in from the team even harder - so you need to demonstrate value up front.
评论 #25239534 未加载
评论 #25239382 未加载
评论 #25239606 未加载
评论 #25239196 未加载
geofftover 4 years ago
How easy is it to &quot;port&quot; BUILD files between the various open implementations (Bazel, Buck, Pants, Please)? If you have a project someone else wrote with the intention of using it in e.g. Bazel, can you integrate it into your Please build system, or would you need to treat it as an opaque build process (same as if you were shelling out to .&#x2F;configure &amp;&amp; make)?<p>As a concrete example, one frustration at $DAYJOB is that building certain Google-released OSS is hard to integrate with our existing build system because Bazel is pretty opinionated about compiler-provided headers, output paths, etc. We&#x27;re calling Bazel as a subprocess during our build and making various files available to it to make our compiler build visible to it, and then we pack up the results. I&#x27;m pretty sure if we somehow adopted Bazel for our entire build this would be much better - would it also be better if we adopted one of those other systems?<p>(Maybe one way of asking this is, are any of the corporate sponsors of Buck, Pants, or Please building third-party Bazel code from source? Or vice versa?)<p>A broader question: would it be worth defining a compatible <i>subset</i> of BUILD file syntax and library calls (i.e., not just Starlark but also the rules themselves for common things like building C libraries or JARs)?<p>Are we in the build-system equivalent of the vendor-specific C &#x2F; C++ &#x2F; UNIX implementations, and will a cross-vendor standardization effort emerge one day?
评论 #25244847 未加载
评论 #25239415 未加载
评论 #25239376 未加载
scarmigover 4 years ago
Style issue: the left nav text often overflows into the content area on mobile, making it painful to read.
oblioover 4 years ago
They make some lofty claims about Python packaging, has anyone used this tool in a reasonably high stakes environment for Python? How was the experience?
rthomas6over 4 years ago
I come from a sofware world not typical for HN. I am a (very) low level software and FPGA guy. Despite my best efforts, I don&#x27;t understand: What do any of these tools do that Make does not? Are they faster and easier to use? Do they work better?
评论 #25239943 未加载
评论 #25239959 未加载
评论 #25239957 未加载
评论 #25240800 未加载
评论 #25239873 未加载
评论 #25239879 未加载
评论 #25239859 未加载
评论 #25239973 未加载
评论 #25239981 未加载
评论 #25239901 未加载
评论 #25239867 未加载
siliconc0wover 4 years ago
I can imagine a project that successfully replicates the entire google developer environment (distributed build system w&#x2F; caching, monorepo with presubmit checks, code review, testing, etc) would be successful since ex-googlers would be likely to advocate for it inside their own organizations and most orgs don&#x27;t have the engineering time to build all this themselves.<p>Without this tooling large organizations tend to silo which creates high engineering costs (every project starts from scratch, no shared frameworks&#x2F;libraries, no standardizing around best practices, etc).
评论 #25239802 未加载
评论 #25243468 未加载
评论 #25239318 未加载
jartover 4 years ago
First thing every software engineer does after leaving Google is rewrite Blaze. Just like every site reliability engineer rewrites borgmon. What I chose to do myself was make Blaze happen using a Makefile config. There&#x27;s a blog post somewhere where Google talks about why they switched from GNU Make to Blaze c. 2006. if I remember correctly it basically boiled down to not having strict dependency checking. So I thought, why not simply avoid their published mistakes without changing build systems? I learned everything I could about make, discovered that variables are secretly lambdas, and that enabled me to figure out a way to have a static archive package for each folder, which also avoided the need to write a makefile code generator. Then I wrote a simple C program to check incremental elf symbols so the build graph stays sanely formed. It totally got make working like a dream in a way I simply hadn&#x27;t seen before. <a href="https:&#x2F;&#x2F;github.com&#x2F;jart&#x2F;cosmopolitan&#x2F;blob&#x2F;master&#x2F;tool&#x2F;build&#x2F;package.c" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jart&#x2F;cosmopolitan&#x2F;blob&#x2F;master&#x2F;tool&#x2F;build&#x2F;...</a>
评论 #25240588 未加载
评论 #25240071 未加载
bitdivisionover 4 years ago
I came across the Pants build system [1] the other day, which looks like it shares some similarities. Though currently very specific to Python.<p>The value proposition is also a bit more clearly defined there [2]<p>[1]: <a href="https:&#x2F;&#x2F;www.pantsbuild.org&#x2F;docs&#x2F;welcome-to-pants" rel="nofollow">https:&#x2F;&#x2F;www.pantsbuild.org&#x2F;docs&#x2F;welcome-to-pants</a><p>[2]: <a href="https:&#x2F;&#x2F;www.pantsbuild.org&#x2F;docs&#x2F;how-does-pants-work" rel="nofollow">https:&#x2F;&#x2F;www.pantsbuild.org&#x2F;docs&#x2F;how-does-pants-work</a>
评论 #25239811 未加载
CharlesMerriam2over 4 years ago
Why are landing pages so incredibly uninformative?<p>In practice, I spend under two minutes to click around and see if can &#x27;get&#x27; it. What does it do especially well? What&#x27;s the syntax look like? If you are brave, what doesn&#x27;t work well?<p>No idea why this exists or why I would use it. Bad website. No cookie.
codeulikeover 4 years ago
The number of times I&#x27;ve said &quot;Please build&quot; to myself, over the decades ...
arcticfoxover 4 years ago
Admitting ignorance here, I have never intentionally used a build system like this. My normal process for e.g. Python deployment is to write a Dockerfile that installs the dependencies, installs packages, and then copies my user code in. Then I use Pulumi to upload that image to a Docker repository &amp; deploy it to a k8s instance.<p>What am I missing by doing that? This <i>looks</i> really slick, but I&#x27;m not sure how, why, or where to use it.
评论 #25239777 未加载
评论 #25239431 未加载
评论 #25239437 未加载
japgollyover 4 years ago
&gt; If you&#x27;re familiar with Blaze &#x2F; Bazel, Buck or Pants you will probably find Please very familiar<p>Yes, so why would I use Please over any of them? I&#x27;ve spent close to 10min reading and have no idea why this exists or why anyone would use it. It looks like Bazel with a different config format, in which case why wouldn&#x27;t one just use Bazel?
评论 #25240535 未加载
评论 #25240196 未加载
评论 #25240480 未加载
评论 #25239961 未加载
评论 #25239968 未加载
评论 #25240049 未加载
评论 #25240472 未加载
XCSmeover 4 years ago
The landing page on desktop is impossible to read, random text spread all over the screen, no idea what&#x27;s the intended text flow.
Areading314over 4 years ago
At some point it becomes actively harmful to build and publicize tools that further the fragmentation of an ecosystem. We need a unified build system, not yet another build system. To get there we have to contribute to existing tools to keep making them better.
zellynover 4 years ago
I like the idea of please.build. But I&#x27;d like it more if it used Starlark :-(<p><a href="https:&#x2F;&#x2F;github.com&#x2F;thought-machine&#x2F;please&#x2F;issues?q=is%3Aissue+skylark" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;thought-machine&#x2F;please&#x2F;issues?q=is%3Aissu...</a> <a href="https:&#x2F;&#x2F;github.com&#x2F;thought-machine&#x2F;please&#x2F;issues?q=is%3Aissue+starlark" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;thought-machine&#x2F;please&#x2F;issues?q=is%3Aissu...</a>
JensRantilover 4 years ago
If I was building a company today I would use Earthly instead of Buck, Bazel or Please. I think Earthly gets out of the way of actually low-level builds and instead focusing on high-level, Dockerised targets. The benefits range from allowing proper IDE support, to very easy system&#x2F;integration tests, while still reaping the benefit of remote execution and aggressive caching.
lxeover 4 years ago
Wish there was a new generation high level build system like this or Bazel or something but with decent JavaScript&#x2F;node_modules support.
评论 #25243577 未加载
underdeserverover 4 years ago
This looks great. A minimalist no-BS version of Blaze that supports everything I would need is something I&#x27;d be happy to use.
tatskaariover 4 years ago
Hey guys! Thanks for checking Please out! I see a lot of recurring themes in the comments so I thought I would clear some things up.<p>What is Please?<p>Please is a multi-language build system designed for huge mono-repos. It was created by a couple frustrated ex-googlers who were familiar with Blaze (which was later open sourced as Bazel). We found the &quot;real world&quot; alternatives to be somewhat lacking and so Please was born!<p>Please draws inspiration on the Blaze paradigm. If you&#x27;re familiar with Bazel, the biggest difference is Please aims to be simpler and have far less magic in the binary. We push the implementation of the build rules into the build language, dog feeding them to ensure Please is flexible enough for any task. Also Please is written in Go so doesn&#x27;t require a JVM ;)<p>If you&#x27;re not familiar with Blaze&#x2F;Bazel, here&#x27;s what all the fuss is about:<p>1) Hermetic builds: builds are run in their own tightly controlled environment. Each step of the build runs in their own temp directory isolating them from other steps and only having access to the files and environment variables they&#x27;ve declared as their inputs. Please also has sandboxing built in taking advantage of the linux kernel to further isolate tests.<p>2) Scalability through incrementallity: if you&#x27;ve used Make, you&#x27;re probably familiar with caching problems. Make uses last modified timestamps on files to determine if they need to rebuild each step, which turns out is fallible. Please uses a hash based approach which is far more robust. Most of our developers don&#x27;t even know how to clean the cache. As a result, we can incrementality build our entire repository locally and on our CI workers no matter how big our repo gets.<p>3) Flexibility: the build language is a dialect of python. This can be used to write &quot;build definitions&quot; which define a unit of work i.e. compiling a Go package. There&#x27;s nothing special about the built in definitions; it&#x27;s totally possible to write your own to automate nearly any part of your development process. You could generate code, template kubernetes .yamls and beyond!<p>4) Unified developer experience: The please command line provides a unified experience across your codebase. Want to test all the tests under a branch of your repo? `plz test &#x2F;&#x2F;some&#x2F;part&#x2F;of&#x2F;the&#x2F;repo&#x2F;...`. It doesn&#x27;t matter what language you&#x27;re using, what those tests depend on etc. etc. Please can always run them for you.<p>PS: Apologies for the website. We&#x27;re a small team of build system engineers, not front end types. If you want to offer your skills, I&#x27;d be happy to point you in the right direction: <a href="https:&#x2F;&#x2F;github.com&#x2F;thought-machine&#x2F;please" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;thought-machine&#x2F;please</a>.
评论 #25242187 未加载
pdimitarover 4 years ago
Can somebody sell me this tool while comparing it to `make`, or Elixir&#x27;s `mix`, or Rust&#x27;s `cargo`?
评论 #25240937 未加载
评论 #25240715 未加载
maxpertover 4 years ago
Have used it in a go mono-repo. It’s own convention on packages and bad integration with IDE makes it a hard sell for me. I mean I just paid for Goland IDE why would I waste my time integrating with something that might or might not work for others. It’s a very hard sell.
评论 #25240107 未加载
评论 #25239593 未加载
dblotskyover 4 years ago
How big does the project have to be in order for this system to have benefits over Make?
评论 #25242673 未加载
waruqiover 4 years ago
I prefer xmake<p><a href="https:&#x2F;&#x2F;github.com&#x2F;xmake-io&#x2F;xmake" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;xmake-io&#x2F;xmake</a>
mleonhardover 4 years ago
Does Please allow one to easily specify a specific JDK version to use to build and run tests?<p>I wasted a lot of time getting Bazel to use a modern JDK.
sgtover 4 years ago
Would be interested how feasible it would be to replace Jenkins with this?
评论 #25240190 未加载
dsagalover 4 years ago
Is there any help from Please on building TypeScript projects faster?
评论 #25245158 未加载
jto1218over 4 years ago
&gt; Indentation is normally four spaces. Tabs will be rejected by the parser.<p>You love to see it.
nindalfover 4 years ago
Title can possibly be modified to mention that this is a tool to build code.
评论 #25239743 未加载
评论 #25238959 未加载
high_priestover 4 years ago
I personally despise people combining terms like &quot;fast&quot; or &quot;lightweight&quot; with languages like Go and Python. We are looking at a build system that, to my knowledge, doesn&#x27;t take any advantage from being written in Go, other than &quot;being easier to write and understand by a human&quot;.<p>When I see someone giving such reasons for not using a more performant language, I immediately associate such project with janky, fast written codebase and disregard for proper, complete documentation. &quot;Because you can just read and understand the code&quot;, yeah I can do the same in well maintained code of a faster language.
评论 #25241528 未加载
评论 #25241524 未加载
评论 #25242933 未加载
评论 #25242714 未加载