- Make it clear to the community of new feature development happening at a high level
- Make it easier to correlate features with JIRAs
- Make it easier to track progress for features in development
- Make it easier to understand estimated release schedule for features in development
- Create a JIRA of type "Epic" for the new feature in Apache Ambari JIRA
- Add the feature to the Features + Roadmap wiki and link it to the Epic created
- The Epic should contain a high-level description that is easy to understand
- The Epic should also contain the initial, detailed design (this can be in the form of a shared Google Doc for ease of collaboration, Word doc, pdf, etc)
- Once the initial design is posted, announce to the dev mailing list to elicit feedback (Subject: [DISCUSS] Epic Name. Be sure include a link to the Epic JIRA in the body). It is recommended to ask for review feedback to be given by a certain date so that the review process does not drag on.
- Iterate on the design based on community feedback. Incorporate multiple review cycles as needed.
- Once the design is finalized, break it down into Tasks that are linked to the Epic
- (Nice to have) Once the Tasks are defined, schedule them into sprints using the Agile Board so that it's easy to see who is working on what/when, what tasks remain but unassigned so the community can pick up work from the backlog, etc.
The use of feature branches allows for the large, potentially destabilizing changes to be made without affecting the stability of the trunk. For more information, see Git Feature Branches.
- Sometimes, we want to have the ability for the users to experiment with a new feature, but not make expose it as a general feature since it has not gone through rigorous testing. In other cases, we want to provide an escape hatch for certain edge-case scenarios that we may not want to expose in general because using the escape hatch is potentially dangerous and should only be reserved special occasions. For these purposes, Ambari has a notion of feature flags. Make use of Feature Flags when adding new features that follow under these categories. Feature Flags has more details on this.