55This document describes the governance process under which the CloudEvents
66project will manage this repository.
77
8+ ## Table of Contents & References
9+
10+ - [ Meetings] ( #meetings )
11+ - [ Membership] ( #membership )
12+ - [ Admins] ( #admins )
13+ - [ PRs] ( #prs )
14+ - [ Voting] ( #voting )
15+ - [ Release Process and Versioning] ( #release-process-and-versioning )
16+ - [ Additional Information] ( #additional-information )
17+
818For easy reference, additional documentation related to how this project,
919and its subprojects, operate are listed below:
10- - [ Contributing] ( CONTRIBUTING.md )
11- - [ List of contributors to the project] ( contributors.md )
12- - [ Project Releases] ( RELEASES.md )
13- - [ Project Roadmap] ( ROADMAP.md )
14- - [ SDK Governance] ( SDK-GOVERNANCE.md )
15- - [ SDK Maintainer Guidlines] ( SDK-maintainer-guidelines.md )
16- - [ SDK PR Guidlines] ( SDK-PR-guidelines.md )
20+ - [ Contributing] ( CONTRIBUTING.md )
21+ - [ List of contributors to the project] ( contributors.md )
22+ - [ Project Releases] ( RELEASES.md )
23+ - [ Project Roadmap] ( ROADMAP.md )
24+ - [ SDK Governance] ( SDK-GOVERNANCE.md )
25+ - [ SDK Maintainer Guidlines] ( SDK-maintainer-guidelines.md )
26+ - [ SDK PR Guidlines] ( SDK-PR-guidelines.md )
1727
1828## Meetings
1929
@@ -139,18 +149,14 @@ If a vote is taken, the follow rules will be followed:
139149
140150The specifications produced will adhere to the following:
141151
142- - The versioning scheme used will follow [ semver] ( https://semver.org/ )
143- - All normative specifications, and the Primer, will be grouped together into a
144- single logical unit and released at the same time, at the same version number.
145- This is true regardless of whether each individual document actually changed
146- during the release cycle.
147- - When a new release of a specification is ready, it will be given a version
148- number matching the appropriate semver version string but with a suffix of
149- ` -rc# ` (release candidate). This will indicate that the authors believe it
150- is ready for final release but it needs to go through a testing period to
151- allow for broader testing before it promoted to its final version number.
152- This will be true for updates to existing specifications and for new
153- specifications.
152+ - The versioning scheme used will follow [ semver] ( https://semver.org/ ) .
153+
154+ - Specifications will be grouped into logical units and released at the same
155+ time, with the same version number. This is true regardless of whether each
156+ individual document actually changed during the release cycle. The
157+ determination of the number of groups, and which document belongs in a group,
158+ can change over time.
159+
154160- Since changing the CloudEvents ` specversion ` string could have a significant
155161 impact on implementations, all non-breaking changes will be made as
156162 "patch" version updates - this allows for the value "on the wire" to remain
@@ -159,51 +165,79 @@ The specifications produced will adhere to the following:
159165 that the "minor" version number will always be zero and the ` specversion `
160166 string will always be of the form ` X.0 ` .
161167
162- Note that these rules do not apply to the
168+ Note that these rules do not apply to unversioned documents, such as the
163169[ documented extensions] ( ../cloudevents/extensions/README.md ) .
164170
165- All versions are tagged from the ` main ` branch, but the tag only applies to
166- the "subject" of the release - the directory containing the information
167- covered by that release (e.g. ` subscriptions ` or ` cloudevents ` ). The
168- [ CloudEvents web site] ( https://cloudevents.io/ ) takes appropriate content from
169- each tagged version. (If the directory containing the information covered
170- by the release is not in a top-level directory, the subject should be the full path,
171- e.g. ` top-dir/sub-dir ` .)
172-
173- > Note: should the need arise, additional branches may be created. For example,
174- > it is likely that a ` core-v2.0 ` branch will be created to collect changes for
175- > the core specification version 2.0 significantly before those changes are
176- > merged into the main branch, to allow for ongoing work on the main branch.
177- > Such branches should be deleted once their content is eventually merged.
178-
179171To create a new release:
180172
181173- Periodically the group will examine the list of extensions to determine
182174 if any action should be taken (e.g. removed due to it being stale). The
183175 creation of a new release will be the reminder to do this check. If any
184176 changes are needed then PRs will be created and reviewed by the group.
185- - Create a PR that modifies the [ README] ( README.md ) , and all specifications (ie.
186- \* .md files) that include a version string, to the new release version string.
187- Make sure to remove ` -wip ` from all of the version strings.
177+
178+ - For the most part we try to only use a single branch ("main") for our work.
179+ Git branches will be used as a way to snapshot/tag releases. While we hope
180+ to not push new commits to these branches, in practice, it is possible that
181+ changes to a release might be needed without "picking up" other changes that
182+ might have been commited to "main". Creating the branch during the release
183+ process will makes this easier to manage should the need should arise.
184+
185+ - Determine the new release version string. It should be of the form:
186+ ` <subject>/vX.Y.Z ` , e.g. ` cloudevents/v1.0.4 ` or ` subscriptions/v1.0.0 ` .
187+
188+ - Create a PR (for the "main" branch") that:
189+ - Modifies the repo's files to use the new version string appended with
190+ ` -rc# ` as appropriate. Make sure to remove all ` -wip ` suffixes as needed.
191+ - Merge the PR.
192+ - Initiate a final review/test of the release.
193+
194+ - A "release candidate" tag will be created with the new release version
195+ string but with a suffix of ` -rc# ` (release candidate). This will indicate
196+ that the authors believe it is ready for final review/testing. This will be
197+ true for updates to existing specifications and for new specifications.
198+
199+ - When review/testing is completed, create a PR (for the "main" branch") that:
200+ - Modifies the repo's files to use the new version string (w/o ` -rc# ` ) as
201+ appropriate.
202+ - Update [ RELEASES.md] ( RELEASES.md ) to mention the new release, and
203+ reference the yet-to-be-created release tag.
204+ - Update the appropriate ` */RELEASE_NOTES.md ` file with the changes
205+ for the release. The list can be generated via:
206+ ` git log --pretty=format:%s main...v0.1 | grep -v "Merge pull" `
207+ by replacing "v0.1" with the name of the previous release. Or, use github's
208+ [ new release] ( https://github.com/cloudevents/spec/releases/new ) process
209+ to generate the list w/o actually creating the release yet.
210+
188211- Merge the PR.
189- - Create a [ new release ] ( https://github.com/cloudevents/spec/releases/ new) :
190- - Choose a "Tag version" of the form: ` <subject>/vX.Y.Z ` , e.g .
191- ` cloudevents/v1.0.4 ` or ` subscriptions/v1.0.0 `
192- - Target should be ` main ` , the default value
193- - Release title should be the same as the Tag - ` <subject>/vX.Y.Z `
194- - Add some descriptive text, or the list of PRs that have been merged since
195- the previous release. The git query to get the list commits since the last
196- release is:
197- ` git log --pretty=format:%s main...v0.1 | grep -v "Merge pull" ` .
198- Just replace "v0.1" with the name of the previous release.
199- - Press ` Publish release ` button
200- - Create an "announcement" highlighting the key features of the new release and
201- any potential noteworthy activities of the group:
202- - Send it to the mailing list
203- - Announce the release on our
204- [ twitter account] ( http://twitter .com/cloudeventsio )
212+ - Note that the link checker should fail since any references to the new
213+ release tag will not be valid yet. This is expected .
214+
215+ - Create a new branch with the same name as the new release version string
216+ appended with ` -branch ` (e.g. ` <subject>/vX.Y.Z-branch ` ).
217+ - Use Github to create a
218+ [ new release] ( https://github.com/cloudevents/spec/releases/new ) .
219+ During that process, create a new tag with the new release version
220+ string (e.g. ` <subject>/vX.Y.Z ` ) w/o any suffix .
221+ - Rerun the github CI actions from the previous PR and the "main" branch as
222+ they should all pass now; as a sanity check.
223+
224+ - Create an "announcement" highlighting the key features of the new release
225+ and any potential noteworthy activities of the group:
226+ - Send it to the mailing lists.
227+ - Announce the release on our [ X account] ( http://x .com/cloudeventsio ) .
205228 - Add it to the "announcement" section of our
206- [ website] ( https://cloudevents.io/ )
229+ [ website] ( https://cloudevents.io/ ) .
230+
231+ - If an update to a release is needed, create a PR for the appropriate
232+ branches (including "main"), and merge when ready. For any release that's
233+ updated, you'll need to move the tag for that release to point to the HEAD
234+ of that branch. We'll eventually setup a Github action to automatically do
235+ it but for now you can do it via the CLI:
236+ - ` git pull ` to make sure you have all latest branches and tags
237+ - ` git tag -d vX.Y.Z ` to delete the old tag for the release
238+ - ` git tag vX.Y.Z vX.Y.Z-branch ` to create a new tag for the HEAD of the
239+ release branch
240+ - ` git push REMOTE vX.Y.Z -f ` to force the tag to updated in the github repo
207241
208242## Additional Information
209243
0 commit comments