Initiative: Improvements we should introduce to the mainnet upgrade process - OP stack #452
Replies: 6 comments 6 replies
-
Beta Was this translation helpful? Give feedback.
-
I think teams should try to have a prototype in progress in parallel with the spec update, which will allow us to more quickly work out the kinks. For example we ended up pivoting a couple times on the configurable EIP-1559 parameter design a few times because of challenges that were only uncovered once we started implementing. |
Beta Was this translation helpful? Give feedback.
-
Makes sense to me basically. I definitely agree with doing prototypes and showing things working. We often spend a ton of time writing specs and design docs and then discover it doesn't work as soon as we start writing code. I'm also a little concerned about the hard fork every 3 months schedule. That is a very fast schedule for hard forks which means spending a huge amount of time coordinating the fork. I love incremental delivery and small change sets but given a hard fork requires something about 6 weeks of coordination and we actually need to be spending more time doing things like devnets and cross-client compatibility testing after we reach code complete, doing one every 3 months is a lot of overhead and leaves extremely little time for actual development. Yes theoretically we can pipeline, practically not so much and it hugely increases time pressure because if one fork slips there are others downstream that are impacted (see the Hokey Pokey happening with Isthmus changes). Personally I'd focus on getting the hard fork process smooth when doing one fork at a time before trying to pipeline stuff. |
Beta Was this translation helpful? Give feedback.
-
Overall the improvements suggested here sound great to me. The way this is written sounds like it applies strictly to hard forks. Is this correct, or does it apply to contract changes also? Sometimes hard forks also require contract upgrades, sometimes they have no associated contract upgrades (aside from the required dispute game changes), and sometimes contract upgrades are required without an associated hard fork. We should clarify how contracts fit into this proposal |
Beta Was this translation helpful? Give feedback.
-
I've noticed we spend a lot of time discussing the same things for each hard fork and contract upgrade. Below is a checklist (that is probably missing some things) covering everything I could think of that's involved in shipping to production. Not all items are always applicable. I'm curious to get thoughts around standardizing something like this to help reduce a lot of the discussions we always have. The idea is:
Checklist: Shipping Features and Fixes to Production
- Target governance cycle: <cycle number and dates>
- Design docs: <link to design docs>
- Specs: <link to specs>
- FMA: <link to FMA>
- Audit report(s): <link to audit report(s)>
- Update to security reviews folder: <PR to update https://github.com/ethereum-optimism/optimism/tree/develop/docs/security-reviews>
- Standard rollup charter (standard config) changes: <link to doc detailing suggested changes and open questions>
- Superchain registry changes: <link to suggested superchain registry changes>
- New incident response runbooks: <link to new runbooks>
- Existing incident response modifications: <link to doc detailing diff of existing runbooks>
- Monitoring/alerting requirements: <link to monitoring/alerting requirements>
- Draft governance post: <link to relevant portion of governance post>
- Deployment/Rollout plan: <for all chains we hold keys for, consider devnet, sepolia, mainnet>
- Cut op-geth release candidate: <links to op-geth release>
- Cut op-node release candidate: <links to op-node release>
- Cut op-program release candidate: <links to op-program release>
- Cut op-contracts release candidate: <links to op-contracts release>
- <etc. for any missing op-* package release candidates that are needed>
- <repeat of the above for the final releases>
- Devnet superchain-ops upgrade: <link to draft playbook>
- Communication of devnet upgrade to appropriate teams
- Sepolia superchain-ops upgrade: <link to draft playbook>
- Communication of sepolia upgrade to appropriate teams
- Mainnet superchain-ops upgrade: <link to draft playbook>
- Communication of sepolia upgrade to appropriate teams
- Docs: <link to docs PRs>
- Draft email for foundation approval: <link to draft email>
- Infrastructure rollouts: <what's needed> |
Beta Was this translation helpful? Give feedback.
-
I think auditing progress or plan of HFs is also of interest to lots of users. |
Beta Was this translation helpful? Give feedback.
-
I wanted to start a discussion and share specific ideas for improving our release flow for the OP stack.
Our motive to try to make our process better:
For the past year, we've been shipping hardforks on a regular schedule.
As we grow the network, we need to involve more core developers who are building with us in the entire process. Currently, we potentially lack sufficient public documentation to help everyone understand the steps and procedures behind our release flow.
Additionally, we aim to continuously introduce improvements and refine the hardfork process over time.
In order to start making things even better and recognize the ideas and feedback we received about the current upgrade process, I'm proposing the following:
Improvements we should make
WHY: We need product managers to share their views around:
We should have a cut-off period in which we “lock” the scope for each hardfork we plan to do. We suggest doing it as soon as we start working on the engineering tasks and after we merge all the relevant specifications for that specific hardfork.
We should try to execute a hardfork release every 3 month or even sooner, so we can keep regularly shipping improvements to our users.
The FMA document (good example) should be created and reviewed as part of the specification reviews. By this moment, we know the scope and the specific items we plan to ship, so we can create a draft FMA from it. Starting the FMA document sooner than later is one the big learnings we had in the last 2,3 hardforks.
We should start tracking metrics around the following development activities:
We should have a dedicated hardfork discord channel that will allow everyone to participate and explain their ideas, specs, and current tasks. #Holocene-HF is a good example of how this should look like
As part of our planning and scoping efforts - we should create a buffer time that will allow us to do proper scope and specification reviews since this is a stage in which ideas are turned into actual future work.
Every hardfork should have its own retrospective call - all core development teams that participated will be invited. We will use this dedicated call to share ideas, learn and improve the deliver processes over time.
Beta Was this translation helpful? Give feedback.
All reactions