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

how shall we plan 4.0? #1016

Closed
ctb opened this issue Jun 7, 2020 · 24 comments
Closed

how shall we plan 4.0? #1016

ctb opened this issue Jun 7, 2020 · 24 comments
Labels
4.0 issues to address for a 4.0 release

Comments

@ctb
Copy link
Contributor

ctb commented Jun 7, 2020

it seems like we're nearing some kind of critical mass on CLI (and maybe API) breaking changes that would need to be in a new major release.

@luizirber really likes the notion of just doing lots of releases, which I'm on board with? but it seems like maybe doing 4.0, 5.0, and 6.0 in rapid succession would just be confusing :).

but we also don't want to wait forever for a 4.0 because I have the attention span of a gnat, etc. etc. and often don't follow through on medium term plans.

so how can we best collate these features and be poised to release a 4.0 that includes a bunch of new stuff, without blocking on too many features?

my naivest thought is to put a pre-4.0 branch in place that has the same branch protections as master - basically, merges must be reviewed, pass all tests, etc. Have a standing PR for this into master.

alternatively, we can switch 3.x over to a maintenance branch and make master the 4.0. I kinda like this more, actually.

a much worse idea seems to be to have a bunch of hanging PRs that wait to be merged until we're ready to release 4.0. let's not do this.

@luizirber luizirber added the 4.0 issues to address for a 4.0 release label Jun 8, 2020
@luizirber
Copy link
Member

luizirber commented Jun 8, 2020

alternatively, we can switch 3.x over to a maintenance branch and make master the 4.0. I kinda like this more, actually.

That was the plan for 2 -> 3, but ended up not being necessarily because we moved quickly. I prefer this one to the other alternatives.

a much worse idea seems to be to have a bunch of hanging PRs that wait to be merged until we're ready to release 4.0. let's not do this.

Somewhat related to this: some current PRs involved a lot of work and may be better to merge them before 4.x (and breaking changes), to avoid large rewrites/rebase/merging changes. #925 comes to mind.

it seems like we're nearing some kind of critical mass on CLI (and maybe API) breaking changes that would need to be in a new major release.
so how can we best collate these features and be poised to release a 4.0 that includes a bunch of new stuff, without blocking on too many features?

I like using labels and milestones for tracking. Not that many of them are marked, maybe do another check on opened issues and label them?

From those, see which ones are actually breaking, and which ones are big chances/refactors that are not necessarily breaking. Some that come to mind:

Maybe create a label "breaking" and mark them? And mark the non-breaking ones as "enhancement"?

@olgabot
Copy link
Collaborator

olgabot commented Jun 12, 2020

a much worse idea seems to be to have a bunch of hanging PRs that wait to be merged until we're ready to release 4.0. let's not do this.

Somewhat related to this: some current PRs involved a lot of work and may be better to merge them before 4.x (and breaking changes), to avoid large rewrites/rebase/merging changes. #925 comes to mind.

If 4.0 comes and #925 is not ready, that's okay. I haven't had time to finish it lately but I can take a crack at it this weekend. Will try to get it in before #680!

@ctb
Copy link
Contributor Author

ctb commented Aug 3, 2020

per #1034, we'll go with latest (for 4.x and beeeeeyond) and stable (for 3.x) branches.

@ctb
Copy link
Contributor Author

ctb commented Aug 4, 2020

with #1144, we now have

https://github.com/dib-lab/sourmash/releases/tag/v4.0.0a0

and pip install -e . produces:

% sourmash info

== This is sourmash version 4.0.0a0. ==
== Please cite Brown and Irber (2016), doi:10.21105/joss.00027. ==

sourmash version 4.0.0a0
- loaded from path: /Users/t/dev/sourmash/sourmash/cli

huzzah!

@luizirber
Copy link
Member

luizirber commented Aug 5, 2020

From #1128 (comment)

In any case, we might need a PR derived from this one for the DeprecationWarnings and merge it in stable? (and then release it as 3.4.2 and continue updating latest? =])

Should we start just adding the DeprecationWarnings to stable and release patch versions (3.4.2, 3.4.3...) to indicate what is going to break in 4.x? And maybe make a final 3.5.0 release right before we release 4.0.0?

@ctb
Copy link
Contributor Author

ctb commented Aug 5, 2020 via email

@ctb
Copy link
Contributor Author

ctb commented Aug 5, 2020

ok, so the #1128 merge was not done well... I merged into stable and then from there into latest. I think I prefer:

  • merge new PRs into latest, with full review etc.
  • backport into stable periodically as a separate PR, with clear indications of what the original PR or PRs were.

@luizirber
Copy link
Member

Yeah, latest first and then stable. I assumed it was against latest, but later noticed it was against stable 😞

@ctb
Copy link
Contributor Author

ctb commented Aug 6, 2020 via email

@ctb
Copy link
Contributor Author

ctb commented Aug 6, 2020

OK so I'm slowly starting to figure this out, sigh. I'll release 3.5.0 sometime soon.

@ctb
Copy link
Contributor Author

ctb commented Aug 6, 2020

Note https://github.com/dib-lab/sourmash/releases/tag/v3.5.0a0 (based on stable), which should alert us to all the deprecations.

@luizirber
Copy link
Member

Note https://github.com/dib-lab/sourmash/releases/tag/v3.5.0a0 (based on stable), which should alert us to all the deprecations.

Let's try to avoid too many a0 versions, I still remember the many 2.0.0a releases...

@luizirber
Copy link
Member

I think it is OK for 4.0.0a0, but let's try to release 3.5.0 soon =]

@ctb
Copy link
Contributor Author

ctb commented Aug 6, 2020 via email

@luizirber
Copy link
Member

From #1150 (comment):

Looks good, overall. Question: do we want to point at stable URLs for documentation, notebooks, etc? I expect we'll keep stable up to date with the last release, in the future...

I thought stable was temporary until 4.0.0 is released, keep syncing branches will be annoying... Maybe turn stable into a tag, and add to the release notes to replace it on every stable release?

@ctb
Copy link
Contributor Author

ctb commented Aug 11, 2020

any comments on the header, @luizirber ? #1162 --

This is the first of several minor releases (v3.5.x) from the new stable branch that focus on preparing for sourmash v4.0 by introducing deprecations and warnings.

@ctb

This comment has been minimized.

@ctb
Copy link
Contributor Author

ctb commented Feb 7, 2021

reupping question:
What do we do about stable vs latest docs, per comment above? #1016 (comment)

Question: do we want to point at stable URLs for documentation, notebooks, etc? I expect we'll keep stable up to date with the last release, in the future...
I thought stable was temporary until 4.0.0 is released, keep syncing branches will be annoying... Maybe turn stable into a tag, and add to the release notes to replace it on every stable release?

@ctb
Copy link
Contributor Author

ctb commented Feb 15, 2021

ok, I finally grappled with read the docs & stable conversation and I think I understood it!

here's what I think we should do, mechanistically:

  • now: shift default readthedocs to redirect to stable (v3.5.1 docs); visiting sourmash.rtfd.io will go to stable docs.
  • merge [MRG] Documentation updates for 4.0 release #1283, the big doc update for 4.0. it will show up on sourmash.rtfd.io/en/latest/, but not be the default docs
  • release 3.5.1 and 4.0.0a4
  • (do other stuff here)
  • release 4.0
  • point 'stable' docs at 'latest' now, spin off 3.5.1 docs to their own URL.

that way stable always points at the docs you get when you run pip install or conda install without a specific version.

@luizirber
Copy link
Member

here's what I think we should do, mechanistically:

I agree, some additional comments:

  • now: shift default readthedocs to redirect to stable (v3.5.1 docs); visiting sourmash.rtfd.io will go to stable docs.
  • merge [MRG] Documentation updates for 4.0 release #1283, the big doc update for 4.0. it will show up on sourmash.rtfd.io/en/latest/, but not be the default docs
  • release 3.5.1 and 4.0.0a4

I think we can release 4.0.0rc1 instead of another alpha, I think there are no code changes left.

  • (do other stuff here)

Probably debug the migration docs from #1283 and recommend specifying sourmash versions using ranges (sourmash >=3, <4), like we do for setuptools_scm in pyproject.toml

I think we should announce the availability of the migration docs and 4.0.0rc1 and ask for feedback, and after some time (a week?) promote the rc to the final release.

  • release 4.0
  • point 'stable' docs at 'latest' now, spin off 3.5.1 docs to their own URL.

And probably remove the stable branch?

@ctb
Copy link
Contributor Author

ctb commented Feb 15, 2021

here's what I think we should do, mechanistically:

I agree, some additional comments:

  • now: shift default readthedocs to redirect to stable (v3.5.1 docs); visiting sourmash.rtfd.io will go to stable docs.

done! 🎉

I think we can release 4.0.0rc1 instead of another alpha, I think there are no code changes left.

sure!

  • (do other stuff here)

Probably debug the migration docs from #1283 and recommend specifying sourmash versions using ranges (sourmash >=3, <4), like we do for setuptools_scm in pyproject.toml

👍 - I take it that's a suggestion for #1283? 😉

I think we should announce the availability of the migration docs and 4.0.0rc1 and ask for feedback, and after some time (a week?) promote the rc to the final release.

👍

  • release 4.0
  • point 'stable' docs at 'latest' now, spin off 3.5.1 docs to their own URL.

And probably remove the stable branch?

I'd like to keep a v3.5 maint branch around Just In Case? Although we could just start with the v3.5.1 tag if we needed to release a v3.5.2. So 👍 for removal.

@ctb
Copy link
Contributor Author

ctb commented Feb 16, 2021

OK - I think the next step is merging #1283 and then I can release 4.0.0rc1!

@ctb
Copy link
Contributor Author

ctb commented Mar 3, 2021

c'est fini!

@ctb ctb closed this as completed Mar 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4.0 issues to address for a 4.0 release
Projects
None yet
Development

No branches or pull requests

3 participants