Skip to content

Commit 4ed10c3

Browse files
Merge branch '4.13' into 4
2 parents e7990dd + 3dcdc18 commit 4ed10c3

File tree

7 files changed

+101
-113
lines changed

7 files changed

+101
-113
lines changed

en/02_Developer_Guides/05_Extending/00_Modules.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ which the Silverstripe CMS project applies to the modules it creates and maintai
182182
* The module is a Composer package.
183183
* All Composer dependencies are bound to a single major release (e.g. `^4.0` not `>=4` or `*`).
184184
* There is a level of test coverage.
185-
* A clear public API documented in the docblock tags.
185+
* A clear [public API](/project_governance/public_api/) documented in the docblock tags.
186186
* Code follows [PSR-1](http://www.php-fig.org/psr/psr-1/) and [PSR-2](http://www.php-fig.org/psr/psr-2/) style guidelines.
187187
* `.gitattributes` will be used to exclude non-essential files from the distribution. At a minimum tests, docs, and IDE/dev-tool config should be excluded.
188188
* Add a [PSR-4 compatible autoload reference](https://getcomposer.org/doc/04-schema.md#psr-4) for your module.

en/05_Contributing/01_Code.md

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ icon: code
66

77
# Contributing Code - Submitting Bugfixes and Enhancements
88

9-
[info]
10-
If you want to contribute changes to documentation, please read through the [contributing documentation](./documentation) page.
11-
[/info]
12-
139
The Silverstripe CMS core and supported modules are hosted on [GitHub](https://github.com) - mostly in [github.com/silverstripe](https://github.com/silverstripe/). To contribute code, you will need to [create a GitHub account](https://docs.github.com/en/get-started/onboarding/getting-started-with-your-github-account).
1410

1511
This documentation assumes you are fairly confident with git and GitHub. If that isn't the case, you may want to read some guides for [GitHub](https://docs.github.com/en/get-started/quickstart), [git](https://docs.github.com/en/get-started/using-git), and [pull requests](https://docs.github.com/en/pull-requests).
@@ -24,6 +20,10 @@ We ask for this so that the ownership in the license is clear and unambiguous, a
2420

2521
There are a few things that you should do before you start working on a fix:
2622

23+
[info]
24+
If you want to contribute changes to documentation, please read through the [contributing documentation](./documentation) page.
25+
[/info]
26+
2727
### Consider if your change should be its own module
2828

2929
Not every feature belongs in the core modules - consider whether the change you want to make belongs in core or whether it would be more appropriate for you to [create a new module](/developer_guides/extending/modules/#create).
@@ -54,7 +54,7 @@ Please adjust the commands as appropriate for the version of Silverstripe CMS th
5454

5555
### Editing files directly on GitHub.com
5656

57-
If you see a typo or another small fix that needs to be made, and you don't have an installation set up for contributions, you can edit files directly in the github.com web interface. Every file view on GitHub has an "edit this file" link.
57+
If you see a typo or another small fix that needs to be made, and you don't have an installation set up for contributions, you can edit files directly in the github.com web interface.
5858

5959
After you have edited the file, GitHub will offer to create a pull request for you. This pull request will be reviewed along with other pull requests.
6060

@@ -71,51 +71,27 @@ As we follow semantic versioning, we name the branches in repositories according
7171

7272
If after reading this section you are still unsure what branch your pull request should go to, consider asking either in the GitHub issue that you address with your PR or in one of the various [community channels](https://www.silverstripe.org/community/).
7373

74+
[hint]
75+
Refer to our [definition of public API](/project_governance/public_api/) for the following sections.
76+
[/hint]
77+
78+
Any updates to third party dependencies in composer.json should aim to target the default branch for a minor release if possible. Targeting a patch release branch is acceptable if updating dependencies is required to fix a high impact or critical bug and is unlikely to result in regressions.
79+
7480
#### For changes to public API or new/enhanced features
7581

76-
If you are introducing new APIs, introducing new features, or enhancing an existing feature, you should generally use the default branch of the repository where you want to contribute to. That would usually target the next minor release of the module.
82+
If you are introducing new public API, introducing new features, or enhancing an existing feature, you should generally use the default branch of the repository where you want to contribute to. That would usually target the next minor release of the module.
7783

7884
#### For bug fixes that don't introduce new API
7985

80-
If you are fixing a bug that doesn't require API changes, use the highest patch release branch available for the lowest supported major release line the bug applies to. You can see the currently supported release lines for Silverstripe CMS on [the roadmap](https://www.silverstripe.org/software/roadmap/). You can find which major release lines of core and supported modules apply to that version by checking the relevant [/project_governance/supported_modules/](supported modules) page.
86+
If you are fixing a bug that doesn't require public API changes, use the highest patch release branch available for the lowest supported major release line the bug applies to. You can see the currently supported release lines for Silverstripe CMS on [the roadmap](https://www.silverstripe.org/software/roadmap/). You can find which major release lines of core and supported modules apply to that version by checking the relevant [supported modules](/project_governance/supported_modules/) page.
8187

8288
For example, if your bug fix is applicable for Silverstripe CMS 4, and is for the `silverstripe/admin` module, you would target the `1.13` branch.
8389

8490
#### For API breaking changes
8591

86-
Do not make a pull request that includes a breaking change, including changing public API (described below), unless there is a major release branch ready to merge into.
92+
Do not make a pull request that includes a breaking change, including changing public API, unless there is a major release branch ready to merge into.
8793
e.g. if the latest stable release is `5.2.7`, the major release branch would be `6`.
8894

89-
#### Definition of public API
90-
91-
Silverstripe CMS public APIs explicitly include (unless excluded below):
92-
93-
- **global** functions, constants, and variables
94-
- namespaces, classes, interfaces, enums, and traits
95-
- public and protected scope (including methods, properties and constants)
96-
- private static class properties (considered to be configuration variables)
97-
- yml configuration file structure and value types
98-
- extension hooks (e.g. `$this->extend('someExtensionHook'));`)
99-
100-
Silverstripe CMS public APIs explicitly exclude:
101-
102-
- private scope (with the exception for `private static` properties which aren't annotated with `@internal`)
103-
- all entities marked as `@internal`
104-
- yml configuration file default values
105-
- HTML, CSS, JavaScript (within reason), SQL, and anything else that is not PHP
106-
107-
Other entities might be considered to be included or excluded from the public APIs on case-by-case basis based on how likely it is to cause problems during an upgrade.
108-
109-
Any updates to third party dependencies in composer.json should aim to target the default branch for a minor release if possible. Targeting a patch release branch is acceptable if updating dependencies is required to fix a high impact or critical bug and is unlikely to result in regressions.
110-
111-
API from third party dependencies may implicitly be incorporated into our definition of public API if:
112-
113-
- they are defined as a parameter type for a supported method
114-
- they are defined as a return type for a supported method
115-
- they are extended by a Silverstripe CMS class.
116-
117-
When defining a return type or a parameter type, it is preferable to use a more generic interface rather than a specific class. Third party dependencies that are used for internal purposes and are not explicitly exposed via the Silverstripe CMS public API are not covered by SemVer and maybe substituted without notice.
118-
11995
### Step 2: Install the project {#install-the-project}
12096

12197
Install the project through composer. The process is described in detail in the [getting started](../getting_started/composer#contributing) docs.
Lines changed: 22 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,23 @@
11
---
22
title: Maintainer guidelines
33
summary: Cheat sheet for module maintainers
4-
iconBrand: wpforms
4+
icon: clipboard-list
55
---
66

7-
87
# Maintainer Guidelines
98

10-
This doc outlines expectations on maintainers of Silverstripe Core. It also forms the default expectations for maintainers of Supported Modules, unless more specific contribution guidelines are available for a module.
9+
This doc outlines expectations on maintainers of Silverstripe CMS. It also forms the default expectations for maintainers of [supported modules](./supported_modules/), unless more specific contribution guidelines are available for a module.
1110

12-
Module maintainers are people taking care of the repositories, CI, documentation, source code, conventions, community communications, issue triage, and release management.
11+
Module maintainers are people taking care of the repositories, CI, documentation, source code, conventions, community communications, peer review, issue triage, and release management.
1312

1413
One of the most important maintainer responsibilities is to collaborate with other maintainers. Another important role is to facilitate community contributions (such as issue reports and pull requests).
1514

1615
[note]
17-
A lot of extra information is available in Silverstripe CMS documentation section [Contributing to Silverstripe”](./).
16+
A lot of extra information is available in the [Contributing](/contributing/) documentation.
1817
All maintainers should be familiar with those docs as they explain many details about how we work.
1918
[/note]
2019

21-
22-
## What is Silverstripe Core
23-
24-
Silverstripe CMS is powered by a system of components in the form of Composer packages. These packages will be categorised as either a _module_ or a _recipe_.
25-
26-
The "core" of Silverstripe refers to the module packages owned by the "silverstripe" Packagist vendor that fall under one of the following recipes:
27-
28-
* [silverstripe/recipe-core](https://github.com/silverstripe/recipe-cms)
29-
* [silverstripe/recipe-cms](https://github.com/silverstripe/recipe-cms)
30-
* [silverstripe/installer](https://github.com/silverstripe/silverstripe-installer)
31-
32-
## What are Supported Modules
33-
34-
In addition to Silverstripe Core, there are many [Supported Modules](https://www.silverstripe.org/software/addons/supported-modules-definition/)
35-
which have the backing of Silverstripe Ltd. While it's a good idea to apply the rules outlined in this document,
36-
work on these modules is guided by the
37-
[Supported Modules Standard](https://www.silverstripe.org/software/addons/supported-modules-definition/).
38-
Commit access in Supported Modules is handled by agreement of the repository maintainers,
39-
or any additional guidelines outlined via `README` and `CONTRIBUTING` files.
40-
20+
Refer to the [triage and peer review](/contributing/triage_resources/) for information about how those tasks are performed.
4121

4222
## Maintainer Roles
4323

@@ -46,55 +26,33 @@ or any additional guidelines outlined via `README` and `CONTRIBUTING` files.
4626
The people looking after the Silverstripe Core modules.
4727
See the details on the [Core Committers](./core_committers) page.
4828

49-
50-
### Contributing Committers
29+
### CMS Squad
5130

5231
Beyond the Core Committer role, there can be individuals which
53-
focus on core development work - typically sponsored through full-time product development roles by Silverstripe Ltd.
54-
These Contributing Committers require write access to core repositories to maintain their pace,
55-
often working alongside Core Committers. They are guided by additional rules:
56-
57-
* Contributing Committers have write access to core repositories in order to work effectively with Github issues. They are expected to use those permissions with good judgement regarding merges of pull requests.
58-
* Complex or impactful changes need to be reviewed and approved by one or more Core Committers. This includes any additions, removals or changes to commonly used APIs. If that's not possible in the team, ping `@silverstripe/core-team` to get other Core Committers involved.
59-
* For these complex or impactful changes, Core Committers should be given 1-2 working days to review. Ideally at this point, the API has already been agreed on through issue comments outlining the planned work (see [RFC Process](request_for_comment]).
60-
* More straightforward changes (e.g. documentation, styling) or areas which require quite specialised expertise (e.g. React) that's less available through most Core Committers can be approved or merged by team members who aren't Core Committers.
61-
* Self-merges should be avoided, but are preferable to having work go stale or forcing other team members to waste time by context switching into a complex review (e.g. because the original reviewer went on leave). Any self-merge should be accompanied by a comment why this couldn't be handled in another way, and a (preferably written) approval from another team member.
62-
63-
This role may be granted by any Core Committer,
64-
who should give other Core Committers an opportunity to weigh in on the decision.
65-
32+
focus on core development work and are full-time employees of Silverstripe.
6633

67-
### Triage
68-
69-
Triage of issues and pull request is an important activity: Reviewing issues, adding labels,
70-
closing stale issues, etc. This does not require write access to the repository as a "Contributing Committer".
71-
This is a great way for active community members to help out, and start a path towards becoming a Core Committer.
72-
73-
Triage roles may be granted by any Core Committer,
74-
who should give other Core Committers an opportunity to weigh in on the decision.
34+
The CMS Squad require write access to core repositories to maintain their pace,
35+
often working alongside Core Committers.
7536

37+
CMS Squad members have write access to core repositories in order to work effectively with GitHub issues. They are expected to use those permissions with good judgement for merging pull requests.
7638

7739
## Guidelines
7840

7941
With great power (write access) comes great responsibility.
8042

8143
First and foremost rule of a maintainer is to collaborate with other maintainers. Follow the house rules and remember that others also care about the modules they maintain.
8244

83-
8445
### House rules overview
8546

86-
* Be friendly, encouraging and constructive towards other community members
87-
* Frequently review pull requests and new issues (in particular, respond quickly to @mentions)
88-
* Treat issues according to our [issue guidelines](issues_and_bugs), and use the [triage resources](triage_resources)
89-
* Don't commit directly to a release branch, raise pull requests instead (except trivial fixes)
90-
* Only merge code you have tested and fully understand. If in doubt, ask for a second opinion.
91-
* Follow the [Supported Modules Standard](https://www.silverstripe.org/software/addons/supported-modules-definition/)
92-
* Ensure contributions have appropriate [test coverage](../developer_guides/testing), are documented, and pass our [coding conventions](/getting_started/coding_conventions)
93-
* Keep the codebase "releasable" at all times (check our [release process](release_process))
94-
* Follow [Semantic Versioning](code/#picking-the-right-version) by putting any changes into the correct branch
95-
* API changes and non-trivial features should not be merged into release branches.
96-
* API changes on master should not be merged until they have the buy-in of at least two Core Committers (or better, through the [core mailing list](https://groups.google.com/forum/#!forum/silverstripe-dev))
97-
* Be inclusive. Ensure a wide range of Silverstripe CMS developers can obtain an understanding of your code and docs, and you're not the only one who can maintain it.
98-
* Avoid `git push --force`, and be careful with your git remotes (no accidental pushes)
99-
* Use your own forks to create feature branches
100-
* We release using the standard process. See the [Making a Silverstripe CMS Core Release](making_a_silverstripe_core_release)
47+
* Be friendly, encouraging and constructive towards other community members
48+
* Frequently review pull requests and new issues (in particular, respond quickly to @mentions)
49+
* Treat issues according to our [issue guidelines](/contributing/issues_and_bugs/), and use the [triage resources](/contributing/triage_resources/)
50+
* Don't commit directly to existing branches, raise pull requests instead
51+
* Use forks to create feature branches for pull requests
52+
* Only merge code you have tested and fully understand. If in doubt, ask for a second opinion.
53+
* Follow the [Supported Modules Standard](https://www.silverstripe.org/software/addons/supported-modules-definition/)
54+
* Ensure contributions have appropriate [test coverage](/developer_guides/testing/), are documented, and adhere to our [coding conventions](/getting_started/coding_conventions/)
55+
* Keep the codebase "releasable" at all times (check our [release process](/contributing/release_process/))
56+
* Follow [Semantic Versioning](/contributing/code/#picking-the-right-version) by putting any changes into the correct branch
57+
* Be inclusive. Ensure a wide range of Silverstripe CMS developers can obtain an understanding of your code and docs, and you're not the only one who can maintain it.
58+
* Avoid `git push --force`, and be careful with your git remotes (no accidental pushes)

en/06_Project_Governance/05_Major_release_policy.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ This policy applies to all [Silverstripe CMS commercially supported modules](htt
1212

1313
Community modules are not covered by this policy. Modules in the `silverstripe` github organisation that are not commercially supported are updated on a best effort basis.
1414

15+
[info]
16+
Refer to our [definition of public API](/project_governance/public_api/).
17+
[/info]
18+
1519
## General approach to major releases
1620

1721
Silverstripe CMS aims to deliver regular major releases at predefined intervals with a clear support timeline. The key objective of this policy is to allow Silverstripe CMS project owners to plan major upgrades ahead of time.
@@ -26,7 +30,7 @@ The lifecycle for a Silverstripe CMS major release line is:
2630

2731
Most of the changes shipped in a major release will:
2832
- upgrade third party dependencies
29-
- remove deprecated APIs and clean up ambiguous APIs
33+
- remove deprecated public API and clean up ambiguous API
3034
- implement architectural changes that can not reasonably be introduced in a minor release.
3135

3236
At launch, major releases may contain new features not present in the previous major release line. However, this is a secondary concern. New features will usually ship in minor releases.
@@ -62,7 +66,7 @@ New major releases of Silverstripe CMS are tagged between April and June of odd
6266
### Active development
6367

6468
Once a major release is stable, it enters a period of active development. A major release in active development receives:
65-
- regular minor releases that ship new features and API in a backward compatible way
69+
- regular minor releases that ship new features and public API in a backward compatible way
6670
- regular patches for bugs at all impact levels
6771
- security patches for all vulnerabilities.
6872

@@ -80,7 +84,7 @@ A major release line in the *bug and security fixes* phase receives:
8084

8185
A major release line in the *bug and security fixes* phase does **not** receive:
8286
- new feature
83-
- new APIs
87+
- new public API
8488
- new minor releases.
8589

8690
A major release line stays in the *bug and security fixes* phase for 1 year.

0 commit comments

Comments
 (0)