Skip to content

docs: how to introduce functionality without breaking users #409

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

Merged
Merged
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
20 changes: 20 additions & 0 deletions docs/project-management/deprecations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Deprecations and new functionality

As kubernetes and the controller ecosystem continues to evolve,
we will sometimes want to add new functionality or behaviour to kdp.

However, as a library, we do not want to break the functionality of controllers that upgrade their kdp version,
particularly as the coupling to kubernetes versions means that users must upgrade periodically.

We will aim to follow these rules therefore:

* Do not remove functionality or fundamentally change the behaviour in a way that will break users.

* Bug fixes are good, but we should think about existing users even for bug fixes.

* Consider introducing a new method or type instead of breaking existing functionality.

* Use the go `// Deprecated:` [convention](https://go.dev/wiki/Deprecated) to discourage usage of "old" methods, fields or types.

* Prefer errors at compilation time to errors at run time. Reasonable code changes are acceptable (e.g. adding a context method).
Crashing at run time because a field is not populated is not acceptable.
Loading