Puppet's debugging needs to improve significantly. It's currently an all-or-nothing affair, where either debugging is produced for all components or none. This makes debugging annoying to use, because you cannot just get extra info on the areas you're interested in, but it also discourages the use of debugging internally, because you know that any debugging is likely to be printed pretty often.
Instead, the debugging should be enhanced to support debug types, e.g., 'execution', 'service', 'provider', network', and lots more. Then, when people enable debugging, 'true' would enable all debug types, or they could enable specific types with '--debug network --debug execution', or using comma-separated debug types.
This would enable much more fine-tuned use of debugging, both for development and for users, since it would encourage developers to add more useful debugging, and it would give users much more precision in how they used debugging.
Note that it should be possible to list all debug types, so that users can figure out what kind of debugging is available; most likely, debug types should be registered with documentation, so that the debug types can be listed with those docs.