This page describes the Celeborn Improvement Proposal (CIP) process for proposing a major change to Celeborn.

To create your own CIP, click on "Create" on the header and choose "CIP-Template" other than "Blank page".

  • Purpose
  • What is considered a "major change" that needs a CIP?
  • What should be included in a CIP?
  • Process
  • Additional Information

Purpose

The purpose of CIPs is to have a central place to collect and document planned major enhancements to Apache Celeborn. While JIRA is still the tool to track tasks, bugs, and progress, the CIPs give an accessible high level overview of the result of design discussions and proposals. Think of CIPs as collections of major design documents for user-relevant changes.

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

Any of the following should be considered a major change:

  • Any major new feature, subsystem, or piece of functionality
  • Any change that impacts the public interfaces of the project

What are the "public interfaces" of the project?

All of the following are public interfaces that people build around:

  • Protocol between services
  • Storage formats 
  • Configuration settings
  • Exposed monitoring information

What should be included in a CIP?

A CIP should contain the following sections:

  • Motivation: describe the problem to be solved
  • Proposed Change: describe 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.

Process

Here is the process for making a CIP:

  1. Take the next available CIP number (below) and create a design document using google docs, filling in the sections as described above.
  2. Start a [DISCUSS] thread on the dev@celeborn.apache.org 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. In the process of the discussion you may update the proposal. You should let people know the changes you are making.
  3. Once the proposal is finalized call a [VOTE] to have the proposal adopted, the vote should be open for at least 72 hours, Requires at least 3 +1 votes from PMC members and no -1 votes from PMC members.
  4. Once an agreement is reached, report the result of the CIP vote to the voting thread on the mailing list so the conclusion is clear.
  5. Celeborn PMC members/committers are responsible for updating the CIP wiki page to reflect the current stage of the CIP following a vote, as well as incrementing the CIP number for documentation purposes.

Next CIP Number: 8

Additional Information

  • CIP is not necessarily the final solution, and the final solution and details may change with code review. We should try our best to update CIP and vote again.

  • Not all code changes must wait for CIP to vote complete. If there is no response from CIP thread, you can also start contributing code. However, please note that before starting to commit code, please notify in the CIP discussion thread. If anyone is -1, please reach an agreement in a timely manner.


  • No labels