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

Release v1.0.0 🎉 #4991

Closed
7 tasks
conorsch opened this issue Jan 16, 2025 · 4 comments
Closed
7 tasks

Release v1.0.0 🎉 #4991

conorsch opened this issue Jan 16, 2025 · 4 comments
Assignees

Comments

@conorsch
Copy link
Contributor

Tooling Release

We plan to publish all of the workspace crates (#4988), to unblock external developers. As part of that work, we're updating several critical dependencies, and intend to bump crate versions to 0.82.x to denote the changes. Despite the minor version bump, we must execute this change while maintaining full compatibility with the existing protocol, so that nodes can upgrade seamlessly.

Changes to include

Workflow implications

The currently active version of Penumbra protocol is 9, with crate version 0.81.0: https://github.com/penumbra-zone/penumbra/blob/v0.81.0/COMPATIBILITY.md The most recent tagged release was v0.81.0, although we intend to continue to update this release series (#4988). In order to maintain velocity on 0.81.x while preparing changes for 0.82.x in parallel, I propose the following:

  1. revert changes to main in penumbra: update ecosystem tendermint/ibc crates #4980, thereby restoring the main branch to an immediately shippable state, including numerous fixes to pindexer
  2. proceed with release of 0.81.1 as described in Release v0.81.1, via point-release #4988
  3. recreate the dedicated feature branch release/v0.82.x, based on the 0.81.1 tag, and resubmit Release v0.81.1, via point-release #4988 & feat: publish workspace crates #4986 into it.

The proposal above essential re-implements the steps initially taken by @erwanor (and @SuperFluffy) in #4973 & #4975. However, given the breakage we discovered post-merge, it's valuable to recreate the release/v0.82.x branch based on the refactored changesets in those PRs.

The release/v0.82.x branch will quickly get out of sync with the main as changes are made towards the 0.81.x series. Once we start creating tags on the release/v0.82.x, we cannot rebase it, without breaking those tags. Therefore we'll need to cherry-pick frequently if we want to make changes across both release series. We'll try to minimize the amount of time we're maintaining both branches.

Post-QA, when the team deems the 0.82.x changes ready, we can prepare a changeset to reconcile with main, as we did with #4969.

Compatibility

Although this is a minor-release, all changes must be fully compatible for all nodes and clients. Therefore we must perform careful assurance work to ensure there are no breaking changes:

  • publish alpha tags to crate.io, so that external developers can evaluate depending on them
  • update external tooling to consume those published dependencies (e.g. hermes)
  • publish beta tag for use in upgrading PL testnet
  • upgrade PL testnet to beta tag, performing serial upgrades, so that we can observe nodes on both 0.81.x and 0.82.x versions interacting, to confirm that consensus is maintained

Ongoing work will continue to target main.

@conorsch conorsch self-assigned this Jan 16, 2025
@github-actions github-actions bot added the needs-refinement unclear, incomplete, or stub issue that needs work label Jan 16, 2025
@conorsch conorsch removed the needs-refinement unclear, incomplete, or stub issue that needs work label Jan 16, 2025
conorsch added a commit that referenced this issue Jan 17, 2025
This reverts commit 64c32ef,
which constitutes the squash-merge of PR #4980. We're backing this
change out strictly to simplify release engineering: we want the `main`
branch to remain fully compatible with the `0.81.x` series,
and we'll continue QA of significant version changes in a parallel
release branch, `release/v0.82.x`. I'll handle preparing the latter
shortly.

See related discussion in #4988 & #4991.
conorsch added a commit that referenced this issue Jan 17, 2025
)

## Describe your changes
This reverts commit 64c32ef, which
constitutes the squash-merge of PR #4980. We're backing this change out
strictly to simplify release engineering: we want the `main` branch to
remain fully compatible with the `0.81.x` series, and we'll continue QA
of significant version changes in a parallel release branch,
`release/v0.82.x`. I'll handle preparing the latter shortly.

## Issue ticket number and link

See related discussion in #4988 & #4991.

## Testing and review

This is a programmatic change, in that I simply ran `git revert
64c32ef`, wrote some notes into the commit message, and pushed it up.
I also made sure to rerun `just proto` to regenerate the protos, and
confirmed there are no changes. That's good, that's precisely what we
wanted to see.

Preferably this change would land before #4992, since #4992 changes
protos. I'll regenerate protos in 4992 on top of this once it lands on
main.

## Checklist before requesting a review

- [x] I have added guiding text to explain how a reviewer should test
these changes.

- [x] If this code contains consensus-breaking changes, I have added the
"consensus-breaking" label. Otherwise, I declare my belief that there
are not consensus-breaking changes, for the following reason:

> This commit is expressly intended to preserve protocol compatibility
with 0.81.x. Future work on QA to ensure compat with 0.82 will happen in
a separate branch.
@conorsch conorsch changed the title Release v0.82.0, via minor release Release v1.0.0 🎉 Jan 21, 2025
@conorsch
Copy link
Contributor Author

We've discussed internally, and decided to publish the workspace crates as v1.0.0. We'll forego the 0.82.x series entirely.

@conorsch
Copy link
Contributor Author

The tag for v1.0.0 is live, but the release workflows are currently failing, due to upstream breakage. When that's resolved, I'll rerun the workflows, so that we have a public release object to point to, as well as prebuilt binaries available for download, as usual.

@duckinator
Copy link

@conorsch we just sorted everything out on cargo-dist's end, so you should be good to go. Thanks again for letting us know about it! 🙂

@conorsch
Copy link
Contributor Author

Thanks, @duckinator, for the extremely prompt support—and for a fantastic project in cargo-dist!

After rerunning the workflow, we have a final release object for v1.0.0: https://github.com/penumbra-zone/penumbra/releases/tag/v1.0.0

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

2 participants