Final Proposal Details
The proposal
The Details
Best Practices
Best practices are functional or non-functional design patterns. Some potential examples:
Container rootfs has to be mounted read-only
Secret material should not be placed in logs
Components in maintenance mode cannot be used as a dependency
(just examples, not an initial set of best-practices)
Best practices should be either a separate Jira project or a repo in RST that can be included in the documentation. The details of creation process depends on the form chosen by then community.
Anyone in the community can propose a new best practice at any time.
Best practice can be in one of below states:
WIP
Under review
Waiting for approval
Approved
Rejected
Removed
WIP - default state for every new BP that allows the author to work on it without bothering other people
Under review - the BP is in the review with impacted parties (Every BP should be socialized with PTL. BP that impact the architecture (functional) should be consulted with the architecture Team. BP that impacts docs should be consulted with DOC team. BP that impacts security aspects should be consulted with SECCOM)
Waiting for approval - The BP has been socialized with required parties and now it is ready to be voted by the TSC
Approved - The BP has been approved by the TSC and it should be followed by all New Code (the definition is below)
Rejected - The BP has been rejected by the TSC, which means that there is no agreement in the community that this is the right pattern to follow
Removed - The BP that has been previously in the Approved state may turn out to be out of date or impossible to follow due to some project constraints. In such case anyone may ask the TSC to revise such a BP and revoke it.
Best practices has to be followed by the new code that is arriving to the ONAP tree. The definition of new code may depend on the project thus it's recommended that every PTL clarifies the rules for his project.
For example:
In OOM project typically we consider every new chart that arrives for a review to be a new code
In DOC project a new code may be a new page or a new module
In typical java development project a new code may be new module or new microservice depending on PTL criteria.
It's advised, but not mandatory, for the PTL to ensure, as soon as resources allows, that the code that is already in ONAP repos and is under his responsibility follow all approved BP. However this is not going to be gated as long as given BP is not approved as a Global Requirement for a given release.
Global Requirements
Global requirement is an already approved best practice, that has been chosen by the TSC to be the gating criteria for a given release.
Before every release TSC agrees on the list of BP that are view by them as High Priority Issues and should be applied to whole ONAP code base, not only to a new code.
Components that does not meet GR at Feature Freeze will be reverted back to the container version used in the previous release. This means that no new functionality can be added to this container in a given release if it doesn't meet the GR.
Feature
This is practically the same as our current "Use case". It's basically an ONAP-level functionality that impacts multiple components and is visible to the end user. The name "Feature" can be replaced with the current "Use case" if community prefers this name. This can be represented as a Jira ticket in a dedicated project or an RST page in a dedicated repo.
Feature may be in one of below states:
WIP
Under review
Waiting for approval
Approved
Rejected
Active
On Hold
In testing
Finished
Dropped
WIP - default state for every new feature that allows the author to work on it without bothering other people
Under review - the BP is in the review with:
Architecture
Requirements subcomittee
SECCOM
PTLs
To save submitter time, the review should happen asynchronously by default (unless submitter asked for a VCC to present) and only if subcommittee has additional questions a VCC meeting to answer them should be scheduled. Questions and doubts should be written down before the VCC.
Waiting for approval - The feature has been socialized with required parties and now it is ready to be voted by the TSC
Approved - The Feature has been approved by the TSC. Implementation may be started if the feature is put in the "Active" state before "Spec freeze" for a given release.
Rejected - The Feature has been rejected by the TSC, which means that there is no agreement in the community that this is the right change
Active - The feature is being actively worked on in a current release.
On Hold - The implementation has been started but there is no progress planned for a current release due to some constraints.
In testing - The feature is complete and is now being tested by the integration team
Finished - implemented and tested
Dropped - people lost interest in this feature
Anyone in the community can propose a new feature at any time but the implementation should be started only when Feature is Active for a given release.
A feature may be linked directly to tasks if it's relatively simple or consist of multiple specs from which every one may be tested separately in "early release model".
Spec
This is "a smaller feature" which involves architectural change in only single component ie. some internal design refactoring etc. This can really be a Jira epic that describes where associated tasks are going.
Spec is scoped for single component thus it has to be approved only by people who know this component best - PTL and his or her committers.
PTL may request additional review from subcommittees if needed.
Spec has to be marked as Active before it can be implemented. In fact it behaves similar to Features but is just smaller
Kickoff
Official start of the new release. Community presents to TSC GR proposals with reason why they believe this GR is important.
GR Approved
Global requirements has been approved by the TSC.
Spec freeze
All specs and features that will be worked on in this release has been put in the Active state. This is the maximal set of features that can be achieved in this release.
Feature freeze
We no longer accept commits that adds new features. Only bug fixes are accepted (Jira ticket has to be of type Bug). All projects that didn't met GR will be reverted to the container image from previous release.
At this point we know exactly what has been implemented.
RC0
We branch out release branch. On the master branch the work for next release may start and on our release branch we focus on stabilization, bug fixing and testing.
Sign-off
We officially announce our new release.