-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PROCESS] Proposal for a new process roll out protocol changes via RFCs #2594
Comments
Should we link to that PR here, e.g.
|
@tdas @ryan-johnson-databricks - great initiative coming up with a more formal process how features make it into the protocol as well as the implementations - this will strengthen the community quite a bit I believe. Given that the Kernel implementations are still in a raw state, I think it is good to require "just" some implementation and a feasibility discussion on a kernel implementation. However going forward since the kernels may be considered reference implementations of the protocol, would it maybe make sense that there is an implementation in at least one kernel or that there is at least a committment form someone to add it such that the community (of connectors) can immediately start to benefit once a feature has landed? |
That's a good point. And yes, once the kernels have stabilized (so that adding a new feature doesn't require adding missing pieces of kernel implementation first), it does seem like RFC acceptance should be contingent on a working kernel implementation of the feature. |
The first version of the proposal, I had put down kernel implementation as
a requirement, but then iterated to soften it up given the current Kernel
state. So I completely agree that when at least one of the Kernel
implementations mature, we should consider making that a stronger
requirement.
…On Mon, Feb 5, 2024 at 4:26 PM Ryan Johnson ***@***.***> wrote:
That's a good point. And yes, once the kernels have stabilized (so that
adding a new feature doesn't require adding missing pieces of kernel
implementation first), RFC acceptance should be contingent on a working
kernel implementation of the feature.
—
Reply to this email directly, view it on GitHub
<#2594 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFB5LBUNLTNSU65ZU2BJBTYSFFAZAVCNFSM6AAAAABCVMEDRGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRYGEZDEOJUG4>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
This process is now enforced. Closing this issue. |
Motivation
Whenever we design and propose a protocol change, (e.g., a new table feature), we go through a preview / experimental phase during which the details of the protocol can undergo changes. Until the protocol change is completely tested and finalized, it cannot be guaranteed that the tables created with the preview feature will be forward compatible with any Delta reader/writer. However, today, this "preview phase" is not properly communicated as we directly merge any new proposal into the final protocol doc without proper annotation about its "preview" nature. This has led to a number of issues in the past. For example: CheckpointV2 was released in Delta 3.0, and immediately after that it was reported that certain details of the implemented protocol are different from the documented protocol. We had to update the protocol doc after the implementation and tables generated by that implementation were released in the wild.
New RFC Process Proposal
To avoid confusions like this, let us have a RFC process that clearly separates features in preview from finalized features with future compatibility guarantees. The proposed process is as follows.
RFC structure
Location: All preview protocol changes will be located in a new directory
<delta_repo_root>/protocol_rfcs/
. Contents of the directory will be as follows:In the directory, each proposed change will be stored in a markdown file named
<table_feature_name>.md
(or some other meaningful name that makes it easy to identify).The directory will have index.md that will contain the list of current and past RFCs along with their status -
opened on <date>, accepted on <date>, rejected on <date>
.Template of an RFC doc: Each doc must be in markdown format. Contents of the markdown:
Title: Name of the protocol change / table feature
Link to the Github issue with additional context and discussions
New or existing sections of the final protocol doc that need to be modified
Steps of rolling out a protocol change
1. Make initial proposal
Create a Github issue of type [Protocol Change Request].
If the proposal comes with a prototype or other pathfinding, the changes should be in an open PR.
2. Add the RFC doc
After creating the issue and discussing with the community, if a basic consensus is reached that this feature should be implemented, then create a PR to add the protocol RFC before merging code in master.
Changes related to the feature should only merge after the RFC is accepted. In addition, for table features, it is strongly recommended that any experimental support for the feature uses a temporary feature name with a suffix like
-dev
. This will communicate to the users that are about to use experimental feature with no future compatibility guarantee.3. Finally, accept RFC into the protocol
For a RFC to be accepted, it must satisfy the following criteria:
When the success criteria are met, then the protocol can be finalized by making a PR to make the following changes:
accepted
subdirectory, and update the state in index.md-dev
in the table feature name from all the code.3'. Alternative: reject the RFC
If the RFC is to be rejected, then make a PR to do the following changes:
rejected
subdirectoryNext steps to formalize this process
Please leave your feedback and questions as comments. I will keep updating the proposal based on them. Thanks in advance.
The text was updated successfully, but these errors were encountered: