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

Figure out versioning scheme and (automate) release(s) #4

Open
3 of 4 tasks
jvanstraten opened this issue May 30, 2022 · 2 comments
Open
3 of 4 tasks

Figure out versioning scheme and (automate) release(s) #4

jvanstraten opened this issue May 30, 2022 · 2 comments

Comments

@jvanstraten
Copy link
Collaborator

jvanstraten commented May 30, 2022

  • The various toolchains should be able to generate publishable Python wheels, Python sdists, and Rust crates, and there should be some release logic in CI already, but it's never been tested and is presumably still missing the requisite repo secrets to push to PyPI and crates.io.
    • Secrets were added a while back and workflows are working.
  • I haven't really thought about a versioning scheme yet. For now, the validator can only validate the version of Substrait that it's built against, so the validator version number should probably track the Substrait version number in some meaningful way.
  • I had to replicate the current version all over the place because cargo insists I do so and Python has its own ideas about this. There should probably be a script that updates/synchronizes them automatically.
  • Automation via conventional commits etc?
@jvanstraten
Copy link
Collaborator Author

I don't think it's possible to combine semantic release and some sort of version tracking, so the best we can probably do is documenting a version matrix somewhere. I'll stuff it in README.md for the next Substrait upgrade.

@jvanstraten
Copy link
Collaborator Author

Having thought about this more, my intentions for versioning are now as follows:

  • Use 0.0.x until semantic release is introduced, where x++ means breaking or less.
  • Use 0.x.y until the validator is no longer considered experimental, where x++ means breaking and y++ means feat or less (different from main repo, but doing it the way the main repo does it will break cargo)
  • Use x.y.z from then on, where x++ means breaking, y++ means feat, and z++ means fix.
  • Supporting a newer Substrait version is considered to be feat if that Substrait version is feat or fix, and breaking if the new Substrait version is breaking.
  • There is no correlation between Substrait and validator version. Any scheme that is would necessarily be hopelessly convoluted and probably violate semver. Instead, a version correspondence matrix will be tracked in the main README.md file.

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

No branches or pull requests

1 participant