Live data from Hacker News

Please – A cross-language build system

please.build

111–120 of 257 posts

Re: Please – A cross-language build system

#111
post #95

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'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 though…

Every ex-Google SRE I know is glad they don’t have to deal with Borgmon anymore. I don't think it’s popular these days.

All the more reason to invent something that improves upon it, since love it or not, it's a must have tool.

Re: Please – A cross-language build system

#112

Earlier quoted context omitted.

Hey, I maintain please and will be the first one to admit we’re not the best at marketing it. We’ve mostly been focused on getting it up to scratch and only recently have we been trying to publicise it. With that being said I have put a good amount of work into the QuickStart. The code labs are designed to get you up and started in an inviting way. If you have any specific feedback about your QuickStart experience I’…

What was/is the motivation for this build system that an existing one doesn't satisfy?

We wanted something like Blaze (Google's system); at the time we were using Buck which didn't satisfy us (e.g. only one output per genrule, no directories; and it was more or less impossible to write first-class support for a new language without modifying the core system). Subsequently Bazel got released but we still find that a bit lacking in some areas; e.g. the CLI, the JVM reliance and some of Starlark (e.g. it maintains Python 2 syntax compatibility so can't have type annotations).

We'd also tried Gradle previously but that was pretty awful for anything non-Java which made it a non-starter.

To be clear, I'm one of the original implementors, although I imagine that was obvious already...

Re: Please – A cross-language build system

#113

Earlier quoted context omitted.

Some people really dislike the JVM, and Please is written in Go.

Exactly what I was about to say. Bazel is a monstrosity in terms of how much shite it pulls in to get started.

Bazel has its JRE built in its self contained binary. Not sure what you’re referring to.

Re: Please – A cross-language build system

#114

Earlier quoted context omitted.

Thanks for all the hard work! I'm very excited to see where this goes. Have you considered sponsoring, or accepting donations, to work on IDE integration? That's pretty much the only reason I migrated my current employers codebase over to Bazel instead of Please.

As a big fan of Bazel (ok, Blaze), I'm curious what's different than what Blaze offers

Bazel has a lot of things "missing" that had to be cut out from the OSS release. Things like grpc rule sets are extremely fragmented right now. It's a bit of A saying "the B team should maintain the rules" and B saying "the A team should maintain the rules". As such almost every single language has inconsistent support for everything: code coverage, protobuf, grpc, external dependency management, IDE integration. Also because there's no stubby, sponge, or other cool internal tools a lot of the benefits from blaze as a system are not externalized.

Also, the docker support in Bazel is pretty "different". It's not bad, but it's not immediately obvious to newcomers how this is meant to work.

It's getting better every day though.

Re: Please – A cross-language build system

#115

Earlier quoted context omitted.

Exactly what I was about to say. Bazel is a monstrosity in terms of how much shite it pulls in to get started.

Is it a monstrosity? You need the JVM but the JVM doesn’t seem like a monster to me.

Bazel doesn’t need the JVM as it’s built into its self contained binary.

Re: Please – A cross-language build system

#116

Earlier quoted context omitted.

Is it a monstrosity? You need the JVM but the JVM doesn’t seem like a monster to me.

The JRE is 655.8M on my system.

And I would have considered that to be large 20 years ago, because it would have filled an entire CD-ROM disc, and it would have taken over five hours to download.

However, I still have somewhere over 100 GB free on my seven-year-old laptop, and the download will take me ~40 seconds.

But even if the 600MB were a problem, Bazel doesn’t need an external version of the JVM. It bundles its own, and fits the whole thing in under 50MB. Some people are under the mistaken impression that you have to install the JVM first and then install Bazel, which is simply not true.

Re: Please – A cross-language build system

#118
post #80

Would be interested how feasible it would be to replace Jenkins with this?

Please is a pretty different tool to Jenkins - you could use it within Jenkins, but instead of make / Gradle / go build / cargo / etc.

It does have some features to facilitate CI and testing at scale, e.g. `plz query changes` can be used to find a minimal set of tests to run for a PR.

Re: Please – A cross-language build system

#119

> If you're familiar with Blaze / Bazel, Buck or Pants you will probably find Please very familiar Yes, so why would I use Please over any of them? I'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't one just use Bazel?

I've only used Bazel in anger (in a medium-small sized project); I've found it really frustrating because it effectively has two separate languages (inside build files and in custom rules), even though it's both Starlark. It's especially terrible for doing things that Bazel didn't already know about (i.e. running shell commands to generate things, even if you could tell Bazel all the inputs and outputs).

We wanted to switch away from Bazel because of the mismatch; it looked like Pants and Buck had the same issues. At the time Please didn't have sensible documentation so it was skipped. From what they have now it seemed like it's more reasonable in this respect, but I don't actually know yet; perhaps somebody who knows can chime in?

Re: Please – A cross-language build system

#120
post #38

"Please supports Linux, macOS and FreeBSD at the moment" Let me know when I can actually use this on any machine I have to work on, instead of going "fuck you, Windows users". Writing cross-platform build tooling isn't rocket science, it's a choice. And the choice made here is stupidly disappointing in near as makes no difference 2021.

I can see your point, pretty aggravating. Is WSL an option?

Hi, one of the implementors here... Yes, WSL is an option, and I believe Please works just fine in it. Right now we don't have any CI etc set up so we can't stand behind it and say "this works", but it works in WSL as most Linux things do.
Post reply on HN