-
Notifications
You must be signed in to change notification settings - Fork 59
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
Process for Adding New System Collectives #12
Merged
paritytech-rfc-bot
merged 4 commits into
polkadot-fellows:main
from
joepetrowski:new-collectives
Nov 11, 2023
Merged
Changes from 3 commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
108 changes: 108 additions & 0 deletions
108
text/RFC-0012-Process-for-Introducing-New-Collectives.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# RFC-0012: Process for Adding New System Collectives | ||
|
||
| | | | ||
| --------------- | ----------------------------------------------------------------------------- | | ||
| **Start Date** | 24 July 2023 | | ||
| **Description** | A process for adding new (and removing existing) system collectives. | | ||
| **Authors** | Joe Petrowski | | ||
|
||
## Summary | ||
|
||
Since the introduction of the Collectives parachain, many groups have expressed interest in forming | ||
new -- or migrating existing groups into -- on-chain collectives. While adding a new collective is | ||
relatively simple from a technical standpoint, the Fellowship will need to merge new pallets into | ||
the Collectives parachain for each new collective. This RFC proposes a means for the network to | ||
ratify a new collective, thus instructing the Fellowship to instate it in the runtime. | ||
|
||
## Motivation | ||
|
||
Many groups have expressed interest in representing collectives on-chain. Some of these include: | ||
|
||
- Parachain technical fellowship (new) | ||
- Fellowship(s) for media, education, and evangelism (new) | ||
- Polkadot Ambassador Program (existing) | ||
- Anti-Scam Team (existing) | ||
|
||
Collectives that form part of the core Polkadot protocol should have a mandate to serve the | ||
Polkadot network. However, as part of the Polkadot protocol, the Fellowship, in its capacity of | ||
maintaining system runtimes, will need to include modules and configurations for each collective. | ||
|
||
Once a group has developed a value proposition for the Polkadot network, it should have a clear | ||
path to having its collective accepted on-chain as part of the protocol. Acceptance should direct | ||
the Fellowship to include the new collective with a given initial configuration into the runtime. | ||
However, the network, not the Fellowship, should ultimately decide which collectives are in the | ||
interest of the network. | ||
|
||
## Stakeholders | ||
|
||
- Polkadot stakeholders who would like to organize on-chain. | ||
- Technical Fellowship, in its role of maintaining system runtimes. | ||
|
||
## Explanation | ||
|
||
The group that wishes to operate an on-chain collective should publish the following information: | ||
|
||
- Charter, including the collective's mandate and how it benefits Polkadot. This would be similar | ||
to the | ||
[Fellowship Manifesto](https://github.com/polkadot-fellows/manifesto/blob/0c3df46/manifesto.pdf). | ||
- Seeding recommendation. | ||
- Member types, i.e. should members be individuals or organizations. | ||
- Member management strategy, i.e. how do members join and get promoted, if applicable. | ||
- How much, if at all, members should get paid in salary. | ||
- Any special origins this Collective should have outside its self. For example, the Fellowship | ||
can whitelist calls for referenda via the `WhitelistOrigin`. | ||
|
||
This information could all be in a single document or, for example, a GitHub repository. | ||
|
||
After publication, members should seek feedback from the community and Technical Fellowship, and | ||
make any revisions needed. When the collective believes the proposal is ready, they should bring a | ||
remark with the text `APPROVE_COLLECTIVE("{collective name}, {commitment}")` to a Root origin | ||
referendum. The proposer should provide instructions for generating `commitment`. The passing of | ||
this referendum would be unequivocal direction to the Fellowship that this collective should be | ||
part of the Polkadot runtime. | ||
|
||
Note: There is no need for a `REJECT` referendum. Proposals that have not been approved are simply | ||
not included in the runtime. | ||
|
||
### Removing Collectives | ||
|
||
If someone believes that an existing collective is not acting in the interest of the network or in | ||
accordance with its charter, they should likewise have a means to instruct the Fellowship to | ||
_remove_ that collective from Polkadot. | ||
|
||
An on-chain remark from the Root origin with the text | ||
`REMOVE_COLLECTIVE("{collective name}, {para ID}, [{pallet indices}]")` would instruct the | ||
Fellowship to remove the collective via the listed pallet indices on `paraId`. Should someone want | ||
to construct such a remark, they should have a reasonable expectation that a member of the | ||
Fellowship would help them identify the pallet indices associated with a given collective, whether | ||
or not the Fellowship member agrees with removal. | ||
|
||
Collective removal may also come with other governance calls, for example voiding any scheduled | ||
Treasury spends that would fund the given collective. | ||
|
||
## Drawbacks | ||
|
||
Passing a Root origin referendum is slow. However, given the network's investment (in terms of code | ||
maintenance and salaries) in a new collective, this is an appropriate step. | ||
|
||
## Testing, Security, and Privacy | ||
|
||
No impacts. | ||
|
||
## Performance, Ergonomics, and Compatibility | ||
|
||
Generally all new collectives will be in the Collectives parachain. Thus, performance impacts | ||
should strictly be limited to this parachain and not affect others. As the majority of logic for | ||
collectives is generalized and reusable, we expect most collectives to be instances of similar | ||
subsets of modules. That is, new collectives should generally be compatible with UIs and other | ||
services that provide collective-related functionality, with little modifications to support new | ||
ones. | ||
|
||
## Prior Art and References | ||
|
||
The launch of the Technical Fellowship, see the | ||
[initial forum post](https://forum.polkadot.network/t/calling-polkadot-core-developers/506). | ||
|
||
## Unresolved Questions | ||
|
||
None at this time. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Who is expected to work on introducing an approved collective to the runtime/code base?
Should we clarify it in this RFC?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not exact but similar to: #2 (comment)
If the Fellowship is being paid by the network and they agree to a process to signal network desire for some code in a runtime that is within the Fellowship GitHub org, then someone in the Fellowship should take responsibility to make sure it gets done. The PR will need approval from high-ranking Fellows even if someone outside the Fellowship implements it.