And I went to go read the ZeroMQ docs, since I remember hearing good things about it.
Turns out, it has a lot of the primitives (pub/sub, req/resp) that I'd like to have in my project, and saw this pretty telling quote in their docs:
When this man thinks of protocols, this man thinks of massive documents written by committees, over years. This man thinks of the IETF, W3C, ISO, Oasis, regulatory capture, FRAND patent license disputes, and soon after, this man thinks of retirement to a nice little farm in northern Bolivia up in the mountains where the only other needlessly stubborn beings are the goats chewing up the coffee plants.
It's interesting that it's been enough time that the metronome has swung seemingly more in the other way - more things today are done ad-hoc, over "thematic semi-standards" (okay there are probably real standards for this, but reality is more flexible) like websockets, or REST, or gRPC.
It's honestly interesting to see how zeromq approaches things - give people a toolbox for the kind of components and systems you COULD build, but don't make "all the options" part of the toolbox itself. Instead give people recipes for achieving certain patterns, and suggest a few known-reasonable ones (with known edge cases), instead of making it all tunables/configuration settings of a monolithic library.
There's still a lot of "the rest of the owl is left as an exercise to the reader", but honestly this makes more sense in a language like C, where "the system" is more loosely defined/available, and abstractions/compositions are harder to make "misuse resistant" than in other languages like Rust.
