Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

To create your own CIP, click on 

Create from template
blueprintModuleCompleteKeycom.adaptavist.confluence.contentFormattingMacros:cfm-blueprint
contentBlueprintId548ee77a-d08c-48ae-83b6-2df3b4ab49bc
templateName548ee77a-d08c-48ae-83b6-2df3b4ab49bc
createResultview
titleCIP-NEXT: Insert Title Here
buttonLabelCreate CIP
. If you don't have permission, please send an email with your Wiki ID to dev@cassandra.apache.org and request permission. Also add an entry to the table CIPs under discussionWIP – Design Proposals – Cassandra Improvement Proposals (CIP).

Table of Contents

Purpose

The purpose of an CIP is to inform and involve the user community in major improvements to the Cassandra codebase throughout the development process, to increase the likelihood that user needs and compatibility are met. It is similar to a product requirement document commonly used in product management.

...

This process also isn't meant to discourage incompatible changes — proposing an incompatible change is totally legitimate. Sometimes we will have made a mistake and the best path forward is a clean break that cleans things up and gives us a good foundation going forward. Rather this is intended to avoid accidentally introducing half thought-out interfaces and protocols that cause needless heartburn when changed. Likewise the definition of "compatible" is itself squishy: small details like which errors are thrown when are clearly part of the contract but may need to change in some circumstances, likewise performance isn't part of the public contract but dramatic changes may break use cases. So we just need to use good judgement about how big the impact of an incompatibility will be and how big the payoff is.

What is considered a "major change" that needs a CIP?

Any of the following should be considered a major change:

...

For the most part monitoring, command line tool changes, and configs are added with new features so these can be done with a single CIP.

What should be included in a CIP?

A CIP should contain the following sections:

  • Motivation: The problem to be solved.
  • Audience: The intended client audience. Examples include data scientists, data engineers, library devs, devops, etc. A single CIP can have multiple target personas. 
  • Goals: What must this allow users to do, that they can't currently.
  • Non-Goals: What problem(s) is this proposal not designed to solve.
  • Proposed Change: The new thing you want to do. This may be fairly extensive and have large subsections of its own. Or it may be a few sentences, depending on the scope of the change.
  • New or Changed Public Interfaces: Impact to any of the "compatibility commitments" described above. We want to call these out in particular so everyone thinks about them.
  • Migration Plan and Compatibility: If this feature requires additional support for a no-downtime upgrade describe how that will work.
  • Rejected Alternatives: What are the other alternatives you considered and why are they worse? The goal of this section is to help people understand why this is the best solution now, and also to prevent churn in the future when old alternatives are reconsidered.

Who should initiate the CIP?

Anyone can initiate a CIP but you shouldn't do it unless you have an intention and know-how of getting the work done to implement it.

...

  • Be the advocate for the proposed change
  • Help push forward on design and achieve consensus among key stakeholders
  • Review code changes, making sure the change follows project standards
  • Get feedback from users and iterate on the design & implementation
  • Uphold the quality of the changes, including verifying whether the changes satisfy the goal of the CIP and are absent of critical bugs before releasing them

Process

Here is the process for making a KIP:

  1. Click 
    Create from template
    blueprintModuleCompleteKeycom.adaptavist.confluence.contentFormattingMacros:cfm-blueprint
    contentBlueprintId548ee77a-d08c-48ae-83b6-2df3b4ab49bc
    templateName548ee77a-d08c-48ae-83b6-2df3b4ab49bc
    createResultview
    titleCIP-NEXT: Insert Title Here
    buttonLabelCreate CIP
    . Take the next available CIP number and give your proposal a descriptive heading. e.g. "CIP 1: Proposing an Apache Cassandra Management process".
  2. Fill in the sections as described above
  3. Start a [DISCUSS] thread on the Apache mailing list. Please ensure that the subject of the thread is of the format [DISCUSS] CIP-{your CIP number} {your CIP heading} The discussion should happen on the mailing list not on the wiki since the wiki comment system doesn't work well for larger discussions. In the process of the discussion you may update the proposal. You should let people know the changes you are making. When you feel you have a finalized proposal 
  4. Once the proposal is finalized call a [VOTE] to have the proposal adopted. These proposals are more serious than code changes and more serious even than release votes. The criteria for acceptance is lazy consensus (3 binding +1 votes and no binding vetoes). The vote should remain open for 72 hours.
  5. Please update the CIP wiki page, and the index below, to reflect the current stage of the CIP after a vote. This acts as the permanent record indicating the result of the CIP (e.g., Accepted or Rejected). Also report the result of the CIP vote to the voting thread on the mailing list so the conclusion is clear.

CIP round-up

Next CIP Number: 2

Use this number as the identifier for your KIP and increment this value.


Adopted CIPs

CIP

Release



CIPs under discussion

CIPComment
CIP-1: Proposing an Apache Cassandra Management process

Sent emails to Dev discussion group.
Work tracked under CASSANDRA-14395.

Dormant/inactive CIPs

CIPComment


Discarded CIPs

CIPComment