Improve Changelogs (readability, discoverability, ...) #30714
-
Changelogs for Gatsby subpackages are missing critical, breaking updates while being version-bump-spammed. This combination makes it hard to tell what version a given feature landed in and fail to adequately communicate changes to users. For example, the changelog for gatsby-plugin-emotion shows that there have not been any significant updates since v3.0.0 back in 2018. In reality, v5.0.0 included a significant breaking change that required all users of the package to change their code by updating to Emotion v11. That it was a breaking change was even called out in the PR title and commit title, but it never made it into the changelog at all: Coupled with the noise of version bumps that have no changes (itself a scourge) from commits that have nearly 1k changes across hundreds of packages, it's very difficult to know when something has actually been updated, let alone what may have actually changed. That may be okay for patch versions, but when updating minor and major versions where I need to review it becomes a huge time suck.
|
Beta Was this translation helpful? Give feedback.
Replies: 6 comments 1 reply
-
We use lerna changelog that is based on conventional commits. And it is not the best fit for us at the moment, given our release process and the way we use monorepo. For example emotion bump PR contained a prefix There are also other examples when it didn't work that well for us. We are considering other tools to generate changelogs and manage monorepo. But in the meantime, we publish release notes with a high-level overview of changes in every release: https://www.gatsbyjs.com/docs/reference/release-notes/ Emotion bump was mentioned in the December release: https://www.gatsbyjs.com/docs/reference/release-notes/v2.28/ |
Beta Was this translation helpful? Give feedback.
-
I had no idea that Gatsby started publishing minor version release notes (looks like that only started as of November 2020), but in any case it's almost as difficult to track down changes as with the git folder history view on Github. It's nice to have this, and it would be great to be in a newsletter, but it's not an adequate replacement for package-level changelogs. In the real world I am looking at outdated dependencies in my app, like [email protected], and seeing via VSCode tooltip or This is especially important as you look to keep issues to a minimum amidst tens of thousands of developers updating to v3 while others (👋 ) remain on v2 for at least another 12 months. Without exaggeration, updating the dozens of Gatsby subpackage dependencies to the latest available for Gatsby v2 will take me hours with the current setup. |
Beta Was this translation helpful? Give feedback.
-
That's fair. And we definitely want to improve the situation with changelogs. One of the best tools we've found is changesets but they don't support our release workflow at the moment. For anyone interested, you can follow changesets/changesets#548 for updates. And let us know if you are aware of other good tools for changelog generation that work well with monorepos and branch-for-release model. |
Beta Was this translation helpful? Give feedback.
-
Is there something wrong with asking for PRs to include an addition to the changelog, then automating the version listed in the changelog when it's published? E.g.: Changelog for gatsby-plugin-x before:
I open a PR to make gatsby-plugin-x automatically do your homework, including the following patch: diff --git a/CHANGELOG.md b/CHANGELOG.md
# Changelog
## Unreleased
-No changes.
+- Feature: automatically does your homework (link to PR)
## v1.0.0
- Feature A was added (link to PR)
- Bugfix (link to PR)
## v0.9.0
- Minor change to B (link to PR) My PR is accepted, and later a release is cut. The following automated change occurs: diff --git a/package.json b/package.json
"name": "gatsby-plugin-x",
- "version": "1.0.0",
+ "version": "1.1.0",
"license": "MIT", diff --git a/CHANGELOG.md b/CHANGELOG.md
# Changelog
## Unreleased
+No changes.
+
+## v1.1.0
+- Feature: automatically does your homework (link to PR)
## v1.0.0
- Feature A was added (link to PR)
- Bugfix (link to PR)
## v0.9.0
- Minor change to B (link to PR) This might not be off-the-shelf, but it seems straightforward enough and easy to add automated checks for in the PR. |
Beta Was this translation helpful? Give feedback.
-
The problem with this workflow is that it only works well when you always publish all releases from a single branch (so your releases are linear). We publish actual stable releases from release branches and have backporting workflow from master to those release branches. In other words, our releases are a tree. The same change in master may actually end up in So problems are:
So this model is too simplistic and unfortunately doesn't work well with our release process. We will come up with a solution of course, but it's not that simple and requires some planning, tooling, and workflow changes/enforcement. |
Beta Was this translation helpful? Give feedback.
-
So, we've built our custom solution based on tooling from conventional-changelog. All changelogs in the Minor releases also link to corresponding Release Notes. via #32886 |
Beta Was this translation helpful? Give feedback.
So, we've built our custom solution based on tooling from conventional-changelog.
All changelogs in the
master
branch are now updated. Some examples:Minor releases also link to corresponding Release Notes.
via #32886