|
11 | 11 | - [Please Do's](#please-dos)
|
12 | 12 | - [Test against Postgres](#test-against-postgres)
|
13 | 13 | - [Postgres with Docker](#postgres-with-docker)
|
| 14 | +- [Breaking Changes](#breaking-changes) |
| 15 | + - [Deprecation Policy](#deprecation-policy) |
14 | 16 | - [Feature Considerations](#feature-considerations)
|
15 | 17 | - [Security Checks](#security-checks)
|
16 | 18 | - [Add Security Check](#add-security-check)
|
@@ -58,7 +60,7 @@ Most importantly, with every contribution you improve your skills so that future
|
58 | 60 |
|
59 | 61 | ### Recommended Tools
|
60 | 62 |
|
61 |
| -* [vscode](https://code.visualstudio.com), the popular IDE. |
| 63 | +* [Visual Studio Code](https://code.visualstudio.com), the popular IDE. |
62 | 64 | * [Jasmine Test Explorer](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-jasmine-test-adapter), a very practical test exploration plugin which let you run, debug and see the test results inline.
|
63 | 65 |
|
64 | 66 | ### Setting up your local machine
|
@@ -164,6 +166,31 @@ RUN chmod +x /docker-entrypoint-initdb.d/setup-dbs.sh
|
164 | 166 |
|
165 | 167 | Note that the script above will ONLY be executed during initialization of the container with no data in the database, see the official [Postgres image](https://hub.docker.com/_/postgres) for details. If you want to use the script to run again be sure there is no data in the /var/lib/postgresql/data of the container.
|
166 | 168 |
|
| 169 | +## Breaking Changes |
| 170 | + |
| 171 | +Breaking changes should be avoided whenever possible. For a breaking change to be accepted, the benefits of the change have to clearly outweigh the costs of developers having to adapt their deployments. If a breaking change is only cosmetic it will likely be rejected and preferred to become obsolete organically during the course of further development, unless it is required as part of a larger change. Breaking changes should follow the [Deprecation Policy](#deprecation-policy). |
| 172 | + |
| 173 | +Please consider that Parse Server is just one component in a stack that requires attention. A breaking change requires resources and effort to adapt an environment. An unnecessarily high frequency of breaking changes can have detrimental side effects such as: |
| 174 | +- "upgrade fatigue" where developers run old versions of Parse Server because they cannot always attend to every update that contains a breaking change |
| 175 | +- less secure Parse Server deployments that run on old versions which is contrary to the security evangelism Parse Server intends to facilitate for developers |
| 176 | +- less feedback and slower identification of bugs and an overall slow-down of Parse Server development because new versions with breaking changes also include new features we want to get feedback on |
| 177 | + |
| 178 | +### Deprecation Policy |
| 179 | + |
| 180 | +If you change or remove an existing feature that would lead to a breaking change, use the following deprecation pattern: |
| 181 | + - Make the new feature or change optional, if necessary with a new Parse Server option parameter. |
| 182 | + - Use a default value that falls back to existing behavior. |
| 183 | + - Add a deprecation definition in `Deprecator/Deprecations.js` that will output a deprecation warning log message on Parse Server launch, for example: |
| 184 | + > DeprecationWarning: The Parse Server option 'example' will be removed in a future release. |
| 185 | + |
| 186 | +Deprecations become breaking changes after notifying developers through deprecation warnings for at least one entire previous major release. For example: |
| 187 | + - `4.5.0` is the current version |
| 188 | + - `4.6.0` adds a new optional feature and a deprecation warning for the existing feature |
| 189 | + - `5.0.0` marks the beginning of logging the deprecation warning for one entire major release |
| 190 | + - `6.0.0` makes the breaking change by removing the deprecation warning and making the new feature replace the existing feature |
| 191 | + |
| 192 | +Developer feedback during the deprecation period may further postpone the introduction of a breaking change. |
| 193 | + |
167 | 194 | ## Feature Considerations
|
168 | 195 | ### Security Checks
|
169 | 196 |
|
|
0 commit comments