Skip to content

Commit a074fc9

Browse files
authored
Add deprecation policy (#7199)
* added phased deprecation policy * fixed typo * added changelog entry * some rewording * Fixed typo * fixed typo * Fixed typo * updated deprecation policy * remove empty line
1 parent 8ba3f02 commit a074fc9

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

CHANGELOG.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,20 @@ Jump directly to a version:
8686
</details>
8787

8888
___
89+
8990
## Unreleased (Master Branch)
9091
[Full Changelog](https://github.com/parse-community/parse-server/compare/4.5.0...master)
9192
### Breaking Changes
9293
- Improved schema caching through database real-time hooks. Reduces DB queries, decreases Parse Query execution time and fixes a potential schema memory leak. If multiple Parse Server instances connect to the same DB (for example behind a load balancer), set the [Parse Server Option](https://parseplatform.org/parse-server/api/master/ParseServerOptions.html) `databaseOptions.enableSchemaHooks: true` to enable this feature and keep the schema in sync across all instances. Failing to do so will cause a schema change to not propagate to other instances and re-syncing will only happen when these instances restart. The options `enableSingleSchemaCache` and `schemaCacheTTL` have been removed. To use this feature with MongoDB, a replica set cluster with [change stream](https://docs.mongodb.com/manual/changeStreams/#availability) support is required. (Diamond Lewis, SebC) [#7214](https://github.com/parse-community/parse-server/issues/7214)
9394
- Added file upload restriction. File upload is now only allowed for authenticated users by default for improved security. To allow file upload also for Anonymous Users or Public, set the `fileUpload` parameter in the [Parse Server Options](https://parseplatform.org/parse-server/api/master/ParseServerOptions.html) (dblythy, Manuel Trezza) [#7071](https://github.com/parse-community/parse-server/pull/7071)
9495
- Removed [parse-server-simple-mailgun-adapter](https://github.com/parse-community/parse-server-simple-mailgun-adapter) dependency; to continue using the adapter it has to be explicitly installed (Manuel Trezza) [#7321](https://github.com/parse-community/parse-server/pull/7321)
95-
- Remove support for MongoDB 3.6 which has reached its End-of-Life support date and PostgreSQL 10 (Manuel Trezza) [#7315](https://github.com/parse-community/parse-server/pull/7315)
96+
- Remove support for MongoDB 3.6 which has reached its End-of-Life date and PostgreSQL 10 (Manuel Trezza) [#7315](https://github.com/parse-community/parse-server/pull/7315)
97+
- Remove support for Node 10 which has reached its End-of-Life date (Manuel Trezza) [#7314](https://github.com/parse-community/parse-server/pull/7314)
9698
### Notable Changes
9799
- Added Parse Server Security Check to report weak security settings (Manuel Trezza, dblythy) [#7247](https://github.com/parse-community/parse-server/issues/7247)
98100
- EXPERIMENTAL: Added new page router with placeholder rendering and localization of custom and feature pages such as password reset and email verification (Manuel Trezza) [#6891](https://github.com/parse-community/parse-server/issues/6891)
99101
- EXPERIMENTAL: Added custom routes to easily customize flows for password reset, email verification or build entirely new flows (Manuel Trezza) [#7231](https://github.com/parse-community/parse-server/issues/7231)
100-
- Remove support for Node 10 which has reached its End-of-Life support date (Manuel Trezza) [#7314](https://github.com/parse-community/parse-server/pull/7314)
102+
- Added Deprecation Policy to govern the introduction of braking changes in a phased pattern that is more predictable for developers (Manuel Trezza) [#7199](https://github.com/parse-community/parse-server/pull/7199)
101103
### Other Changes
102104
- Fix error when a not yet inserted job is updated (Antonio Davi Macedo Coelho de Castro) [#7196](https://github.com/parse-community/parse-server/pull/7196)
103105
- request.context for afterFind triggers (dblythy) [#7078](https://github.com/parse-community/parse-server/pull/7078)

CONTRIBUTING.md

+28-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
- [Please Do's](#please-dos)
1212
- [Test against Postgres](#test-against-postgres)
1313
- [Postgres with Docker](#postgres-with-docker)
14+
- [Breaking Changes](#breaking-changes)
15+
- [Deprecation Policy](#deprecation-policy)
1416
- [Feature Considerations](#feature-considerations)
1517
- [Security Checks](#security-checks)
1618
- [Add Security Check](#add-security-check)
@@ -58,7 +60,7 @@ Most importantly, with every contribution you improve your skills so that future
5860

5961
### Recommended Tools
6062

61-
* [vscode](https://code.visualstudio.com), the popular IDE.
63+
* [Visual Studio Code](https://code.visualstudio.com), the popular IDE.
6264
* [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.
6365

6466
### Setting up your local machine
@@ -164,6 +166,31 @@ RUN chmod +x /docker-entrypoint-initdb.d/setup-dbs.sh
164166

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

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+
167194
## Feature Considerations
168195
### Security Checks
169196

0 commit comments

Comments
 (0)