Please, build!

Make is great…

Let me start by saying: Make is absolutely great. It automates the build workflows of thousands of projects and I’m incredibly grateful for it. But…in 2021 it’s not necessarily the best tool in the box for all projects.

make test
make run
make lint

…but Please is modern

Please (according to its website) is a “cross-language build system with an emphasis on high performance, extensibility and correctness”. Similarly to Make, Please is a file-based build system, with a declarative set of build rules for defining build targets. Build targets are defined in packages, which is simply a directory with a BUILD file in it describing the build targets for the package. Programming languages often use the directory structure for organizing source code into packages/modules as well so Please usually integrates with language tooling well.

Why Please?

When choosing a tool or solution, the first question is often “Why this one and not the other?”. You should definitely ask the question in this case as well because there are lots of alternatives to Make and Please out there. While I think Please is in a good position, it might not be the best tool for you.

  • It’s written in Go, so I can easily contribute to it and the executable is a static linked binary (no JVM required)
  • It’s fast (faster than Bazel)
  • It’s very easily extensible
  • You can literally ask it to do things, like $ please build (Seriously, how cool is that name?)

But….

When talking about technology, especially new and exciting technology, people often forget a very important rule: Everything comes at a price. Introducing Please to an existing project is no exception from that rule.

Conclusion

I’m pretty sure our friendship with Make is far from over. It’s still a great tool, but Please has a lot of features that make the software development experience better, especially for large projects.

Links

Build Systems à la Carte by Simon Peyton-Jones: A wonderful presentation about build systems with a much more scientific classification than mine. (Read the paper as well.)

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Márk Sági-Kazár

Márk Sági-Kazár

108 Followers

Software engineer, Open Source enthusiast. Prefer solving architectural problems over coding. Currently hacking Kubernetes.