The OpenStack Charms project uses specifications to identify and define the implementation details of new major features. Features that require new charm configuration options, new charm interfaces, and new charm relations should have an agreed spec prior to proposing code for review. Likewise, a spec should be landed before work begins on wholly new charms.
The following resources provide reference to existing accepted specs, the source code repository, recent activity on that repository, and a template to use as a base for new specs.
Recommended work flow for introducing a new feature specification:
Have a conversation with core charmers to avoid overlapping or duplicate work.
Discuss the high-level design with core charmers to arrive at an optimal approach (before writing code).
Compose the specification with the aim to remove all doubt as to “what it is” and “what it isn’t.” This should be based on the charm-specs template and posted as a Gerrit review.
Include one or more specific user stories or use cases which support the practical application of the feature specification.
Support the proposal by including relevant bug references in the specification.
Circulate the proposal on the mailing list to ensure wider visibility.
Engage in further discussion surrounding the spec proposal and the mailing list post so that it can be reviewed and landed.