title: Ozone Enhancement Proposals summary: Definition of the process to share new technical proposals with the Ozone community. date: 2019-06-07 jira: HDDS-1659 status: current
Some of the biggers features requires well defined plans before the implementation. Until now it was managed by uploading PDF design docs to selected JIRA. There are multiple problems with the current practice.
We propose to follow the same process what we have now, but instead of uploading a PDF to the JIRA, create a PR to merge the proposal document to the documentation project.
HDDS-*
but with specific component)hadoop-hdds/docs/content/proposal
(will be part of the docs)This the proposed template to document any proposal. It's recommended but not required the use exactly the some structure. Some proposal may require different structure, but we need the following information.
Give a one sentence summary, like the jira title. It will be displayed on the documentation page. Should be enough to understand
What is the problem and how would you solve it? Think about an abstract of a paper: one paragraph overview. Why will the world better with this change?
Very important to define what is outside of the scope of this proposal
Explain the problem in more details. How can it be reproduced? What is the current solution? What is the limitation of the current solution?
How the new proposed solution would solve the problem? Architectural design.
Implementation details. What should be changed in the code. Is it a huge change? Do we need to change wire protocol? Backward compatibility?
What are the other alternatives you considered and why do yoy prefer the proposed solution 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.
Note: In some cases 4/5 can be combined. For example if you have multiple proposals, the first version may include multiple solutions. At the end ot the discussion we can move the alternatives to 5. and explain why the community is decided to use the selected option.
Planning to implement the feature. Estimated size of the work? Do we need feature branch? Any migration plan, dependency? If it's not a big new feature it can be one sentence or optional.
There are similar process in other open source projects. This document and the template is inspired by the following projects:
Short summary if the porcesses:
Kafka process:
Spark process:
Kubernetes: