Skip to content

Conversation

@GuySartorelli
Copy link
Member

Two commits intentionally - do not squash.

Issue

Comment on lines +7 to +9
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.
Copy link
Member Author

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

Comment on lines 13 to 18
- [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)
Copy link
Member Author

@GuySartorelli GuySartorelli Jun 4, 2025

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.

Comment on lines 19 to 25
- [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)
Copy link
Member Author

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.

Comment on lines +19 to +21
- [Dependency changes](#dependency-changes)
- [PHP version support](#php-version-support)
- [MySQL 5 no longer supported](#mysql-5-support)
Copy link
Member Author

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

Comment on lines 50 to 45
- [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)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Removed "Elemental TopPage class names changed" section and put that content straight into "Many renamed classes".
  2. Moved "changes to some extension hook names" right under "Many renamed classes" so the renaming stuff is grouped
  3. Moved "Changes to the templating/view layer" and "Changes to LeftAndMain and its subclasses" into the API changes section because they're more about changes to the API than they are about functional enhancements

Comment on lines 38 to 42
- [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)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 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
  2. 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.
  3. "$CurrentPageURL template support removed" section removed - it's just a bullet point under "API changes > general changes" now.
  4. Moved "Changes to scaffolded form fields" and "SiteTree uses form field scaffolding" into here because these are kinda miscellaneous-feeling breaking changes.
  5. Moved "Run CanonicalURLMiddleware in all environments by default" here because it's not really an enhancement, but it is a breaking change

Copy link
Member

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.

Copy link
Member Author

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.

Copy link
Member

@emteknetnz emteknetnz Jun 4, 2025

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?

Copy link
Member Author

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.

Comment on lines 27 to 31
- [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)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Moved validation next to validation
  2. Added "and" to "Changes to sake, BuildTask, and CLI interaction in general" to match actual heading

- [Read-only replica database support](#db-read-only-replicas)
- [Improvements to template functionality](#improvements-to-template-functionality)
Copy link
Member Author

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.

Comment on lines +720 to -500
- 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`.
Copy link
Member Author

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

Copy link
Member

@emteknetnz emteknetnz left a 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)

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [Change to commercially supported modules](#changes-to-support)
- [Changes to commercially supported modules](#changes-to-support)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, good catch

Comment on lines 38 to 42
- [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)
Copy link
Member

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.

@GuySartorelli
Copy link
Member Author

See #757 (comment) in response to "breaking changes" vs "other changes"

Seems like the PR is mostly about just reordering existing content without changing much of it.

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 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.

I would prefer to keep the changes to supported modules at the top, because:

  1. that will be directly below the "modules included in this release" which keeps things logically grouped
  2. that and the other dependency changes are the sort of thing developers should ideally look at the earliest point of scoping an upgrade. "What's changed in my dependencies, and what additional things outside of my own code do I need to worry about?"

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).

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

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.

@emteknetnz
Copy link
Member

OK I guess if we assume the target audience is developers scoping a CMS 6 upgrade then that order makes sense

@GuySartorelli
Copy link
Member Author

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.

@GuySartorelli GuySartorelli force-pushed the pulls/6.0/review-changelog branch from 3301bc1 to 437a7ad Compare June 5, 2025 00:02
@GuySartorelli
Copy link
Member Author

GuySartorelli commented Jun 5, 2025

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).

@GuySartorelli GuySartorelli force-pushed the pulls/6.0/review-changelog branch from 437a7ad to 42674a3 Compare June 5, 2025 00:16
@GuySartorelli
Copy link
Member Author

I have now also:

  1. Added missing links to the following sections:
    • "Support for PHPUnit 11"
    • "getCMSValidator method no longer supported"
  2. Moved "New SingleRecordAdmin class and changes to SiteConfig" out of the "Changes to LeftAndMain and its subclasses" section and into "Features and enhancements" (felt like it deserved its own section, and that seems like the best place for it)
  3. Moved "Most extension hook methods are now protected" up to be next to "Changes to some extension hook names" since they're thematically linked
  4. Added links between the "FormField classes now use FieldValidator for validation" and "validation added to DBFields" sections - anyone dealing with validation in the CMS should be aware that these are connected - though their positions in the list I think are appropriate as one is a new feature while the other is kinda an API change for an existing feature. Happy to move "FormField classes now use FieldValidator for validation" into features and enhancements though if you prefer.

@emteknetnz emteknetnz merged commit 78580ef into silverstripe:6.0 Jun 5, 2025
3 checks passed
@emteknetnz emteknetnz deleted the pulls/6.0/review-changelog branch June 5, 2025 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants