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

Tagging previous versions? #9

Closed
gpdf opened this issue Nov 8, 2022 · 27 comments
Closed

Tagging previous versions? #9

gpdf opened this issue Nov 8, 2022 · 27 comments

Comments

@gpdf
Copy link

gpdf commented Nov 8, 2022

I understand from conversations during the recent Northern Autumn IVOA InterOp, and from private communications, that this repository (postgrespro/pgsphere) is considered the most authoritative currently available source for the pgsphere extension, as far as the IVOA community is concerned, and the one most closely aligned with current developments in geometry-query support (e.g., for RegTAP 1.2). For this community, at least, it supersedes, I gather, pgsphere/pgsphere and akorotkov/pgsphere (neither of which have a visible fork relationship with the present repo).

This repo doesn't currently have any visible tags, let alone releases. Is that something we could remedy? There is some evidence in commit messages of some intent for there to be notional releases identified as "1.1.4.916", "1.1.5", "1.1.5beta4gavo", and "1.2.0".

Is there any value in trying to create some retrospective tags? Is the head of master stable enough that it is worth tagging?

Beyond that, should we be discussing means of producing release artifacts that DBAs could use to add the pgsphere extension more easily to deployed database servers?

This is an issue at the moment because Rubin is trying to bring up pgsphere-based TAP services for commissioning data (in addition to the main Qserv-based TAP services used in Data Preview 0) - it really isn't obvious how to determine what a known stable release of pgsphere might be, or to obtain a recent build from, e.g., Debian package service.

@msdemlei and @pdowler, at least, are likely to be interested in this, but we'd be grateful for advice from any quarter.

@gpdf
Copy link
Author

gpdf commented Nov 8, 2022

Oh, I just discovered this: https://salsa.debian.org/postgresql/pgsphere , with a fair bit of recent activity. Very superficially it looks like it might just be minimal maintenance based on the very old v1.1.1?

@msdemlei
Copy link
Contributor

msdemlei commented Nov 8, 2022 via email

@obartunov
Copy link

obartunov commented Nov 9, 2022 via email

@msdemlei
Copy link
Contributor

msdemlei commented Nov 10, 2022 via email

@obartunov
Copy link

obartunov commented Nov 10, 2022 via email

@msdemlei
Copy link
Contributor

msdemlei commented Nov 10, 2022 via email

@vitcpp
Copy link
Contributor

vitcpp commented Jul 7, 2023

Dear All, let me please refresh the discussion concerning versioning.

I propose:

  • In general, we should follow some principles described in https://semver.org/
  • Major number is for API incompatible changes.
  • Minor number is for API backward compatible changes (old user sql should work with newest pgsphere).
  • Patch number is for bug fixes (API is untouched).
  • Mark each version with annotated tag like v1.2.0

What I'm concerned, now we increment only the third number (patch number) for those changes that include API changes. I guess we should increment minor number in this case. But if we decide to increment minor number on each API small change this number may become too big.

One more question - should we increment minor or patch number each time when merging a new PR or introduce release plan?

Another issue is an optional compilation of some parts like healpix. I do not exclude that some new optional compilation will appear in the near future. I think it should be the user responsibility how to compile. The version number should not reflect how pgsphere is compiled. I see the only issue - upgrade scripts. I guess we may implement some query function that returns the list of compiled features. It may help upgrade script to decide what to do.

I appreciate any comments, thank you!

@esabol
Copy link
Contributor

esabol commented Jul 8, 2023

This all seems reasonable to me.

One more question - should we increment minor or patch number each time when merging a new PR or introduce release plan?

  1. If a PR adds to or changes the API, then that PR should change the major or minor version number.
  2. If a PR does not change the API in anyway and does not change the output of any of the regression tests, I don't see a need to increment the patch number.
  3. If a PR does not change the API but the output of some regression test changes, it should increment the patch number.

That all said, I don't feel strongly about any of this and am willing to defer to your preferred way of doing it. 😄

@msdemlei
Copy link
Contributor

msdemlei commented Jul 10, 2023 via email

@vitcpp
Copy link
Contributor

vitcpp commented Jul 13, 2023

I like release plans too. We may consider to create a new release each 3 months. Each release will be tagged. What I would like to consider is what to do if a bug is found in the release. Should we create a branch from the tag and fix it in this branch? If yes, should we increment version number? I propose to fix releases with tags but to fix new bugs in the master only.

I also propose not to increment the version on each PR. I propose to increment it once when applying first PR after the release. Another condition when the release number should be incremented - if a new PR requires to increment minor or major numbers but before we incremented only patch number.

Upgrade scripts are created only to migrate from previous release to a new one. Intermediate PRs should just update existing upgrade scripts.

@vitcpp
Copy link
Contributor

vitcpp commented Jul 14, 2023

One more idea is to merge PR into a new branch master-dev. Once in 3 months we merge master-dev into master. This way, master branch will always contain the latest released version.

@msdemlei
Copy link
Contributor

msdemlei commented Jul 14, 2023 via email

@esabol
Copy link
Contributor

esabol commented Jul 14, 2023

One more idea is to merge PR into a new branch master-dev. Once in 3 months we merge master-dev into master. This way, master branch will always contain the latest released version.

I'm not a fan of this model. I'd rather see release tagging, maybe even branching, and making tarballs available for download from https://github.com/postgrespro/pgsphere/releases.

@vitcpp
Copy link
Contributor

vitcpp commented Jul 20, 2023

I agree that dev branch is not the best solution. Once we may have intermediate changes in the master branch between assigned tags I would like to somehow notify developers that the version in master is the development version. I propose to add 'dev' suffix to version number in the master branch (like 1.2.2.dev) if it contains some intermediate commits but a new tag is not yet assigned. If a developer downloads the master branch (not a particular tag) it would be clear that the downloaded version contains intermediate changes.

When we decide to create a new tag we remote suffix 'dev' from the version number and assign the version tag. Next PR will increment version and add 'dev' suffix if it is an intermediate PR.

I agree it would be better to release a new version (create a new tag) by our decision, not to follow a predefined release plan.

With such approach we may still merge intermediate PRs without changing the version every time.

@vitcpp
Copy link
Contributor

vitcpp commented Jul 20, 2023

Another idea is to state that the tagged versions are the stable ones. The current version in master is not stable, its functionality or the version itself can be changed. Once we decide to create a new stable version just create a tag and increment the version in the master.

@esabol
Copy link
Contributor

esabol commented Jul 21, 2023

Another idea is to state that the tagged versions are the stable ones. The current version in master is not stable, its functionality or the version itself can be changed. Once we decide to create a new stable version just create a tag and increment the version in the master.

I like this idea the best, I think.

@vitcpp
Copy link
Contributor

vitcpp commented Jul 23, 2023

I think we have come to the agreement. Thank you very much for the participation. Give me please some time to prepare the versioning policy statement. I also plan to start assign version tags and create release artifacts.

@vitcpp
Copy link
Contributor

vitcpp commented Sep 5, 2023

I created a new 1.2.2 tag and I found that it appears in the tags list in the wrong order (https://github.com/postgrespro/pgsphere/tags). Furthermore, when I try to create a release artifact, it appears in the wrong order as well. The release notes for 1.2.3 should be changed in this case. I have to edit them. At the moment I have no ideas how to change the order of the tags. I appreciate if you share some ideas how to do it. Thank you in advance.

@vitcpp
Copy link
Contributor

vitcpp commented Sep 11, 2023

Dear All,

I created some historical tags: 1.1.5, 1.2.0, 1.2.1, 1.2.2. I looked for commits where PGSPHERE_VERSION in Makefile and default_version in pg_sphere.control were changed. There are some problems to find an appropriate commits for earlier tags than 1.1.5. I can't identify such commits.

I would appreciate if you verify that the assigned tags are properly specified.

Thank you in advance!

@esabol
Copy link
Contributor

esabol commented Sep 11, 2023

I created some historical tags: 1.1.5, 1.2.0, 1.2.1, 1.2.2.

Thanks!

@vitcpp vitcpp mentioned this issue Oct 17, 2023
@df7cb
Copy link
Contributor

df7cb commented Oct 23, 2023

I'd suggest to call the tags good now, and close this.

And perhaps delete these branches in git:

  • cleansing (merged)
  • experimental (merged)
  • pg14-compat (identical to merged commit)

@vitcpp
Copy link
Contributor

vitcpp commented Nov 8, 2023

I agree to remove the branches, cleansing and experimental branches are merged. pg14-compat changes seems to be merged in another complex PR. Lets remove these branches.

@pdowler
Copy link
Contributor

pdowler commented Dec 8, 2023

I recently pulled the latest from master, got all the tags, and checked out specific versions (1.2.3, 1.3.1, 1.4.1) to build rpm packages (yum.postrgesql.org for PG itself). Aside from one small issue of my own making (PR for Makefile dist target) that went smoothly and I was able to create and servers with different versions to test.

So I would say I'm happy with the current tagging. 👍

@vitcpp
Copy link
Contributor

vitcpp commented Dec 12, 2023

As suggested, the following branches have been removed:

  • cleansing
  • experimental
  • pg14-compat

@vitcpp
Copy link
Contributor

vitcpp commented Jan 19, 2024

Dear All,

I propose to close this Issue as completed. Do you have any objections?

@esabol
Copy link
Contributor

esabol commented Jan 19, 2024

No objection, @vitcpp.

@vitcpp vitcpp closed this as completed Mar 16, 2024
@vitcpp
Copy link
Contributor

vitcpp commented Mar 16, 2024

Closed as completed.

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

7 participants