explore improvements to Puppet::Application life cycle accessibility / method names
|Affected Puppet version:||Branch:|
Currently, the life cycle of a puppet app is roughly expressed by the following series of method calls:
- CommandLine# (parse configuration file—this isn’t actually expressed as a method of CommandLine but probably should be, for accessibility)
My concerns around accessibility are mostly related to the possibility that people will need to trigger individual phases outside of the normal execution chain (even if only for testing).
My concerns around naming have to do with the fact that many (perhaps most) of these methods can be overridden by subclasses to Application (or faces), and based on the names alone it would be almost impossible for a caller to guess what the order of execution would be. We’ll probably never get to a point where the names are clear enough to be completely intuitive without the caller needing to rely on documentation, but they could probably be more clear than they are right now.
If/when we introduce name changes we’ll need to make sure to keep backwards-compatible signatures around for some period of time, and log deprecation warnings… so that we won’t break third-party puppet applications.