-
Notifications
You must be signed in to change notification settings - Fork 73
Restructure CMS 6.0 changelog #757
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Restructure CMS 6.0 changelog #757
Conversation
| Silverstripe CMS 6.0.0 is a major release. That means it contains many breaking changes and dependency upgrades. We tried our best to minimise upgrades woes, but you should allocate additional time to account for regression testing. | ||
|
|
||
| This changelog provides a list of changes between Silverstripe CMS 5.4 and 6.0. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similar to the start of the 5.0.0 changelog
| - [Change to commercially supported modules](#changes-to-support) | ||
| - [Modules losing commercial support](#modules-losing-support) | ||
| - [`silverstripe/campaign-admin` no longer part of `silverstripe/recipe-cms`](#campaign-admin) | ||
| - [New supported modules](#new-supported-modules) | ||
| - [New default front-end theme](#theme) | ||
| - [TinyMCE is in a separate module now](#tinymce) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved things that are directly related to changes in supported modules into this section. If you need to add or exclude deps in composer.json, it goes here.
| - [Dependency changes](#dependency-changes) | ||
| - [PHP version support](#php-version-support) | ||
| - [MySQL 5 no longer supported](#mysql-5-support) | ||
| - [`intervention/image` has been upgraded from v2 to v3](#intervention-image) | ||
| - [symfony dependencies have been upgraded from v6 to v7](#symfony) | ||
| - [JavaScript dependencies](#javascript-dependencies) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved dependency changes to be directly below the supported modules section, because then we have all the composer.json stuff packed together.
| - [Dependency changes](#dependency-changes) | ||
| - [PHP version support](#php-version-support) | ||
| - [MySQL 5 no longer supported](#mysql-5-support) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These feel like they belong in dependency changes since they're stuff you deal with before you start diving into actual code
| - [API changes](#api-changes) | ||
| - [Many renamed classes](#renamed-classes) | ||
| - [Changes to some extension hook names](#hooks-renamed) | ||
| - [GraphQL removed from the CMS](#graphql-removed) | ||
| - [Changes to the templating/view layer](#view-layer) | ||
| - [Changes to `LeftAndMain` and its subclasses](#leftandmain-refactor) | ||
| - [`FormField` classes now use `FieldValidator` for validation](#formfield-validation) | ||
| - [`CMSMain` search filter changes](#cmsmain-search-filter) | ||
| - [Most extension hook methods are now protected](#hooks-protected) | ||
| - [Changes to some extension hook names](#hooks-renamed) | ||
| - [`FormField::Value()` split into two methods](#formfield-value) | ||
| - [`Controller::has_curr()` removed](#controller-has-curr) | ||
| - [Strict typing for `Factory` implementations](#factory-strict-typing) | ||
| - [Elemental `TopPage` class names changed](#elemental-top-page) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Removed "Elemental
TopPageclass names changed" section and put that content straight into "Many renamed classes". - Moved "changes to some extension hook names" right under "Many renamed classes" so the renaming stuff is grouped
- Moved "Changes to the templating/view layer" and "Changes to
LeftAndMainand its subclasses" into the API changes section because they're more about changes to the API than they are about functional enhancements
en/08_Changelogs/6.0.0.md
Outdated
| - [Breaking changes](#breaking-changes) | ||
| - [Changes to scaffolded form fields](#scaffolded-fields) | ||
| - [`SiteTree` uses form field scaffolding](#sitetree-scaffolding) | ||
| - [MySQL now defaults to utf8mb4](#mysql-utf8mb4) | ||
| - [Run `CanonicalURLMiddleware` in all environments by default](#url-middleware) | ||
| - [Session and authentication cookie changes](#session-cookie-changes) | ||
| - [`DBDecimal` default value](#dbdecimal-default-value) | ||
| - [`RedirectorPage` validation](#redirectorpage-validation) | ||
| - [Update JS MIME type, remove `type` in `<script>` tags](#js-mime-type-update) | ||
| - [`getSchemaDataDefaults()` now includes attributes](#formfield-schema-data) | ||
| - [Remember me token rotation](#remember-me-token-rotation) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Renamed "Other changes" to "Breaking changes" so it was clearer what sort of thing is in here. I've also added a paragraph to the start of the section indicating the scope of the section
- Moved to be inbetween "Features and enhancements" and "Bug fixes" mostly to get it out from under "API changes". I want "API changes" to be right above the "Full list of removed and changed API" since that's API with API.
- "
$CurrentPageURLtemplate support removed" section removed - it's just a bullet point under "API changes > general changes" now. - Moved "Changes to scaffolded form fields" and "
SiteTreeuses form field scaffolding" into here because these are kinda miscellaneous-feeling breaking changes. - Moved "Run
CanonicalURLMiddlewarein all environments by default" here because it's not really an enhancement, but it is a breaking change
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think "Breaking changes" is helpful here, because we have "API changes" as well which are also breaking. It implies that the API changes are not breaking, when they are.
I think "Other changes" is better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a blurb to the section to help alleviate that confusion - but how about "Other breaking changes"? That's what we used in CMS 5.
I don't like just "Other changes" because it sounds like the stuff in there is less important than the rest of the changelog.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We did all these things to make things better right? So they're basically all enhancements, it's just they happen to be breaking
Maybe just list them under the "Features and enhancements" section?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah that makes sense I guess. I was originally trying to keep some separation between the not-so-breaking things and the "these are just plain breaking changes" things. But any distinction here will have exceptions no matter how you try to cut it. I have no qualms with combining them.
| - [Validation added to DBFields](#dbfield-validation) | ||
| - [Changes to `sake`, `BuildTask`, CLI interaction in general](#cli-changes) | ||
| - [Changes to password validation](#password-validation) | ||
| - [Changes to `sake`, `BuildTask`, and CLI interaction in general](#cli-changes) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Moved validation next to validation
- Added "and" to "Changes to
sake,BuildTask, and CLI interaction in general" to match actual heading
en/08_Changelogs/6.0.0.md
Outdated
| - [Read-only replica database support](#db-read-only-replicas) | ||
| - [Improvements to template functionality](#improvements-to-template-functionality) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Separated this out from "Changes to the templating/view layer" because these are enhancements that aren't really related to the whole separation of view vs model.
| - There is no default in-memory cache used by `DefaultCacheFactory` (APCu cache used to be used by default). | ||
| - The `PHPFilesAdapter` will only be used if it's available for both the webserver *and* CLI. Otherwise, `FilesystemAdapter` will be used for both. | ||
| - There is no default in-memory cache used by `DefaultCacheFactory`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added emphasis to the main breaking change by moving to the top and saying what the default used to be
3651cc5 to
3301bc1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like the PR is mostly about just reordering existing content without changing much of it. I'm basing this of the number of lines added and removed being fairly close when accounting for the CMS 5 changelogs being removed.
I feel the changelog in this PR reads somewhat negatively, because at the top it has several "things that are going away" e.g. modules loosing commercial support.
I think the changelog should lead with "new features" which is what people will be most looking forward to seeing. As much as we go on about "majors are for breaking changes", people are always asking about "what new features are in CMS 6", so we may as well arrange things to meet other peoples expectations.
Here's an alternative arrangement:
Note that within "Change to commercially supported modules" I've reoorded things so that the "new" stuff is up the top and the "going away" stuff is down the bottom
- Features and enhancements
- Validation added to DBFields
- Changes to password validation
- Changes to sake, BuildTask, and CLI interaction in general
- Read-only replica database support
- Improvements to template functionality
- Performance improvements for site tree rendering
- Changes to default cache adapters
- Filter within a range with searchable_fields
- Status flags in the CMS
- New Versioned methods
- Other new features
- Other changes
- Changes to scaffolded form fields
- SiteTree uses form field scaffolding
- MySQL now defaults to utf8mb4
- Run CanonicalURLMiddleware in all environments by default
- Session and authentication cookie changes
- DBDecimal default value
- RedirectorPage validation
- Update JS MIME type, remove type in <script> tags
- getSchemaDataDefaults() now includes attributes
- Remember me token rotation
- Change to commercially supported modules
- New supported modules
- New default front-end theme
- TinyMCE is in a separate module now
- silverstripe/campaign-admin no longer part of silverstripe/recipe-cms
- Modules losing commercial support
- Dependency changes
- PHP version support
- MySQL 5 no longer supported
- intervention/image has been upgraded from v2 to v3
- symfony dependencies have been upgraded from v6 to v7
- JavaScript dependencies
- Upgrade tools
- Bug fixes
- API changes
- Many renamed classes
- Changes to some extension hook names
- GraphQL removed from the CMS
- Changes to the templating/view layer
- Changes to LeftAndMain and its subclasses
- FormField classes now use FieldValidator for validation
- CMSMain search filter changes
- Most extension hook methods are now protected
- FormField::Value() split into two methods
- Controller::has_curr() removed
- Strict typing for Factory implementations
- List interface changes
- General changes
- Full list of removed and changed API (by module, alphabetically)
en/08_Changelogs/6.0.0.md
Outdated
| Silverstripe CMS 6.0.0 is a major release. That means it contains many breaking changes and dependency upgrades. We tried our best to minimise upgrades woes, but you should allocate additional time to account for regression testing. | ||
|
|
||
| This changelog provides a list of changes between Silverstripe CMS 5.4 and 6.0. | ||
|
|
||
| ## Overview | ||
|
|
||
| - [Change to commercially supported modules](#changes-to-support) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - [Change to commercially supported modules](#changes-to-support) | |
| - [Changes to commercially supported modules](#changes-to-support) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, good catch
en/08_Changelogs/6.0.0.md
Outdated
| - [Breaking changes](#breaking-changes) | ||
| - [Changes to scaffolded form fields](#scaffolded-fields) | ||
| - [`SiteTree` uses form field scaffolding](#sitetree-scaffolding) | ||
| - [MySQL now defaults to utf8mb4](#mysql-utf8mb4) | ||
| - [Run `CanonicalURLMiddleware` in all environments by default](#url-middleware) | ||
| - [Session and authentication cookie changes](#session-cookie-changes) | ||
| - [`DBDecimal` default value](#dbdecimal-default-value) | ||
| - [`RedirectorPage` validation](#redirectorpage-validation) | ||
| - [Update JS MIME type, remove `type` in `<script>` tags](#js-mime-type-update) | ||
| - [`getSchemaDataDefaults()` now includes attributes](#formfield-schema-data) | ||
| - [Remember me token rotation](#remember-me-token-rotation) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think "Breaking changes" is helpful here, because we have "API changes" as well which are also breaking. It implies that the API changes are not breaking, when they are.
I think "Other changes" is better.
|
See #757 (comment) in response to "breaking changes" vs "other changes"
Yes, I figured restructuring should be its own PR, and updating content should be separate, or else it would be a nightmare to review.
I would prefer to keep the changes to supported modules at the top, because:
I don't think people scoping and performing upgrades from CMS 5 to CMS 6 will care that much about new features - they are likely to want to perform a like-for-like upgrade which means they need to know about breaking changes and information pertinent to their upgrade primarily. I also don't think there's anything "negative" about the ordering of the changelog. It's known that a major release includes breaking changes. Besides which, the changelog isn't a marketing tool, it's an upgrade tool. IMO the order should be whatever's most helpful to people using the changelog to upgrade their projects, but within a logical structure (e.g. don't put features and enhancements last because the API stuff should ideally come just before the full list of API changes, which groups nicely with the commits list).
Similarly to my thoughts about the order as a whole - I think the order here should be "what is most useful for upgrades" which ideally puts the changes to existing support first. |
|
OK I guess if we assume the target audience is developers scoping a CMS 6 upgrade then that order makes sense |
|
Yeah I think we have to assume that - the blog post is for a less technical audience, but the changelog kinda has to be for developers or else we will have to start having discussions like "is that too technical a detail? Will non-technical people understand this?" which starts to diminish the usefulness of the changelog. |
3301bc1 to
437a7ad
Compare
|
I've rearranged stuff within the now-combined features and enhancements section in a way that I think makes sense - with things more likely to affect upgrades higher in the list, and things less likely to affect upgrades lower in the list (but also with things that are thematically similar close to each other). |
437a7ad to
42674a3
Compare
|
I have now also:
|
Two commits intentionally - do not squash.
Issue