Versions Compared

Key

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

...

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

Purpose

We want to make Flink a core architectural component for users. We also support a large number of integrations with other tools, systems, and clients. Keeping this kind of usage health requires a high level of compatibility between releases — core architectural elements can't break compatibility or shift functionality from release to release. As a result each new major feature or public api has to be done in a way that we can stick with it going forward.

...

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 FLIP?

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

What should be included in a FLIP?

A FLIP 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.

Who should initiate the FLIP?

Anyone can initiate a FLIP but you shouldn't do it unless you have an intention of getting the work done to implement it (otherwise it is silly).

Process

Here is the process for making a FLIP:

  1. Create a page which is a child of this one. Take the next available FLIP number and give your proposal a descriptive heading. e.g. "FLIP 42: Enable Flink Streaming Jobs to stop gracefully".
  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] FLIP-{your FLIP number} {your FLIP 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 majority.
  5. Please update the FLIP wiki page, and the index below, to reflect the current stage of the FLIP after a vote. This acts as the permanent record indicating the result of the FLIP (e.g., Accepted or Rejected). Also report the result of the FLIP vote to the voting thread on the mailing list so the conclusion is clear.

FLIP round-up

Next FLIP Number: 12

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

Adopted but unreleased FLIPs

FLIP

...

Target ReleaseLink to Discussion Thread
LINK-TO-FLIP (including number and name)  

FLIPs under discussion

FLIPStateLink to Discussion Thread
FLIP-1 : Fine grained recovery from task failuresProposedDesign Document https://docs.google.com/document/d/16S584XFzkfFu3MOfVCE0rHZ_JJgQrQuw9SXpanoMiMo
Date (link to recording)Summary
Date+Link to Recodring
  •  

Adopted FLIPs

Release
FLIP
LINK-TO-FLIP (including number and name)  

 

Implemented and Released FLIPs

...

FLIPFirst Release VersionStateComment
LINK-TO-FLIP (including number and name)  

Discarded FLIPs

FLIPComment
LINK-TO-FLIP (including number and name)