How to make your tooling break less often

Ran into this issue recently where a curl update broke elm-tooling:

Of course, Arch runs the latest curl so it broke for me. Fortunately, the maintainer fixed it quickly.

This illustrates several principles with tooling (and programs in general):

  1. Minimize dependencies where you can. If this was written in Go, all of the fetching mechanisms would be compiled in from the standard library. Statically linked programs make this so easy. And with tools like goreleaser, it is very simple to build binaries for every platform on every release. We’ve been doing it for years.
  2. A fairly complete and well-implemented standard library is a huge benefit to a programming language. This is one of the greatest weaknesses of NodeJS – it is very dependent on external tools or NPM packages to do about anything. However, there are tradeoffs – perhaps NodeJS would have never gotten as popular as it has without its minimalist design and extensive package ecosystem.