Replies: 5 comments 7 replies
-
Where we want to be
|
Beta Was this translation helpful? Give feedback.
-
How do we get there
|
Beta Was this translation helpful? Give feedback.
-
Hello @xlc, thank you for amazing proposal. Let me share my opinion, just as one of substrate developer for some years. Shortly, I understand your point, but can’t support move core pallets out of substrate. Let’s go deep into details. This is my personal opinion, let’s go step by step for the problems list:
That’s absolutely right, merging PR into substrate is hard, but it makes difficult to introduce dangerous/breaking change from other side. Fix all vulnerable code going pretty quick, thanks substrate devs.
Yes, yes and yes! Substrate should have predictable release cycle someday. I believe anyone from substrate community dream about it. But move frame out unfortunately don’t solve it.
I’m sure that substrate core pallets should don’t known anything about XCM and other high level abstractions, it makes it non-core then. Summarize, in my point of view, right now we have fine tuned and fully compatible minimal frame that guarantied to be well audited and stable. I’m not sure we can achieve it for dedicated repo without additional work for substrate devs. From other side, really, community driven frame, where PR is easy to approve and merge, is what we need in growing ecosystem. I’m totally agree that we need more XCM pallets, more integration and complex use cases, but let’s don’t broke the foundation we builds for years and finally have now. |
Beta Was this translation helpful? Give feedback.
-
Hello @xlc, this is a great discussion and I would like to throw my thoughts in here too in hopes of finding a solution. First off, I completely agree with your observation on the current state of Substrate pallets. I have a lot of complaints about how things are managed with duplicate implementations. Although PSP can more or less help on the client side, this won't do much on the runtime development side. Regardless, my recommendation is that we create a new GitHub organization named Substrate, and move everything related to Substrate and its pallets under that organization (migrate ORML, move frontier, cumulus, etc). We can perhaps split the main repo too into I believe that the main problem we have right now is the community's view on the purpose of Substrate as a framework, and the fractured nature of how pallets are being kept by multiple organizations. |
Beta Was this translation helpful? Give feedback.
-
I would tend to agree with the general opinion here which is that we need a better way to manage, version, release, and contribute to pallets. A good example of how this is done in the ETH sphere would be OpenZeppelin. It is community-owned and managed (to some extent) and now widely used by the ecosystem. We could start something similar by moving most non-core pallets out of FRAME, ORML, or equivalents and push them to a unique repo under the Polkadot/Substrate/Parity umbrella (pick your favorite). With that being said, we probably do not want to only emphasize the single repo/org solution and forget all the valid reasons for teams to manage pallets on their own side. In such a case shouldn't we also discuss a better way to discover and standardize pallets? This could be as simple as tagging conventions on github and crates.io, along with a simple frontend to discover those. Or even a simple index of all the pallets in the ecosystem. |
Beta Was this translation helpful? Give feedback.
-
Currently FRAME offers a set of generalized & reusable pallets but the size is still small and we don't really have much external contributors submitting pallets to FRAME. A few reasons that I can think of are:
To workaround some of the above issues, we at Acala created ORML aims to provide a set of reusable pallets that covers more use cases such as multi token and XCM utility. It is currently used by at least 7 live parachains we are start receiving community contributed pallets into ORML. However, this is still not ideal.
Problems (and rants) >>> Click to expand <<<
ORML as a separate repo, it can be hard for external team to include it. In the end, it is another 3rd party deps that needs to be carefully managed to ensure the version aligns. Specially that Substrate is not published to crates.io and therefore people cannot use cargo to manage the versions. They need to manually pick the right branch or there will be compiler error.
While I believe most of core devs for Substrate are aware of ORML, the development are completely separated and we end up with a lot of similar but incompatible pallets. A few examples are:
And we need to remove features from ORML because they have been implemented in Substrate. Occasionally that's due to our own contribution as we still want the features to be maintained in Substrate as much as possible.
On top of that, there are a lot of almost required pallet for parachains that are not provided by Substrate/Polkadot/Cumulus and end up been multiple incompatible implementations between all the parachains. I only checked a handful of parachains so this is not a complete list.
Ability to dynamically pause transaction via governance
Asset registry to manage token metadata and XCM MultiLocation
Ability to pay tx fee using different tokens
And we have different flavor of collector-selection, xcm utility etc. Everyone are referencing each others and making their own pallets but with their own twist to fit their own requirements. This means wallets, blockchain explorers, any multi chain tools are very hard to be compatible with all the parachains. We have PSPs but I would leave it out for now as it isn't really helping.
All the Substrate developers needs to unite together to change the current situation so that we can focus on our own core business logic, instead spend all the time to implement logics required to run a L1 such as token handling, governance, XCM, etc.
I believe most of the Substrate developers are aware most the issues I raised here, but the fact we are still here is mainly due the the issues are not easy to solve. But the issues aren't going to solve itself so I am making this a discussion post, trying to identify where we want to be, and laying down a path towards there. Please help contribute your ideas to refine the tasks and help contribute followup issues and PRs to make this happen. But of course we will also need full support from Parity team as it requires restructure of the Substrate repo as well. Please signaling your support by upvote issue discussion.
Beta Was this translation helpful? Give feedback.
All reactions