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

Propose versioning policy for Upjet-based providers #314

Closed
wants to merge 1 commit into from

Conversation

jeanduplessis
Copy link
Collaborator

Description of your changes

This PR proposes introducing a versioning policy for Upjet-based providers.

I have:

  • Read and followed Upjet's contribution process.
  • Run make reviewable to ensure this PR is ready for review.
  • Added backport release-x.y labels to auto-backport this PR if necessary.

How has this code been tested

N/A

Signed-off-by: Jean du Plessis <jean@upbound.io>

### Unavoidable breaking changes

Due to a reliance on the upstream Terraform providers and prior instances where they introduce breaking changes in minor version releases, we cannot guarantee that a minor version bump will never introduce a breaking change.
Copy link
Contributor

@mbbush mbbush Jan 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar with the history here. Is the issue with terraform provider minor releases that have contained undocumented/surprising breaking changes? Or deliberate breaking changes, noted in the release notes, but released as a minor version bump?

If the former, then this caveat is probably necessary. But if it's the latter, it seems we could just bump our major version. This would mean that the upjet provider's major version number would no longer match the terraform provider's major version number, but that seems like a reasonable price to pay for standard semver guarantees related to breaking changes.

1. The `major` version number **MUST** be incremented if the `major` version number of the Terraform provider it is generated from is incremented.
2. The `minor` version number **MUST** be incremented when new functionality is released or when [unavoidable breaking changes](#unavoidable-breaking-changes) are introduced.
3. The `patch` version number **SHOULD ONLY** be incremented for a release containing **ONLY** bug fixes and no new features.
4. A release that increments the `minor` or `patch` version **ONLY**, **MUST** be backward compatible.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is in conflict with the unavoidable breaking changes caveat from point number 2.


The webhooks should be implemented as part of the provider to simplify deployment.

Upjet provides high-level libraries that make writing these converters fast and robust for specific API changes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having never written a conversion webhook, I'm left wondering where to find these libraries, and a link would be great. But if it's obvious to those with more k8s/golang experience where to find them, you don't need to add it on my account alone.

@jeanduplessis jeanduplessis deleted the version-policy branch October 20, 2024 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants