You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@rocketmq.apache.org by Xiao Zongyang <xi...@qq.com> on 2018/08/09 08:04:16 UTC

[DISCUSS] Introduce RocketMQ Improvement Proposal

Dear Apache RocketMQ Community


When we want the Apache RocketMQ project we propose an ISSUE with feature request on Github. It's a nice way for request but not very formal and easy to trace and manage. So I suggest that we should introduce the RIP(RocketMQ Improvement Proposal) mechanism to replace current Feature Request Process.


So here are some key issues we need to discuss and make consensus.

What is RIP? Why we need RIP?

the Process and Status of a RIP

How do we cooperate in RIP way to request or offer a feature?

Should we provide a RIP template? What is the RIP template?



The answers to above questions are included in my draft, so let's make these document better.


The illustration and template of RIP are now available on Google Doc, links are:

 RocketMQ Improvement Proposals

 RIP Template

Comments, suggestions and editing are welcome!


Since Google Doc service is not accessible in China mainland, the content of these two document would be quoted below:

RocketMQ Improvement Proposals


RocketMQ Improvement Proposals

What is a RIP?

This page describes a proposed RocketMQ Improvement Proposal(RIP) for proposing a major change to Apache RocketMQ, which is similar to a product requirement document commonly used in product management.


RIPs should be used for significant user-facing or cross-cutting changes, not small incremental improvements. When in doubt, if a committer thinks a change needs an RIP, it does.

RIP Process & Status

Process


Propose a RIP



DISCUSS



VOTE



Implement



Review & PR


Status


Write a proposal => Proposed



Start a discussion on mailing list with all the community members => Discuss



Start a Voting process in the community after discussing => Vote



Reach an agreement in the community and start implementing => Implementing



The Pull Request about this proposal is merged => Implemented



The community decide to discard this proposal after voting => Discard


RIP Way

Role

Any community member can take part in discussing about whether a RIP meets their needs, and propose a RIP.

Contributors can help by discussing and suggesting the technical details about a RIP, including but not limited to design, implementation, testing and document.

RIP Authors are community members proposing a RIP and committed to pushing the change through the entire process.

RIP Shepherd is a PMC member who is committed to shepherding the proposed change throughout the entire process. The shepherd is ultimately responsible for the success or failure of the RIP. Responsibilities of the shepherd include, but not limited to:


Be the advocate for the proposed change



Help push forward on design and achieve consensus among key stakeholders



Get feedback from users and iterate on the design, implementation, testing and document



Verify the changes and uphold the quality of the changes



Cooperation


A RIP must apply to the RIP template, see this example for more details.



All discussion should take place on public mailing list



Mails and documents should be archived once process of RIP completed




RIP Template:

RIP Template

Status


Current State: {Proposed, Discussing, Voting, Implementing, Implemented, Discard}



Authors: [author](github_link),[author](github_link),...



Shepherd: [author](github_link)



Mailing List discussion: <apache mailing list archive>



Pull Request: #PR_NUMBER



Released: <relased_version>


Background & Motivation

What do we need to do


Will we add a new module?



Will we add new APIs?



Will we add new feature?


Why should we do that


Are there any problems of our current project?



What can we benefit proposed changes?


Goals


What problem is this proposal designed to solve?



To what degree should we solve the problem?


Non-Goals


What problem is this proposal NOT designed to solve?



Are there any limits of this proposal?


Changes

Interface


Method signature changes



    method name



    parameter list



    return value



Method behavior changes



CLI command changes



Log format or content changes



 Compatibility, Deprecation, and Migration Plan



Are backward and forward compatibility taken into consideration?



Are there deprecated APIs?



How do we do migration?



Proposed Implementation Outline

We will implement the proposed changes by n phases. 

Phase 1


do xxx



do yyy



do zzz


Phase 2


do xxx



do yyy



do zzz 



...

Phase n



do xxx



do yyy



do zzz 


Rejected Alternatives 

How does alternatives solve the issue you proposed?

Pros and Cons of alternatives

Why should we reject above alternatives

----
Best Regards
Zongyang

Re: [DISCUSS] Introduce RocketMQ Improvement Proposal

Posted by Xiao Zongyang <xi...@qq.com>.
Sorry for adding wrong receivers! I'm sorry for disturbing you guys.


Zongyang

Re: [DISCUSS] Introduce RocketMQ Improvement Proposal

Posted by Xiao Zongyang <xi...@qq.com>.
Sorry for adding wrong receivers! I'm sorry for disturbing you guys.


Zongyang