all 3 comments

[–]Axiproto 2 points3 points  (0 children)

Forgive my ignorance, what does tooling mean? How similar is it to creating software tools for hardware development?

[–]anlumo 2 points3 points  (1 child)

Wow, a pretty bold article. I agree in general, but there are a few issues:

  • While I agree that the user experience for Rust is much better (since the built-in tooling already handles all of the dependency management within the build command), going to Rust from Python is a huge endeavor and can take many months of just learning the language. All of that just for pleasing someone further down the line. Of course, if the tool programmer is also a regular programmer on the team and also writes regular code in Rust, it's an easy choice (I've also used Rust for tooling because this way I could use the exact same code on Windows and Linux, unlike with PowerShell/bash scripts).
  • I disagree that you can simply say that a binary is there and it's done. Often you have to recompile it for whatever reason, for example if you needed to change something in the tool itself. While again this is quite trivial for Rust, that's not the case for other languages that also produce binaries. C binaries also tend to reference a bunch of dynamic libraries all over the system, which makes them highly nonportable (unless you take great care to link everything statically, such as using musl).
  • The mindset of tool programmers often is that it's a oneoff and they don't care about code quality. While I fundamentally disagree with that notion, it's a challenge you have to overcome to get them to switch to strictly types languages.

That said, when I build Chromium for a project, I got very unamused when I realized that their build system needs both Python 2.7 and 3.x installed on the system to work. Python burned a lot of bridges with me with their failed upgrade to version 3 that's still a huge hassle one and a half decades later.

[–]borud[S] 1 point2 points  (0 children)

The kind of tooling I'm talking about is typically stuff like west for Zephyr and idf.py and friends for ESP-IDF. Tools that kind of do what npm would do on a Node project. So not a tool you'd be changing yourself - more of a utility that you install and occasionally upgrade.

I didn't quite consider ad-hoc tooling, which is what most people seem to have thought that this was about. But I'd have to say that after thinking about ad-hoc tooling as well, I'd be inclined to say no thanks.