Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

SemVer policy? #1997

Closed
max-sixty opened this issue Mar 1, 2023 · 6 comments
Closed

SemVer policy? #1997

max-sixty opened this issue Mar 1, 2023 · 6 comments
Labels
needs-discussion Undecided dilemma

Comments

@max-sixty
Copy link
Member

Currently we have a loose notion of Semantic Versioning. We could firm that up a bit. Which of these requires a new version:

  • The prql-compiler API — we don't really follow this at the moment — e.g. feat: error code #1993 technically breaks it, but i hadn't though we'd jump to 0.6 for that
  • We do follow it for the language
  • Should we follow it for bindings like prql-js? This receives lots of bindings relative to the rust library

Thoughts?

@max-sixty max-sixty added the needs-discussion Undecided dilemma label Mar 1, 2023
@aljazerzen
Copy link
Member

At least in my eyes, prql-compiler, language and all the bindings have the same versioning scheme.

And we did discuss that even though sem-ver does not enforce it, we do not want to have breaking changes in patch releases (0.5.1 -> 0.5.2) and instead release a minor release (0.6).

So, I do think that we should use semver for bindings too, but just bundle all three points into one versioning scheme.

(And I don't think that #1993 is a breaking change - adding a field should not cause broken builds. Or am I wrong?)

@max-sixty
Copy link
Member Author

And I don't think that #1993 is a breaking change - adding a field should not cause broken builds. Or am I wrong?

I would have thought that it did — constructing this Struct would break, matching on it without a .. would break, no?

@max-sixty
Copy link
Member Author

but just bundle all three points into one versioning scheme.

I agree this would be good. If I'm correct about #1993, then we need to bump to 0.6.0 though, unless we adjust the definition a bit

I am totally fine with either! I don't think we should be that worried about having too many minor releases.

@max-sixty max-sixty mentioned this issue Mar 4, 2023
@eitsupi
Copy link
Member

eitsupi commented Mar 5, 2023

Considering the users who are using this downstream, I think it makes sense to inform them in a minor release that it contains breaking changes.
(Of course, the packages may always be unstable as it has not currently reached version 1.0.0.)

https://github.com/apache/arrow, for example, is a monolipo, with major releases about every two months for all packages in the repository.

Looking at the changelog at now, it doesn't seem to include any breaking changes, so 0.5.3 makes more sense for me.

@aljazerzen
Copy link
Member

aljazerzen commented Mar 5, 2023

Then it is decided - the versioning scheme includes all three things together: language, compiler and all the bindings.

Next release can be discussed in #2010

@max-sixty
Copy link
Member Author

Considering the users who are using this downstream, I think it makes sense to inform them in a minor release that it contains breaking changes.

Yes we could have a section in the Changelog "Breaking changes", or we could just indicate which are breaking in the text — I'm easy either way...

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
needs-discussion Undecided dilemma
Projects
None yet
Development

No branches or pull requests

3 participants