- Draft — A CIP that is currently open for consideration and actively being discussed.
- Awaiting Decision — A mature and ready CIP that is ready for final deliberation by the CIP Core Team. After a review, a vote will take place that will set the CIP's intended Final Comment Period(FCP) disposition (FCP: Acceptance/Rejection) or go back into a Draft state.
- FCP: [Acceptance/Rejection] — A CIP that has entered a Final Comment Period (FCP) with an intended disposition. After review, during which any new concerns should be addressed, the CIP will head towards its intended disposition [Acceptance/Rejection] or go back into a Draft state.
- Accepted — A CIP that has been accepted on the merits of its idea pre-implementation, and is ready for implementation. It is still possible that the CIP may be rejected post-implementation due to the issues that may arise during an initial implementation.
- Implemented - A CIP that has been implemented with the protocol version specified in the CIP. It will graduate to Final when it has passed all tests and released in a new version.
- Final — A CIP that has been released in the new protocol version. A final CIP should only be updated to correct errata.
- Rejected - A CIP that has been formally rejected by the CIP Core Team, and will not be implemented.
- Superseded: [New Final CIP] - A CIP that which was previously final but has been superseded by a new, final CIP. Both CIPs should reference each other.
The Calimero Network, like most open source softwares in the world, continues to evolve over time to meet the needs of our network's participants and to drive technology forward into new territory. Given the importance of the reliability and safety of the network, we ask that all of those who have ideas towards pushing Calimero Network's protocol development forward adhere to the following:
- Consider your idea and how it serves the fundamental goals of the Calimero Network and aligns with values of the Calimero Network Protocol (which are listed below). If you cannot show how your proposal aligns with those goals and values, it's unlikely to ever be implemented.
- Gather feedback from discussions, and utilize it to begin a draft proposal, otherwise known as a CIP (Calimero Improvement Proposal).
- Follow the proposal process listed below.
-
The Calimero Network should be secure and reliable, and should bias towards safety, simplicity, reliability, and performance over new functionality.
-
The Calimero Network should run at scale and at low cost to all participants of the network.
- The networks deployed on Calimero are fully decentralized and managed by the network participants.
- All actions inside the Self-Sovereign Apps are verified using identity off-chain signatures on the client device to ensure validity.
- The peer interactions inside the Self-Sovereign Apps are encrypted and protected from any unauthorized third parties.
- The data is stored on the user's device and all state transitions are applied locally ensuring data ownership.
Introduce your idea on the GitHub Discussions
- Make sure to gather feedback and alternative ideas — it's useful before putting together a formal draft!
- Consider contacting experts in a particular area for feedback while you're hashing out the details.
Draft a formal proposal using the CIP Template, and submit a PR to this repository. You should make sure to adhere to the following:
- Make sure to place the draft in the
core/
folder. - Your CIP should be named
cip-TBD-title.md
- If your CIP requires images or other supporting files, they should be included
in a sub-directory of the
contents
folder for that CIP, such ascontents/cip-TBD/
. Links should be relative, for example a link to an image from your CIP would be../contents/cip-TBD/image.png
.
Finally, submit a PR of your draft via your fork of this repository.
- Use
TBD
for the protocol version. Don't assign a protocol version to the CIP — this will be established once the CIP has reached the state of Final and has been formally implemented.
From there, the following process will happen.
If you properly followed the steps above, your PR will get merged.
The CIP and associated files will get renamed based on the latest CIP draft number before merging.
As your idea gets traction, you'll need to assemble a working group as to increase the chances of success that this CIP proceeds through the stages.
For more information on this, review the working group section of the CIP template.
You should continue the discussion of the draft CIP with an attempt at reaching consensus.
When opening PRs to modify the draft:
- changes have to either be submitted by one of the authors (Recommender or Owner) or signed off by the authors
- avoid discussions in the PR itself as it makes it more difficult for future
contributors to understand the rational for changes.
- best is to always discuss in GitHub Discussions.
- alternatively, a recap of the discussion that happened in the PR could be posted in the GitHub Discussions (but it's easy to forget to do this).
When your CIP receives sufficient feedback from the community, you'll need to present it to a subset of the CIP Core Team for review.
For that, when you're ready, you should submit a PR changing the status in the
draft to Awaiting Decision
.
The CIP will be scheduled to be discussed at a protocol meeting. As the owner of the CIP, you will be invited to share your CIP and participate in discussion during the meeting.
You may invite any other members of your working group.
The protocol meetings will be used to decide on next step:
- If the CIP has received support and general consensus, it is moved to
Awaiting Decision
; - If the CIP requires some adjustments or needs to receive more feedback from the community, the meeting is adjourned ;
- If for any reason the CIP gets abandoned, it gets a status of
Rejected
.
- A vote will take place among the CIP Core Team.
- A unanimous approval from the CIP Core Team will put the CIP in a
FCP: Accepted
status. - Otherwise, the CIP will be given feedback and head towards a
FCP: Rejected
status (if the majority of the CIP raises concerns) or aDraft
status (if only a minority of the CIP raises concerns).
- A unanimous approval from the CIP Core Team will put the CIP in a
- After a discussions during Final Comment Period (FCP) where any major concerns
that have not been previously addressed can be brought up, the CIP will head
to its final disposition.
- Concerns will be addressed on a case by case basis, and only major concerns
that were not addressed earlier will move the CIP back to a
Draft
state.
- Concerns will be addressed on a case by case basis, and only major concerns
that were not addressed earlier will move the CIP back to a
Calimero Network will prioritize accepted CIPs among its priorities for a given year. However, if you want to ensure your CIP is implemented in a timely manner, it is likely best for you to attempt to implement it yourself.
Once a CIP is implemented, a PR should be submitted to update its status to Implementation Review, along with the protocol version when will it be released if applicable.
From here the proposal is brought up again before the protocol group for additional comment, where it is possible that the proposal is rejected based on the issues that arise from its implementation. If no issues arise, it will move to Implemented by a CIP team member.
Once an implemented CIP has been released in a specified version, the CIP should be updated with the protocol version that the implementation targets. From there, it will move to Final.