Release notes
We publish detailed release notes describing changes that impact external users of CockroachDB. Engineers provide "Release note" texts in their cockroach
repo commits. These are then aggregated and edited by the Docs Team. This page provides guidance on when and how Cockroach Labs engineers should write these texts.
This information is also provided as a CockroachU course to all new hires, though all current roachers are welcome to review it. The course largely tracks with this wiki page. It does not contain the the detail on release note categories. For feedback on the course, contact @Douglas Weatherbee . For other release notes questions, contact @Michael Lewis.
Who is the audience for release note texts
Release notes are primarily for external users. Anything that is user-facing potentially needs a release note. Refer to When to write release note texts.
Do not include internal information in release notes. To explain and communicate about your change with your PR reviewers, including other Cockroach Labs employees, use any part of the PR description aside from the release notes. This helps technical writers avoid publishing internal information and keeps the release notes useful to our customers. If a product change applies only to an internal user group (internal to CRL, e.g. the change only affects CC and is only visible to SREs), add release note: none
to the PR description instead.
When to write release note texts
Write release note texts for changes that impacts external users, for example:
Changes to how users interact with or experience the product
Examples: New/changed functionality, backward-incompatible changes, build dependencies, UI changes
Changes to how the product behaves
Examples: Performance changes, command response changes (that aren't backward-incompatible), architecture changes
The following should be kept in sync with Release note style guidelines in the documentation wiki. If you’re not sure, check with #docs-cst-release-notes in Slack.
Do NOT write release note texts for internal changes, such as:
Functionality that is still considered too immature for docs, such as features in private preview:
Cluster virtualization is supported in Preview, and release notes about user-facing aspects of cluster virtualization are allowed. However, remove release notes pertaining to running unsupported configurations such as running multiple non-system virtual clusters. Additionally, avoid ‘tenant’ in favor of the updated terminology ‘virtual cluster’ or, where applicable, ‘the system virtual cluster’. (for v23.1, v23.2, v24.1 release notes).
Logical data replication aka “activex2”, “active-active” (for v24.2 release notes).
Unbundled billing for CDC and Disaster Recovery (for v24.2 release notes).
Telemetry logging (e.g. the
TELEMETRY
channel), the "Sampled query telemetry log", or telemetry data. Note that we still want to document these changes, if they apply to external use cases, but they should be excluded from release notes. (Source.)Additions or changes to internal settings; those that begin with
crdb_internal.
Be careful not to remove entries aboutcrdb_internal.
tables! Aside from release notes, there are some docs that refer tocrdb_internal
tables. These should be considered and approved for publication on a case-by-case basis.
Functionality that is not accessible to, or intended for, external users.
Code refactors
Testing/infrastructure work
Undocumented settings, commands, or APIs for use internally by CockroachDB, such as
cockroach gen settings-list
andcockroach gen metrics-list
How to write release note texts
High-level rules
Every PR should have at least one “Release note” text.
If a PR is missing a "Release note" text, the script will put it in a "Changes without release note annotation" section, and the Docs team will have to investigate. This can be time-consuming.
Ensure “Release note” texts are in commit messages and optionally copied into PR descriptions.
If they are only in PR descriptions, they will not get picked up.
If a commit covers multiple user-visible changes in different areas (e.g., a bug fix and a performance improvement), write multiple, distinct release note texts within the same commit message.
Put "Release note" texts at the end of commits.
Everything after each "Release note" annotation gets picked up by the script.
Exclude changes to
reserved
interfaces from release notes. Refer to the table of interfaces in the API Support Policy. This is new guidance!
Format
To include a release note texts in our published release notes, use: "
Release note (<single category>): <description>
".For guidance on choosing the right category, see Release note categories.
For guidance on writing a good description, see Release note descriptions.
To exclude a release note text from our published release notes, use: "
Release note: None
".
Categories
In your release note texts, try to use the following categories verbatim to make sure your notes get placed in the right section of the generated release notes. The script tries to catch spelling mistakes and alternate categories that we have seen multiple times, but if it can't find a matching category, the note will be placed in a "Miscellaneous" section and the Docs team will have to investigate. ,
Only use one category per release note. When a commit falls into more than one category, choose the category that makes the most sense from a user perspective.
These categories are imperfect and will evolve over time.
Category | Valid alternate | Focus |
---|---|---|
|
| Backward-incompatible changes to CockroachDB interfaces. This may include changes to SQL statements, If the change is considered backward-incompatible (i.e., the change can break programmatic usage of an interface), use the See example. |
|
| Changes to CockroachDB features requiring an enterprise license, e.g., |
|
| Changes to cockroach commands and endpoints that affect primarily operators tasked with setting up and maintaining production clusters. This includes changes to logging configurations and behavior, additions or removal of metrics, health and monitoring endpoints, HTTP endpoints, environment variables, integrations with service managers, CLI flags for server commands, exit codes, etc. |
|
| Changes to cockroach commands that affect primarily application developers, CockroachDB developers and contributors, and operators running experiments or small-scale testing/staging clusters. This includes changes to the SQL shells, |
|
| Changes to SQL statements, functions/operators, system catalogs, or execution. |
|
| Changes to the DB Console and any associated metrics. |
|
| Changes that impacts the use of security features (IAM, TLS, etc.) or the security profile of the product. |
|
| Changes that improve performance, often at kv, storage, and SQL engine levels. |
|
| Changes pertaining to the cluster virtualization and multi-tenancy infrastructure and that are potentially user-facing. |
|
| Changes that fix known problems as opposed to add or improve functionality. |
|
| Changes that don't fit anywhere else. Only use this if you have no other good option. This might include changes to logs and user-facing configs for Kubernetes, Prometheus, Alertmanager, etc. We probably need new, meaningful categories. |
| Changes to requirements for building CockroachDB from source. |
This list is also documented in the commit message template, which lives in githooks/prepare-commit-msg.
Cloud Categories
The following categories should be used for release notes in the managed-service
repo.
Category | Valid alternate | Focus |
---|---|---|
|
| General changes and major feature releases (for example, multi-region capabilities for Serverless and support for Azure on Dedicated). |
|
| Changes to the Cloud Console and any associated metrics. |
|
| Changes that affect the Cloud API (for example, new endpoints or feature support). |
|
| Changes that affect the |
|
| Changes that impact Cloud security (for example, FGAC, PrivateLink, and CMEK). |
|
| Changes that fix known problems as opposed to add or improve functionality. |
Descriptions
The release note description (the part after the colon) is obviously the most important part. Here are some best practices:
Default to more information than less.
A thin/unclear release note text causes Docs writers to have to read the full PR description anyway.
Explain what changed, how it changed, and why it's relevant to users.
For bug fixes, describing the cause and symptoms of the bug and since when the bug existed.
Use past tense (e.g., "Added the xxx statement...", "Fixed a bug...") or present tense ("CockroachDB now supports...", "It is now possible to...").
Note if the change is part of progress toward a broader feature on the roadmap.
This is new guidance! But it will tremendously help the Docs team correlate granular changes to larger feature work.
Examples
Enterprise change
Rating | Text | Why |
---|---|---|
Poor | Release note (ccl): Default interval for the closed timestamp cluster setting is different. |
|
Better | Release note (enterprise change): Shortened the default interval for the |
|
Best | Release note (enterprise change): Shortened the default interval for the |
|
Bug fix
Rating | Text | Why |
---|---|---|
Poor | Release note (bug): No more duplicate rows for |
|
Better | Release note (bug fix): Fixed a bug that caused duplicate rows in the results of or Multiple nodes attempting to populate the results of |
|
Best | Release note (bug fix): Fixed a bug introduced in v19.2.3 that caused duplicate rows in the results of or Multiple nodes attempting to populate the results of |
|
Backward-incompatible change
If a backward-incompatible change is made to a stable CockroachDB interface, it must be categorized as such in the release notes. Refer to the list of backward-incompatible changes and the table of interfaces in the API Support Policy.
Rating | Text | Why |
---|---|---|
Poor | Release note (sql): Match |
|
Better | Release note (sql): Casting intervals to integers and floats now values a year at 365.25 days in seconds instead of 365 days. |
|
Best | Release note (backward-incompatible change): Casting intervals to integers and floats now values a year at 365.25 days in seconds instead of 365 days, for Postgres compatibility. |
|
How to change release note texts
If the PR is not merged yet:
Push a new commit with the updated release note text.
There is currently no way for Engineers to add or amend release note texts to a merged PR. For now, if you have a text you need to add, change, or tell the Docs team to ignore, please:
Figure out what release that commit will appear in.
Create a “Product Change” Jira issue in the DOC project.
Add the release note text in the description.
Add the PR link.
Link the issue you created to the relevant release note tracking issue.
Copyright (C) Cockroach Labs.
Attention: This documentation is provided on an "as is" basis, without warranties or conditions of any kind, either express or implied, including, without limitation, any warranties or conditions of title, non-infringement, merchantability, or fitness for a particular purpose.