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

[tracking] Migrate pallets to umbrella crate #6504

Open
3 of 91 tasks
re-gius opened this issue Nov 15, 2024 · 34 comments
Open
3 of 91 tasks

[tracking] Migrate pallets to umbrella crate #6504

re-gius opened this issue Nov 15, 2024 · 34 comments
Labels
C2-good-first-issue A task for a first time contributor to become familiar with the Polkadot-SDK. D0-easy Can be fixed primarily by duplicating and adapting code by an intermediate coder. I4-refactor Code needs refactoring. R0-silent Changes should not be mentioned in any release notes T1-FRAME This PR/Issue is related to core FRAME, the framework.

Comments

@re-gius
Copy link
Contributor

re-gius commented Nov 15, 2024

Migrate all pallets to polkadot-sdk-frame by adding types and preludes to it when necessary. As a reference, you can look into #5995.

The guidelines of the umbrella crate are as follows:

//! ## Maintenance Note
//!
//! > Notes for the maintainers of this crate, describing how the re-exports and preludes should
//! > work.
//!
//! * Preludes should be extensive. The goal of this pallet is to be ONLY used with the preludes.
//! The domain-specific modules are just a backup, aiming to keep things organized. Don't hesitate
//! in adding more items to the main prelude.
//! * The only non-module, non-prelude items exported from the top level crate is the `pallet`
//! macro, such that we can have the `#[frame::pallet] mod pallet { .. }` syntax working.
//! * In most cases, you might want to create a domain-specific module, but also add it to the
//! preludes, such as `hashing`.
//! * The only items that should NOT be in preludes are those that have been placed in
//! `frame-support`/`sp-runtime`, but in truth are related to just one pallet.
//! * The currency related traits are kept out of the preludes to encourage a deliberate choice of
//! one over the other.
//! * `runtime::apis` should expose all common runtime APIs that all FRAME-based runtimes need.

✅ Checklist:

  • Add polkadot-sdk-frame to the Cargo.toml
  • Remove all imports from frame_support, sp_runtime and similar, and replace with the appropriate prelude::*
  • For items that are now not in scope, use the above guideline to decide if you should add them to prelude, or reside to using deps
  • Update Cargo.toml to remove all unneeded dependencies.

👉 If you want to work on this: Please check that there is not already a merge request for the pallet that you want to work on (here or in the comments below). Please pick only one or a small set of pallets - not all at once. This keeps review times low. Add a comment below to announce the pallets you're working on.

Pallet list

@re-gius re-gius added R0-silent Changes should not be mentioned in any release notes I4-refactor Code needs refactoring. T1-FRAME This PR/Issue is related to core FRAME, the framework. D0-easy Can be fixed primarily by duplicating and adapting code by an intermediate coder. C2-good-first-issue A task for a first time contributor to become familiar with the Polkadot-SDK. labels Nov 15, 2024
@bennethxyz
Copy link

bennethxyz commented Nov 15, 2024

Can I pick this up @re-gius

Thinking this should be a tracking issue as it involves more than one crate but happy to do it!

@re-gius
Copy link
Contributor Author

re-gius commented Nov 15, 2024

Can I pick this up @re-gius

Thinking this should be a tracking issue as it involves more than one crate but happy to do it!

Yes, it's going to be a tracking issue. You are more than welcome to start working at some pallets/crates, ideally one or two per PR.

@Krayt78
Copy link
Contributor

Krayt78 commented Nov 27, 2024

Are there still some pallets to work on or are you doing all of them?

@AurevoirXavier
Copy link
Contributor

AurevoirXavier commented Dec 16, 2024

Why do we have to import codec, scale-info & log every-time even when it is in the umbrella crate?

Because they hardcoded some of those things in the frame-support's macros. Suggest changing those marcos usage to frame::codec instead of ::crate::codec/crate::codec.

@FasmaHouse
Copy link

Thanks for the quick response @AurevoirXavier

Suggest changing those marcos usage to frame::codec instead of ::crate::codec/crate::codec.

Should we not all do this then?

@AurevoirXavier
Copy link
Contributor

AurevoirXavier commented Dec 16, 2024

Should we not all do this then?

I'm happy to see that.

cc @kianenigma

@FasmaHouse
Copy link

Maybe at the final stages, when all crates are ported then one PR can help correct all the other crates?

@AurevoirXavier
Copy link
Contributor

Maybe at the final stages, when all crates are ported then one PR can help correct all the other crates?

Yes.

@Krayt78
Copy link
Contributor

Krayt78 commented Dec 16, 2024

taking pallet scheduler

@Krayt78
Copy link
Contributor

Krayt78 commented Dec 16, 2024

Why do we have to import codec, scale-info & log every-time even when it is in the umbrella crate?

Because they hardcoded some of those things in the frame-support's macros. Suggest changing those marcos usage to frame::codec instead of ::crate::codec/crate::codec.

oh yeah i am having the same issue with the defensive! macro in frame support, i have no idea how to fix that without rewritting the macro to not use frame support

@re-gius
Copy link
Contributor Author

re-gius commented Dec 16, 2024

Thanks for al your work on this PR. I should get a few reviews done by this week, and then pick up new PRs in January.

I'll ask other engineers from Parity to help, but also notice that the end of December is usually an inactivity period for low-priority tasks like this.

One important thing I want to mention is: read the guidelines. Don't be scared to add imports to the umbrella crate preludes, as longs as they are used across multiple pallets. If something like:

import A1;
import A2;
...
import A10;

becomes

import frame::{A1, A2, ..., A10);

then you're probably doing it wrong. The ultimate goal is to only have something like import frame::prelude::* and, even when that is not possible, imports should be significantly leaner than before.

@Krayt78
Copy link
Contributor

Krayt78 commented Dec 17, 2024

Taking pallet-paged-list and pallet-paged-list-fuzzer since they go together

@UtkarshBhardwaj007
Copy link

Hi, I'd like to work on this. I will pickup pallet-mixnet to start with.

@seemantaggarwal
Copy link

Hi, I'd like to work on this. I will pickup pallet-child-bounties to start with.

@AurevoirXavier
Copy link
Contributor

Pick pallet-salary.

@FasmaHouse
Copy link

taking pallet-exampl-task & pallet-example-offchain-worker

@tobi-michael
Copy link

taking pallet-executive

@Aenyi
Copy link

Aenyi commented Dec 23, 2024

taking pallet-fast-unstake & pallet-glutton

@Nathy-bajo
Copy link

taking pallet-sudo & pallet-statement

@tifecool
Copy link

taking pallet-paraameter & pallet-preimage

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C2-good-first-issue A task for a first time contributor to become familiar with the Polkadot-SDK. D0-easy Can be fixed primarily by duplicating and adapting code by an intermediate coder. I4-refactor Code needs refactoring. R0-silent Changes should not be mentioned in any release notes T1-FRAME This PR/Issue is related to core FRAME, the framework.
Projects
None yet
Development

No branches or pull requests