blob: ff7b3fad615182465609c692ce1dff4baee7d658 [file] [log] [blame] [view]
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
-->
# Release Voting Guidelines
> This document describes what Apache requires you to do for a vote. Please make sure you understand this first. You can refer to the [shorter checklist](./vote-checklist.md) every time you vote.
Reference: https://www.apache.org/dev/release-publishing.html
Apache releases require at least 3 +1 votes, and there must be more +1s than -1s.
**Note**: There is no benefit in having more than 3 +1 votes. Don't waste your time if a vote already looks in good shape.
How to start / close a vote thread is described in the release process docs.
This page focuses on what it means to +1 a vote thread.
When we (or at least, members of the PMC), vote on a release, we
are expressing confidence that:
1. Our sources are properly licensed*.
1. We have only compatibly licensed dependencies (and appropriate NOTICE lines)*.
1. No IP was added without the consent of its owner**.
1. Archives are properly signed & hashed.
1. Repo tags match sha1 stated in vote email.
1. We believe the quality of the release is better than the previous one.
_* These items are generally checked by the Release Manager.
The Release Manager should state that they've checked them when they +1 the vote._
_** It is the responsibility of committers to ensure that no
invalid IP enters the codebase. It's not something that we need to re-check
at each release. For more info, see [this discussion](http://markmail.org/thread/7gqwzrdie46f4qtx)_
When you +1 a vote. You should say what work you did in order to gain confidence in the release.
For example, the Release Manager would say:
+1
* Ran coho audit-license-headers over the relevant repos
* Used `license-checker` to ensure all dependencies have Apache-compatible licenses
* Ensured continuous build was green when repos were tagged
Note: here are the repos with continuous builds:
* https://github.com/apache/cordova-lib
For example, someone else might say:
+1
* Confirmed sigs & hashes with `coho verify-archive` [1]
* Verified sha1s match tags with `coho verify-tags` [2]
* Re-created archives to ensure contents match release candidate [3]
- [1] Download all files from the `https://dist.apache.org/repos/dist/...` link in the email (`*.tgz`, `*.tgz.asc` and `*.tgz.sha512`). Run `coho verify-archive ....tgz` in the download folder. (If you have gpg problems, look at https://github.com/apache/cordova-coho/blob/master/docs/setting-up-gpg.md)
- [2] Go to the directory where you ran `coho repo-clone` before. Execute `coho verify-tags -g`, then paste the tag string from the email (e.g. `cordova-cli: 8.1.1 (3f8d9c88d6)`), then press [Enter] and wait a bit (I had to hit Enter again to unstuck the process as well). You should get an output like `cordova-cli: Tag hash verified.`.
- [3] ???
About the quality of the release (in the list above):
- We strive to maintain release-worthy quality at all times.
- cordova-medic runs automated tests for each commit.
Given these:
- Manual testing can be done with release candidates, but is not strictly necessary.
- Bugs don't block releases, but regressions generally do.
## Non-Binding Votes
Our goal is to be inclusive in everything we do. If a non-pmc takes the time to vote on a release, we should acknowledge that they did so in the vote summary thread under the heading `non-binding-votes`.
Sample text is included in:
- [plugins-release-process](plugins-release-process.md)
- [app-hello-world-release-process](app-hello-world-release-process.md)
- [coho-release-process](coho-release-process.md)
- [platforms-release-process](platforms-release-process.md)
- [tools-release-process](tools-release-process.md)
Non-binding votes benefit us all, the more people who verify a release the better; additionally, it is a good way for someone who wants to become a committer/pmc to show their interest.