--- type: slide --- # FRAME Retreat July 2023 --- ## 🧘 A Holistic FRAME Overview Goal: give everyone a mental model of our *major* outstanding issues/ideas. ---- ## 🧘 A Holistic FRAME Overview The sources of information I went over, in the order of importance/relevance: 1. Our [Roadmap](https://github.com/orgs/paritytech/projects/27/views/14) 2. Our ["Vision"](https://github.com/orgs/paritytech/projects/40/views/6) issues 3. Our ["Main"](https://github.com/orgs/paritytech/projects/40) issues 4. Our [SR-Labs](https://github.com/paritytech/srlabs_findings/issues/assigned/kianenigma) backlog 5. FRAME Tag in Polkadot Forum. 6. And some untracked stuff from memory 🧠. > This is all about "FRAME Proper". XCM and Staking possibly have their own rabbit holes. note: also: https://github.com/orgs/paritytech/projects/11/views/4 A lot of the issues mentioned here are linked to one another. Creating some sort of a graph among them (similar to what Obsidian does for notes) would be cool. ---- ### Tracked in Well Described Issues > Ideally, everything here should be well-understood and well-acknowledged as either "important, we will do it" or the opposite. - Roadmap issues - Vision issues - All other "vetted" issues note: Kian: from this slide, it might be a good idea to just go over the roadmap issues once more, and skim the vision ones. ---- ### Tracked Somewhere in Writing, Somewhat Understood: > Still being discussed. Sometimes "heretical". Nonetheless worth discussion. ---- #### pallet splitting+aggregation - https://forum.parity.io/t/splitting-pallets-into-multiple-files/1510 - https://github.com/paritytech/substrate/pull/13950 ---- #### Metered vs. Pre-Dispatch Weights: - https://forum.parity.io/t/eliminating-pre-dispatch-weight/1085/4 - Also: allowing panics in the runtime: https://github.com/paritytech/substrate/issues/2980 ---- #### New Event System - https://forum.parity.io/t/non-consensus-events/719 ---- #### The Merge https://forum.parity.io/t/the-merge-ink-frame/1138 note: Kian: my latest talk to Shawn highlighted that this is less about "FRAME is too hard". My counter argument was that we don't need the Merge and we can instead make FRAME simpler. Requires cleaner system interface, something akin to Ink's `Context`. alex: I agree. Having written a lot of code in both frameworks I can say that writing ink! is not really easier than FRAME per se. ink! is easier for few reasons: - No benchmarks required. - Umbrella crate that summarizes the whole API surface in ink! vs. a lot of crates to hunt for in FRAME. - You can do less stuff. I didn't list panics because it is not a big deal IMHO. As long as you just bubble up errors in FRAME you are in the clear as we roll back on error. ---- #### Auction/Lease Story - https://github.com/paritytech/polkadot/issues/4758 - Also see "PR2294" in SR-Labs note: Kian: In general, worried that no one is thinking about these pallets in a "Product"-oriented fashion, like we have for XCM and Staking. ---- #### `frame` umbrella crate - https://github.com/paritytech/substrate/pull/14137 ---- ### Tracked Mostly in People's 🧠, less clear. ---- #### Self Balancing BTree Backend: - And other trie-related cluster fucks. - https://github.com/paritytech/srlabs_findings/issues/5 - https://github.com/paritytech/srlabs_findings/issues/276 note: https://github.com/cosmos/iavl ---- #### Better Signed Extension API - Current signed extension contains APIs are that would be better understood as `Hooks`. - `Hooks` themselves have a few potential improvements: - `PostInherent`: https://github.com/paritytech/substrate/pull/10128 - `PreDispatch`/`PostDispatch` as a part of hooks: https://github.com/paritytech/substrate/issues/12047 note: `poll` and `MBM` ongoing will likely impact this. *Gav: I don't think this is especially sensible. The only example that was given could just as easily (probably more easily) be implemented in a `SignedExtension` or as a test function called explicitly within dispatchables.* ---- #### Democratized FRAME Merge Rights - https://forum.polkadot.network/t/moving-frame-out-of-substrate/907 - Possibly something that will be discussed in a fellowship meeting. - What about audits? (eg. https://github.com/paritytech/substrate/issues/14293#issuecomment-1596816613 if it is merged?) note: *Gav: A non-starter for any pallets used in system/relay chains*. ---- #### Community-led vs Parity-led efforts - How much do we want to continue building tools for the community? - When do we judge that the community is mature enough so that we don't need to hand-hold them as much? - ORML vs Parity pallets ---- #### Parachains Reading State From One Another - https://github.com/polytope-labs/substrate-ismp - https://github.com/paritytech/cumulus/issues/320 - https://github.com/paritytech/polkadot/issues/5087 ---- #### What Else 🙋‍♂️? Feel Free to Add More Slides with Important Issues/Topics. --- ## 🗓️ FRAME 2024 And beyond. - Given the previous section: - Let's talk about what are some of the main goals we have for (rest of 2023 and) 2024. --- ## 🗓️💸 Staking 2024 note: Kian: what I roughly think happens next with staking is: 1. pools+governance fix 2. validator pre-sorting based on approval stake 3. infra work (revised slashing, hardening security guarantees) 4. nominator scaling (multi-block npos) 5. staking parachain 6. Faster unstake --- ## 🛫 Flying Low 🛬 And how to deal with it. note: Let's talk about the fact that everything we do counts as playing with fire, in some sense. An error on our side could have severe consequences. We want to be realistic, and not let such fears hinder development, but also: 1. talk about this within the team to support one another. 2. put reasonable efforts into improving our testing+QA workflows to rely less on lack of human error. Thoughts: - Investigate slow blocks - After many half-baked and incomplete initiatives, A dedicated monitoring guy for FRAME? --- ## 👀 Retro > I randomly joined the DevRel team's retro a few months ago and they did this exercise: Given how the first half of 2023 has gone, what do you want to - **Start**: What you lack, what is missing and is holding you back. - **Stop**: What annoys you, you don't want to do. - **Continue**: What is going great, you makes you grin. Doing for the rest of it. note: Kian: Stop: Weekly calls See PRs lacking review for ages. Start: More async-friendly updates (liedown, brief meeting notes) In Person meetings (replacing calls), Dedicated FRAME Education person Dedicate time talking with FRAME coders (some expectations of DevRel here..) Continue: Keep an overview of the team, as I did for this retreat. Healthy relationship with my gh notifications. --- ## Appendix: Bikeshedding Retreat Ideas ⏰ 1. Daily routine and habits. 2. Development workflow, how your build setup is. 3. How you keep yourself up to date with the rest of FRAME, Parity, Ecosystem. 4. How you deal with your gh notifications (or you don't 🤠).