Skip to content

Latest commit

 

History

History
194 lines (144 loc) · 8.25 KB

README.md

File metadata and controls

194 lines (144 loc) · 8.25 KB

Calimero Improvement Proposals (CIPs)

CIP Status Terms

Primary Workflow

  • 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.

Additional Statuses

  • 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.

Contribution Process

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.

Calimero Network Goals

  • 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.

CIP Process

Pre-CIP (Initial Discussion)

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.

Creating a CIP Draft

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 as contents/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.

Additional Tips

  • 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.

Draft: Merging & Further Iteration

From there, the following process will happen.

CIP PR -> merged

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.

Assembling a working group

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.

Iterating on the CIP

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).

Draft -> Awaiting Decision

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.

Awaiting Decision -> Final Comment Period (FCP)

  • 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 a Draft status (if only a minority of the CIP raises concerns).

FCP -> Accepted/Rejected

  • 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.

CIP Implementation

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.

CIP Finalization

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.