Skip to content
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

DOC Modules losing commercial support #633

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 1 addition & 14 deletions en/00_Getting_Started/05_Recipes.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,6 @@ Silverstripe CMS is powered by a system of components in the form of Composer pa

By design, modules tend to be small and serve a specific function. You may need to combine many modules to achieve a wider goal.

For example, the [`silverstripe/blog`](https://github.com/silverstripe/silverstripe-blog) module by itself simply allows you to create blog posts. It does not include all the features you could want in a blog, like a comment system to display related content.

The [`silverstripe/recipe-blog`](https://github.com/silverstripe/recipe-blog) recipe installs `silverstripe/blog` module, but also:

- [`silverstripe/comments`](https://github.com/silverstripe/silverstripe-comments) and [`silverstripe/comment-notifications`](https://github.com/silverstripe/comment-notifications) to allow the management of comments on blog post
- [`silverstripe/spamprotection`](https://github.com/silverstripe/silverstripe-spamprotection) to provide basic SPAM protection on comments.

## Finding recipes for Silverstripe CMS

The Silverstripe CMS project maintains a number of recipes. Some third parties also maintain recipes.

[Search Packagist for all packages with the `silverstripe-recipe`](https://packagist.org/?query=silverstripe&type=silverstripe-recipe) type to find recipes you can install on your Silverstripe CMS project.

## Releasing supported recipes

When we announce a new release of Silverstripe CMS and publish a changelog for it, we refer to a new set of *recipe* versions, which include new versions of some or all of their associated modules. The easiest way to keep up to date with new Silverstripe CMS releases is to depend on one of the core recipes:
Expand All @@ -46,7 +33,7 @@ When we announce a new release of Silverstripe CMS and publish a changelog for i
the admin UI and CMS features. We recommend specifying this recipe in your dependencies.
- [`silverstripe/installer`](https://packagist.org/packages/silverstripe/installer): Includes `recipe-cms`, and adds a
default theme for the front-end of your site. We recommend creating new projects based on this recipe (
via `composer create-project silverstripe/installer myproject ^5`).
via `composer create-project silverstripe/installer myproject ^6`).

When determining whether you are running the latest version of Silverstripe CMS, it is easier to refer to the Recipe
version than the individual Module versions, which may not align with Recipe versions. You can use Packagist to find
Expand Down
7 changes: 3 additions & 4 deletions en/02_Developer_Guides/00_Model/10_Versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,15 @@ Images and other files are tracked as versioned objects. If a file is referenced

This behavior works both for versioned and unversioned objects.

### Grouping versioned `DataObject` records into a `ChangeSet` (aka campaigns)
### Grouping versioned `DataObject` records into a `ChangeSet`

Sometimes, multiple pages or records may be related in organic ways that cannot be properly expressed through an ownership relation. There's still value in being able to publish those as a block.

For example, your editors may be about to launch a new contest through their website. They've drafted a page to promote the contest, another page with the rules and conditions, a registration page for users to sign up, some promotional images, new sponsor records, etc. All this content needs to become visible simultaneously.

Changes to many objects can be grouped together using the [`ChangeSet`](api:SilverStripe\Versioning\ChangeSet) object. In the CMS, editors can manage `ChangeSet`s through the "Campaign" section (if the `silverstripe/campaign-admin` module is installed). By grouping a series of content changes together as a cohesive unit, content editors can bulk publish an entire body of content all at once, which affords them much more power and control over interdependent content types.
Changes to many objects can be grouped together using the [`ChangeSet`](api:SilverStripe\Versioning\ChangeSet) object. By grouping a series of content changes together as a cohesive unit. This can allow bulk publish an entire body of content all at once, which affords them much more power and control over interdependent content types. Note that there is currently no UI to enable this functionality, so it must be done programmatically.

Records can be added to a changeset in the CMS by using the "Add to campaign" button
that is available on the edit forms of all pages and files. Programmatically, this is done by creating a `ChangeSet` object and invoking its [`addObject(DataObject $record)`](api:SilverStripe\Versioning\ChangeSet::addObject()) method.
Programmatically, this is done by creating a `ChangeSet` object and invoking its [`addObject(DataObject $record)`](api:SilverStripe\Versioning\ChangeSet::addObject()) method.

> [!NOTE]
> DataObjects can be added to more than one ChangeSet.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,13 @@ The easiest way to access the pattern library is to view it online. The pattern

If you're developing a new React component, running the pattern library locally is a good way to interact with it.

The pattern library is built from the `silverstripe/admin` module, but it also requires `silverstripe/asset-admin`, `silversrtipe/cms` and `silverstripe/campaign-admin`.
The pattern library is built from the `silverstripe/admin` module, but it also requires `silverstripe/asset-admin`, and `silverstripe/cms`.

To run the pattern library locally, you'll need a Silverstripe CMS project based on `silverstripe/recipe-cms` and `yarn` installed locally. The pattern library requires the JS source files so you'll need to use the `--prefer-source` flag when installing your dependencies with Composer.

```bash
composer install --prefer-source
(cd vendor/silverstripe/asset-admin && yarn install)
(cd vendor/silverstripe/campaign-admin && yarn install)
(cd vendor/silverstripe/cms && yarn install)
cd vendor/silverstripe/admin && yarn install && yarn pattern-lib
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The Admin interface is bundled within the Silverstripe CMS but is most commonly
module. The main class for displaying the interface is a specialized [Controller](api:SilverStripe\Control\Controller) called [LeftAndMain](api:SilverStripe\Admin\LeftAndMain), named
as it is designed around a left hand navigation and a main edit form.

The user interface logic has a combination of jQuery and [jQuery.entwine](./jquery_entwine/) with with [ReactJS](https://react.dev/). Some admin sections (`AssetAdmin` and `CampaignAdmin`) are powered purely with react components, while others have a combination of both react components and jQuery logic.
The user interface logic has a combination of jQuery and [jQuery.entwine](./jquery_entwine/) with [ReactJS](https://react.dev/). Some admin sections, such as `AssetAdmin`, are powered purely with react components, while others have a combination of both react components and jQuery logic.

[CHILDREN]

Expand Down
80 changes: 80 additions & 0 deletions en/08_Changelogs/6.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ title: 6.0.0 (unreleased)

## Overview

- [Change to commercially supported modules](#changes-to-support)
- [Modules losing commercial support](#modules-losing-support)
- [Campaign admin removed from the CMS](#campaign-admin-removed)
- [Features and enhancements](#features-and-enhancements)
- [Validation added to DBFields](#dbfield-validation)
- [Changes to `sake`, `BuildTask`, CLI interaction in general](#cli-changes)
Expand Down Expand Up @@ -41,6 +44,62 @@ title: 6.0.0 (unreleased)
- [`getSchemaDataDefaults()` now includes attributes](#formfield-schema-data)
- [Full list of removed and changed API (by module, alphabetically)](#api-removed-and-changed)

## Change to commercially supported modules {#changes-to-support}

Some Silverstripe CMS modules are commercially supported. Silverstripe commits to looking after those modules for the duration of the Silverstripe CMS 6 lifecycle.
michalkleiner marked this conversation as resolved.
Show resolved Hide resolved

Review the list of [Commercially Supported Modules for Silverstripe CMS 6](/project_governance/supported_modules/).

### Modules losing commercial support {#modules-losing-support}

Some modules that were commercially supported in Silverstripe CMS 5 are not supported in Silverstripe CMS 6. Some of those modules provide CMS6-compatible versions. Others have been dropped altogether.

Just because a module is not "commercially supported", doesn't mean that you shouldn't be using it. Community supported modules are maintained on a "best-effort" basis. You should take this into consideration when choosing to install a community supported module in your project.

Email [[email protected]](mailto:[email protected]) if you are keen to maintain some of the modules that are no longer commercially supported.

|Module|Status|
|[bringyourownideas/silverstripe-composer-update-checker](https://github.com/bringyourownideas/silverstripe-composer-update-checker)|Dropped|
|[bringyourownideas/silverstripe-maintenance](https://github.com/bringyourownideas/silverstripe-maintenance)|Dropped|
|[cwp/agency-extensions](https://github.com/silverstripe/cwp-agency-extensions)|Dropped|
|[cwp/starter-theme](https://github.com/silverstripe/cwp-starter-theme)|Dropped|
|[cwp/watea-theme](https://github.com/silverstripe/cwp-watea-theme)|Dropped|
|[silverstripe/recipe-authoring-tools](https://github.com/silverstripe/silverstripe-recipe-authoring-tools)|Dropped|
|[silverstripe/recipe-blog](https://github.com/silverstripe/silverstripe-recipe-blog)|Dropped|
|[silverstripe/recipe-collaboration](https://github.com/silverstripe/silverstripe-recipe-collaboration)|Dropped|
|[silverstripe/recipe-content-blocks](https://github.com/silverstripe/silverstripe-recipe-content-blocks)|Dropped|
|[silverstripe/recipe-form-building](https://github.com/silverstripe/silverstripe-recipe-form-building)|Dropped|
|[silverstripe/recipe-reporting-tools](https://github.com/silverstripe/silverstripe-recipe-reporting-tools)|Dropped|
|[silverstripe/recipe-services](https://github.com/silverstripe/silverstripe-recipe-services)|Dropped|
|[silverstripe/campaign-admin](https://github.com/silverstripe/silverstripe-campaign-admin)|Dropped|
|[silverstripe/auditor](https://github.com/silverstripe/silverstripe-auditor)|Dropped|
|[silverstripe/blog](https://github.com/silverstripe/silverstripe-blog)|CMS 6 compatible without commercial support|
|[silverstripe/contentreview](https://github.com/silverstripe/silverstripe-contentreview)|Dropped|
|[silverstripe/crontask](https://github.com/silverstripe/silverstripe-crontask)|CMS 6 compatible without commercial support|
|[silverstripe/documentconverter](https://github.com/silverstripe/silverstripe-documentconverter)|Dropped|
|[silverstripe/elemental-bannerblock](https://github.com/silverstripe/silverstripe-elemental-bannerblock)|Dropped|
|[silverstripe/elemental-fileblock](https://github.com/silverstripe/silverstripe-elemental-fileblock)|Dropped|
|[silverstripe/environmentcheck](https://github.com/silverstripe/silverstripe-environmentcheck)|Dropped|
|[silverstripe/externallinks](https://github.com/silverstripe/silverstripe-externallinks)|Combined into [silverstripe/reports](https://github.com/silverstripe/silverstripe-reports)|
|[silverstripe/iframe](https://github.com/silverstripe/silverstripe-iframe)|Dropped|
|[silverstripe/ldap](https://github.com/silverstripe/silverstripe-ldap)|Dropped|
|[silverstripe/registry](https://github.com/silverstripe/silverstripe-registry)|Dropped|
|[silverstripe/restfulserver](https://github.com/silverstripe/silverstripe-restfulserver)|Dropped|
|[silverstripe/security-report](https://github.com/silverstripe/silverstripe-security-report)|Combined into [silverstripe/reports](https://github.com/silverstripe/silverstripe-reports)|
|[silverstripe/sitewidecontent-report](https://github.com/silverstripe/silverstripe-sitewidecontent-report)|Combined into [silverstripe/reports](https://github.com/silverstripe/silverstripe-reports)|
|[silverstripe/subsites](https://github.com/silverstripe/silverstripe-subsites)|CMS 6 compatible without commercial support|
|[silverstripe/versionfeed](https://github.com/silverstripe/silverstripe-versionfeed)|Dropped|
|[silverstripe/webauthn-authenticator](https://github.com/silverstripe/silverstripe-webauthn-authenticator)|Dropped|
|[symbiote/silverstripe-multivaluefield](https://github.com/symbiote/silverstripe-multivaluefield)|Dropped|

The code in `silverstripe/externallinks`, `silverstripe/security-report`, and `silverstripe/sitewidecontent-report` has been copied into `silverstripe/reports` and will be maintained there going forward. The namespaces for classes in those modules has been updated to `SilverStripe\Reports`. Note that any code that related to `silverstripe/subsite` or `silverstripe/contentreview` integration has been removed.
michalkleiner marked this conversation as resolved.
Show resolved Hide resolved

CMS 6 compatible versions of `silverstripe/blog`, `silverstripe/subsites`, and `silverstripe/crontask` have been released with CMS 6.0.0, though they are not commercially supported.

### Campaign admin removed from the CMS {#campaign-admin-removed}

The `silverstripe/campaign-admin` was a core module that provided a way to publish multiple related records at the same time, but it was very rarely used in practice. It has been removed from the default CMS installation and has had its commercial support removed. Its integration support has been removed from `silverstripe/cms`, `silverstripe/admin`, and `silverstripe/asset-admin`, all of which provided "Add to campaign" UX functionality. This means that it may not be possible to get any sort of campaign admin functionality in CMS 6 even if using a forked version of `silverstripe/campaign-admin`.

## Features and enhancements

### Validation added to `DBField`s {#dbfield-validation}
Expand Down Expand Up @@ -812,6 +871,27 @@ Note that the change from `ViewableData` to `ModelData` specifically was made to
|`SilverStripe\View\ViewableData_Customised`|[`SilverStripe\Model\ModelDataCustomised`](api:SilverStripe\Model\ModelDataCustomised)|
|`SilverStripe\View\ViewableData_Debugger`|[`SilverStripe\Model\ModelDataDebugger`](api:SilverStripe\Model\ModelDataDebugger)|

The following classes have been changed when code was moved to the `silverstripe/reports` module from some of the modules that lost commercial support:

|Old FQCN|New FQCN|
|---|---|
|`SilverStripe\SecurityReport\Forms\GridFieldExportReportButton`|[`SilverStripe\Reports\SecurityReport\Forms\GridFieldExportReportButton`](api:SilverStripe\Reports\SecurityReport\Forms\GridFieldExportReportButton)|
|`SilverStripe\SecurityReport\Forms\GridFieldPrintReportButton`|[`SilverStripe\Reports\SecurityReport\Forms\GridFieldPrintReportButton`](api:SilverStripe\Reports\SecurityReport\Forms\GridFieldPrintReportButton)|
|`SilverStripe\SecurityReport\MemberReportExtension`|[`SilverStripe\Reports\SecurityReport\MemberReportExtension`](api:SilverStripe\Reports\SecurityReport\MemberReportExtension)|
|`SilverStripe\SecurityReport\UserSecurityReport`|[`SilverStripe\Reports\SecurityReport\UserSecurityReport`](api:SilverStripe\Reports\SecurityReport\UserSecurityReport)|
|`SilverStripe\SiteWideContentReport\Form\GridFieldBasicContentReport`|[`SilverStripe\Reports\SiteWideContentReport\Form\GridFieldBasicContentReport`](api:SilverStripe\Reports\SiteWideContentReport\Form\GridFieldBasicContentReport)|
|`SilverStripe\SiteWideContentReport\Model\SitewideContentTaxonomy`|[`SilverStripe\Reports\SiteWideContentReport\Model\SitewideContentTaxonomy`](api:SilverStripe\Reports\SiteWideContentReport\Model\SitewideContentTaxonomy)|
|`SilverStripe\SiteWideContentReport\SitewideContentReport`|[`SilverStripe\Reports\SiteWideContentReport\SitewideContentReport`](api:SilverStripe\Reports\SiteWideContentReport\SitewideContentReport)|
|`SilverStripe\ExternalLinks\Controllers\CMSExternalLinksController`|[`SilverStripe\Reports\ExternalLinks\Controllers\CMSExternalLinksController`](api:SilverStripe\Reports\ExternalLinks\Controllers\CMSExternalLinksController)|
|`SilverStripe\ExternalLinks\Jobs\CheckExternalLinksJob`|[`SilverStripe\Reports\ExternalLinks\Jobs\CheckExternalLinksJob`](api:SilverStripe\Reports\ExternalLinks\Jobs\CheckExternalLinksJob)|
|`SilverStripe\ExternalLinks\Model\BrokenExternalLink`|[`SilverStripe\Reports\ExternalLinks\Model\BrokenExternalLink`](api:SilverStripe\Reports\ExternalLinks\Model\BrokenExternalLink)|
|`SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack`|[`SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrack`](api:SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrack)|
|`SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus`|[`SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrackStatus`](api:SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrackStatus)|
|`SilverStripe\ExternalLinks\BrokenExternalLinksReport`|[`SilverStripe\Reports\ExternalLinks\Reports\BrokenExternalLinksReport`](api:SilverStripe\Reports\ExternalLinks\Reports\BrokenExternalLinksReport)|
|`SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask`|[`SilverStripe\Reports\ExternalLinks\Tasks\CheckExternalLinksTask`](api:SilverStripe\Reports\ExternalLinks\Tasks\CheckExternalLinksTask)|
|`SilverStripe\ExternalLinks\Tasks\CurlLinkChecker`|[`SilverStripe\Reports\ExternalLinks\Tasks\CurlLinkChecker`](api:SilverStripe\Reports\ExternalLinks\Tasks\CurlLinkChecker)|
|`SilverStripe\ExternalLinks\Tasks\LinkChecker`|[`SilverStripe\Reports\ExternalLinks\Tasks\LinkChecker`](api:SilverStripe\Reports\ExternalLinks\Tasks\LinkChecker)|

### GraphQL removed from the CMS {#graphql-removed}

> [!NOTE]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ via `yarn lint` (see [Build Tooling](/contributing/build_tooling)).
(e.g. Button, Accordion). Presentation of these components should not rely on
the markup context they're embedded in.
- The `client/src/containers` folder should contain use-case dependent styles only
(e.g. CampaignAdmin). Styles in here should be kept at a minimum.
(e.g. AssetAdmin). Styles in here should be kept at a minimum.
- The file name of styles nested within components and containers should inherit their
respective folder name for easy reference.
For example, a `components/FormAction` component has styles named `FormAction.scss`).
Expand Down
4 changes: 0 additions & 4 deletions en/10_Contributing/09_Release_Process.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ reviewing the release milestone on GitHub. Releases will be
announced on the ["releases" forum category](https://forum.silverstripe.org/c/releases).
Significant releases will also be published via the [`silverstripe.org` blog](https://silverstripe.org/blog).

You can also keep track of new releases through the CMS UI
by installing the [maintenance module](https://github.com/bringyourownideas/silverstripe-maintenance),
or using the [composer outdated](https://getcomposer.org/doc/03-cli.md#outdated) command in your project.

Additionally, you can [keep track of issues](issues_and_bugs#identifying-issues) (both open and closed)
across all modules involved in a recipe release.

Expand Down
Loading