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

Introduce new versioning policy to maintain client backward compatibility #1729

Closed
r4victor opened this issue Sep 26, 2024 · 0 comments · Fixed by #1730
Closed

Introduce new versioning policy to maintain client backward compatibility #1729

r4victor opened this issue Sep 26, 2024 · 0 comments · Fixed by #1730
Assignees

Comments

@r4victor
Copy link
Collaborator

dstack uses semantic versioning for the package. It guarantees server backward compatibility within the same minor version (e.g. 0.18.x) (with some caveats), but no client compatibility is guaranteed. Moreover, new clients are declared to be always incompatible with older servers.

The current approach is reasonably good for maintaining server backward compatibility but it prevents any client backward compatibility. At least, we would like to be able to make releases preserving client backward compatibility when there are no new features introduced, e.g. client bug fixes.

Proposal

  • Full client backward compatibility is maintained within minor releases, e.g. 0.18.x. If there is a breaking change, i.e. the new client does not work with old servers, introduce a new minor release 0.18.14 -> 0.19.0.
  • Full server backward compatibility is maintained within minor releases. Partial server backward compatibility is maintained across minor releases. Breaking changes may be introduced but they are minimized and always preceded by deprecation warnings. So if a feature/field is to be removed, it’s first marked for deprecation for several minor releases, and only then can be removed.
  • Release notes always have Deprecations and Breaking changes sections if there are any.

Benefits

  • dstack can have releases preserving client backward compatibility. Users are not forced to update clients when the server is updated.
  • dstack maintains server backward compatibility but has flexibility to remove some functionality to reduce maintenance costs.
  • Users are informed about whether the release can break something.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant