spinframework / spinframework/spin-operator

Feedback on breaking API changes

Open
#352 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
289
Forks
34
PR merge metrics
No merged PRs in 30d

Description

This should be a discussion item, but this repo doesn't have discussions enabled...

I understand that spinkube is pre-1.0 and breaking changes should be expected. But I still think they should be avoided when possible with reasonable effort (and I may be wrong about reasonable effort here).

I think the following sequence of events would have been much smoother for the users of spinkube:

  • Add *.spinkube.dev CRDs as aliases for *.spinoperator.dev CRDs

    All existing deployments would continue to work. If possible generate an event whenever an object is generated with the deprecated CRDs.

  • Update spinkube plugin to support the new domain

    When the new CRDs are not installed in the cluster, it could still generate a manifest for the old CRD, but also create a warning for the user to tell them to upgrade the operator.

    This also allows the user to target both an older operator in production and a new operator in development/testing with the same plugin version.

    Over time, as apps get updated, they will be migrated to the new CRDs automatically[^1].

[^1]: Edit: ok, not automatically; users would still need to delete the old instances manually unless special migration code was added to the plugin.

  • Wait for a long time (6 to 12 months)

  • Remove old CRDs from the operator and support from the plugin

    By this time most deployed apps and operators will already have been updated due to he app's lifecycle, and there would be no migration required for most users.

This approach would also eliminate the current issue that you have to upgrade the operator and the spin plugin at the same time, which can be a problem if the operator installation is managed centrally and not by the user themselves.

If you do breaking changes again, especially after 1.0, please consider if such a migration path is possible.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue does not identify files, tests, or an entry point to change. Start by confirming the operator and plugin components affected by CRD compatibility, then agree on a concrete migration scope and acceptance criteria before implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes
Domain
infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.