That said, it’s not a one-step process. The ACME client needs to have the DNS provider perform multiple steps, with some waiting in between. So there needs to be some standard way for Caddy to interact with that third party exe or script. A standard set of features that they must provide. Also, a specific way in which they need to respond to Caddy to let it know they’ve done their job and Caddy can have LetsEncrypt continue the verification process.
Basically, they need to be pretty standardized. Having them as Golang plugins lets us guarantee that - it’s basically the best way to go about it. I’m sure it’s possible, but it’d be very “gung-ho” to just throw a script at it.