OpenBMC Release Process Document

This is the initial set of agreements from the Release Planning work group
defining the release process and schedule, milestones, content definition and
feature prioritization.

Change-Id: Iaaf8c70a7e4a3df8012545c37ad47042c1fa7884
Signed-off-by: Kurt Taylor <kurt.r.taylor@gmail.com>
diff --git a/release_process.md b/release_process.md
new file mode 100644
index 0000000..c0b2965
--- /dev/null
+++ b/release_process.md
@@ -0,0 +1,121 @@
+# OpenBMC Release Process
+The OpenBMC release process document is the output of the Release Planning
+work group. This documents the set of topics that have been discussed and
+agreed upon to date, defining such things as the release process and schedule,
+milestones, content definition and feature prioritization. All the decisions
+were made in the work group meetings, with representatives from each member
+company. You are encouraged to get involved and contribute. The meeting
+information is available on the OpenBMC wiki:
+
+https://github.com/openbmc/openbmc/wiki/Release-Planning
+
+## Release Cycle
+
+### Schedule
+OpenBMC has its initial formal release branch as a Linux Foundation project
+in February 2019, with a new release branch following every 6 months. Releases
+are purposefully offset from Yocto releases by a few months to allow for
+integration and testing.
+
+### Versioning
+The OpenBMC release will follow the Yocto numbering with slight modification
+to allow for build information. The release version will follow the form:
+Major.Minor.Fix.obmc-build. For example:
+
+`2.6.4.obmc-2`
+
+This would be interpreted as major release 2, minor release 6, fix release 4,
+build 2. Even though OpenBMC will follow the Yocto release numbering, code
+names for OpenBMC releases are still TBD.
+
+### Milestones
+Milestones are important dates within a release cycle. The milestone dates
+agreed to are as follows: Design, Code, Freeze, and Release. The milestones
+will each have entry and exit criteria.
+
+#### Design
+This is the date in the release cycle when a feature's design must be discussed
+openly and completed. The design should follow the published design template
+and be merged before this milestone. If this is not met, then the feature is
+at risk for not being merged for the forming release cycle.
+
+The Design Template can be found here:
+https://github.com/openbmc/docs/blob/master/designs/design-template.md
+
+#### Code
+This milestone represents some major functionality that has to be completed by
+this date in order for the feature to be delivered on time. It is a checkpoint
+for the developers doing the work to evaluate and commit to for having that
+part complete. Globally there can be one or more code milestones established,
+but currently these are TBD.
+
+#### Freeze
+This is the date where the release content is frozen, that is, no new major
+content will be accepted. This is necessary to allow time for the new features
+to be fully tested. Any defects found will be evaluated to be included or not,
+based on how close the release milestone is, and how much the defect impacts
+other components and features. Feature freeze will occur 4 weeks before the
+release milestone.
+
+How the release freeze will be done with regard to freeze and branch
+immediately or to freeze and test, branching on the release date is still TBD.
+
+#### Release
+The release milestone is the release date. It is defined as happening some
+time within a targeted release week. It is desired to have the release happen
+as soon as possible within the release week, but the week is given to allow
+for typical infrastructure problems to occur and be fixed in order for the
+release to happen.
+
+The release date is a fixed time frame and cannot be moved. If a feature is
+not done by the freeze milestone, then it will not be in that release, it will
+have to be included in the next release cycle. The release date will not float
+out until the feature is complete.
+
+## Release Content
+
+### Content Input
+Community members define release content by inputting needed work into the
+release management tool(s) specified below. Typically the content is a feature
+that a particular company needs and one that they are willing to allocate some
+resources to see completed. The feature does not need to be fully staffed by
+that company, unless it is critical to that company and no other community
+member is willing to contribute.
+
+Release content is disclosed regardless of resource commitment because the
+community consists of not just member companies, but individuals interested in
+furthering OpenBMC. These community members may be willing to contribute to a
+feature.
+
+### Prioritization
+Prioritization happens naturally with listing the content proposed for a
+release cycle. If every community member participating in the Release Planning
+work group wants a particular feature and agree to help staff the effort, it
+automatically becomes a higher priority than an item that is mildly needed and
+not staffed.
+
+Just as with the content being fully disclosed, it is important to maintain a
+list of medium priority work that didn't make the release cut, as it may be an
+area that a new community member would like to start working on.
+
+### Work Group Formation
+Work groups form in the open around features for a release, not around company
+boundaries. Work groups would definitely be needed for work spanning releases,
+or high priority features with multiple community members. These work groups
+need a lead to form and guide the group through the release milestones and to
+deliver a well designed and tested feature.
+
+Work groups can be formal or not depending on the work needing to be done and
+the community member style. They can consist of email to the list or formal
+weekly meetings via IRC or call to discuss designs and progress.
+
+### Backlog
+The backlog is simply the proposed release features that did not make the
+release plan. They will be additional input for the next release cycle. They
+are also available for new community members looking for a new project to
+drive if none of the current work is within their expertise.
+
+### Release Management Tools
+We are initially using a Google spreadsheet, but the desire is to move to a
+better tool to track and manage content and schedules. Several have been
+proposed but selection is still TBD.