破劍式!RocketMQ 社區行為規約2.0發布!

2021-02-19 RocketMQ官微

混亂的Commit Messages

好的commit記錄應該包含某些上下文信息,我們可以從commit message中獲取到該commit具體做了什麼工作,並且能利用git指令快速跟蹤相關的問題。但是觀察如下commit記錄(取自RocketMQ 最新的commit記錄)


7e756882 [ISSUE 1931] Remove duplicated doAfterRpcHooks logic7953c4f5 [ISSUE 2044] Fix DefaultLitePullConsumerImpl NPE (49a722f4 Merge pull request 2064 from wcc526/master70da3e01 Merge branch 'develop' into mastera2aa6c18 Fix Fastjson version for RCE pull reuqestoblem3f37c851 [ISSUE 1988] Fix the issue that can not update messageDelay correctly with mqadmin updateBrokerConfig commandb3ec283c Merge pull request 2043 from wqliang/selectNamesrv67b8a2aa Add @Override for RMQOrderListener.java (f12cc81e Init english version of the READMEcf20a26c Fix typo in READMEecdeb1b4 Merge pull request 2039 from lebron374/comment_fix_v141ce16bb Merge pull request 2040 from lebron374/npe_fix_v14feb8cae npe fixfae6825f comment fix


1. 許多Commit Messages沒有明確表明代碼修改的內容,我們需要猜測其幹了什麼。2. 一些commit記錄沒有關聯Github上的issue,因此很難從某一個Commit Message跟蹤到具體的issue和pull request。3. Commit Messages 格式不統一。可以看出當前的Commit Messages 比較混亂,我們需要一些約定來幫助 Commit Messages變得清晰而整齊,從而幫助開發者更好的跟蹤問題,明確版本迭代過程中的優化情況。不清晰的issue列表和pull request列表與Commit Messages相同,當前Github上的issue和pull reuqest也較為混亂,主要表現以下幾個方面:1. 雖然RocketMQ社區規約1.0中已經定義標籤的類型,但實際操作過程中,Issue和pull reuqest標籤仍然混亂,比如milestones標籤一些打在issue上,一些打在pull reuqest上。2. 命名混亂,雖然RocketMQ 社區行為規範1.0已經規定了pull reuqest命名方式,但一些開發者並沒有按照要求的格式提交,issue和pull reuqest標題沒有表達出清晰的目的,且出現了中英文混雜的情況。需要進一步明確規約來獲取一個清晰的issue和pull reuqest列表,使開發者能從issue和pull request列表 明確issue 和 pull request的類型和內容,使社區健康發展。Committer在合併pull reuqest時出現一些不規範的操作,比如隨意合併,合併pull reuqest到master分支,自己提交的pull reuqest自己合併等情況。我們需要一種規範來解決這些問題,保證社區的每一個pull reuqest都是經過嚴格審定的,來維護項目健康發展。當有清晰的commit記錄以及清晰issue、pull reuqest列表後,可以幫助Release Manager更好的明確版本迭代之間發生的變化,不需要太多修改就能快速編寫Release Notes。

目標

RIP-14 RocketMQ社區行為規約2.0的目標包括清晰的issue列表和pull request列表Release Manager 能快速編寫清晰簡潔的Release Notes

Contributor行為規約

Commit Message包含對提交記錄的簡潔描述,包括類型、可選範圍(模塊)和簡單描述。Commit Message格式:<type>(<scope>): <body><tpye>: 描述commit更改屬於什麼類型,可選的類型包括:<scope>:作用域,表示commit更改所屬的模塊。例如log, remoting, rpc, client, console, plugin, storage等,如果沒有更合適的範圍,你可以用 *。<body>: 對Commit更改簡短的描述,需要注意以下幾點:使用動賓結構,注意使用現在時,比如使用change 而非 changed 或 changesfeat(client): simplify pull consumer implementation
refactor(*): polish 'No route info of this topic' exceptiondocs(guide): update the developer guidePull reuqest命名格式:[ISSUE #{issue number}] body需要注意ISSUE和其數字編號之間需要有一個空格,方括號與body之間也需要有空格,body的首字母大寫。[ISSUE #2085] Support graceful shutdown for push consumer[ISSUE #1879] GroupTransferService may be blocked by ResponseCallback in SYNC_MASTER modeenhancement、test、code style、documnet、new feature類型的pull request儘量用動賓結構。比如[ISSUE #2088] Optimize RocketMQ client's stats of RT to make sense.[ISSUE #2007] Upgrade fastjson version to prevent serious security problems.[ISSUE #1976] Improve the security of the system topic operation.[ISSUE #1689] Add interfaces to remove unused statsItem in BrokerStatsManager class.Bug類型的pull request 可以直接描述bug的內容,避免寫長句(定語從句)[ISSUE #1901] Fix the issue that creates reply message fail when using request/reply mode.[ISSUE #1906] Fix the issue that booleanConstantExpression might lead to class loading deadlock.[ISSUE #1901] Create reply messages fail when using request/reply mode.[ISSUE #1906] BooleanConstantExpression might lead to class loading deadlock.

Committer行為規約

在RocketMQ 社區規約1.0中,我們初步規定Label的種類。而在規約2.0中,我們將進一步規定打標的方式。
我們需要給每個issue打標籤,一般一個issue需要有兩類標籤,包括code-style,包括單詞拼寫錯誤,方法、變量命名優化,代碼格式優化等。rip,RocketMQ improvement proposal注意:打類型標籤不要濫用enhancement,比如包括文檔優化、代碼格式優化等都打enhancement。Issue不打mailstones標籤。Pull reuqest只打mailstones標籤,由committer來確定該pull reuqest在哪一版本被合併。一般new feature是在大版本被合併。PMC成員可以根據pull reuqest緊急程度打 urgent標籤,urgent標籤只在該pull reuqest需要被緊急修復的情況下使用。document、code style、test類型 :一個committer(或核心contributor)appull reuqestovebug類型:不涉及store,remoting, common,兩個committer(或核心contributor)appull reuqestove, 涉及store,remoting,三個committer(或核心contributor) appull reuqestove。enhancement類型:兩個committer(或核心contributor) appull reuqestove,會導致兼容性問題的需要三個committer appull reuqestove。new feature、RIP:需要四個以上committer(或核心contributor)同意。

注意:有效票數不包含pull reuqest發起人自己,嚴禁自己提交pull reuqest自己進行合併。

Merge合併方式


Github提供了committer三種合併方式: Create a merge commit, Squash and merge以及Rebase and merge,如下圖所示

三種合併方式會形成如下Commit Messages可以看到Create a merge commit容易丟失作者信息,Rebase and merge問題在於如果pull reuqest提交者有多個無用的commit記錄,都會被合併到主幹上,並且格式很難規範。因此強制必須都使用 Squash and merge 進行合併,並且Commit標題名必須為pull reuqest名,需要注意的是當提交者的pull reuqest只提交一個commit記錄的情況下,Github上默認命名為commit message,此時需要幫助用戶改為pull reuqest命名,若用戶pull reuqest命名不規範,也需要幫助用戶將pull reuqest命名進行規範。合併前注意pull reuqest合併的目標分支必須為develop,不要合併到master分支。若pull reuqest目標分支有錯,可以通知提交者對target branch進行修改,或者幫助提交者切換分支。

Release Manager行為規約

Release Notes 原則上通過pull reuqest的milestones標籤能篩選出來(最好與commit記錄做一個校對,以防有漏掉milestones的pull reuqest),利用pull reuqest標題(或者commit記錄)就能編寫具體release notes entry,根據pull reuqest關聯issue的label情況能對release note entry進行具體分類,包括五大類:new feature、bug、enhancement、test、document and code style。

郵件列表:

https://lists.apache.org/thread.html/rb957c90bb93e736fcf8248efe76f55501416a6f005a61ef0fbbb4f1b%40%3Cusers.rocketmq.apache.org%3E

Google文檔:

https://docs.google.com/document/d/1fo_Z4_nUOyykkmQOE2kEmxcLwhhFiQENQwQiy852XUM/edit#heading=h.nwczedg8v2na

相關焦點

  • Apache RocketMQ 4.4.0 發布 - OSCHINA - 中文開源技術交流社區
    萬眾期待的 4.4.0 版本終於在昨天成功發布,值得關注的新特性包括權限控制(ACL)和消息軌跡(Msg Trace)。
  • 雲原生時代 RocketMQ 運維管控的利器 - RocketMQ Operator
    作者 | 劉睿、杜恆導讀:RocketMQ Operator 現已加入 OperatorHub,正式進入 Operator 社區。本文將從實踐出發,結合案例來說明,如何通過 RocketMQ Operator 在 Kubernetes 上快速搭建一個 RocketMQ 集群,並提供一些 RocketMQ 集群管理功能包括 Broker 擴容等。
  • 在CentOS7上安裝RocketMQ 4.7.1
    -4.7.1-bin-release.zip  # 解壓  unzip rocketmq-all-4.7.1-bin-release.zip  # 安裝到/usr/local/rocketmq  mv rocketmq-all-4.7.1-bin-release /usr/local  ln -s /usr/local/rocketmq-all-4.7.1-bin-release /usr/local/rocketmq
  • docker-4:mac使用docker部署開發用rocketmq
    目錄:(1).mac本地docker化rocketmq(2).mac本地docker化rocketmq-console(3).測試(1).mac本地docker化rocketmq現在官方rocketmq-docker:git clone https://github.com/apache/rocketmq-docker
  • Apache RocketMQ 4.8.0 發布,升級 DLedger 模式
    Apache RocketMQ 4.8.0 已發布。發布公告顯示,在此版本中,社區對 RocketMQ 完成大量的優化和問題修復。
  • 想了解Kafka,RabbitMQ,ZeroMQ,RocketMQ,ActiveMQ之間的差異?這一篇文章就夠了!
    rabbitmq:比較大zeromq:極大rocketmq:大rocketMQ接收端可以批量消費消息,可以配置每次消費的消息數,但是發送端不是批量發送。activemq:比較大Kafka:基於topic以及按照topic進行正則匹配的發布訂閱模式。
  • 《阿里巴巴Java開發規約》插件全球首發!
    經過247天的持續研發,阿里巴巴於10月14日在杭州雲棲大會上,正式發布眾所期待的《阿里巴巴Java開發規約》掃描插件!插件全球首發儀式,大牛雲集阿里巴巴大牛天團傾力助陣:畢玄、玄難、索尼、葉渡,淘寶代碼第一人多隆、代碼規約作者孤盡攜手規約項目組成員,以及業界規約生態代表等重磅大咖聯合發布阿里巴巴代碼規約插件!
  • 想了解 Kafka, RabbitMQ, ZeroMQ, RocketMQ, ActiveMQ 之間的差異?這一篇文章就夠了!
    rabbitmq:比較大zeromq:極大rocketmq:大rocketMQ接收端可以批量消費消息,可以配置每次消費的消息數,但是發送端不是批量發送。activemq:比較大Kafka:基於topic以及按照topic進行正則匹配的發布訂閱模式。
  • 有關中國傳統的禮俗規約你知道多少?
    (2)禮與俗的區別與聯繫區別:俗是民眾自發形成的行為習慣,具有紛繁的複雜性特點;禮是自上而下的一套社會 行為規範,其中貫穿著特定的整合社會的理念。禮具有規整、嚴密、適於操作的特點。聯繫:因俗制禮:禮與俗有著密不可分的關係。在文化混沌未分時,不存在俗與禮的區別; 伴隨著階級分化、文化分層的過程,禮逐漸從原始習俗中提純出來。
  • RocketMQ CPP客戶端更新至1.2.0,兼容多語言、簡化項目編譯流程
    RocketMQ CPP客戶端是RocketMQ的C/C++客戶端,與1.0.1版本相比,1.2.0版本的發布是一個巨大的進步。
  • TensorFlow 2.0凌晨發布!「改變一切,力壓PyTorch」
    官方對此也心知肚明,因此在今早發布的博客中寫道:」TensorFlow 2.0由用戶社區推動,告訴我們他們想要一個易於使用、靈活又強大的平臺,並且支持部署到任何地方。「那麼TF2.0有什麼改進?/tag/v2.0.0這還有一段官方介紹視頻:「改變一切,力壓PyTorch」TensorFlow 2.0發布之後,引發了廣泛的討論和關注。
  • pacebox(原名 hmtool)1.0.0 發布
    希望有志同道合的朋友一起維護該軟體、打造一款快速應用開發級生態框架,基礎封裝包 pacebox-core                無第三方封裝工具(已發布) pacebox-kakfa                kafka封裝(已發布) pacebox-elasticsearch
  • Google發布Chrome瀏覽器2.0正式版
    距離Google發布首款Chrome瀏覽器已有8個月的時間,在這段時間內,Chrome進行了大量的更新,2.0版本也早已從今年年初開始進行Beta測試。今天,Google終於發布了Chrome V2.0的首個正式版本。Chrome 2.0正式版版本號為v2.0.172.28,實際上比目前最新的測試版版本號低不少。
  • 愛悠開放平臺發布智能家居2.0系統 定製化解決方案推動產業落地
    日前,愛悠智慧生活開放平臺對外發布核心子應用——愛悠智能家居2.0系統,它通過超級APP和超級網關,實現不同通訊協議、不同品牌設備間的互聯互通。智能家居發展至今存在很多問題,如用戶粘性不足、場景單一、落地艱難,因此愛悠智能家居2.0系統本著從雲平臺、網管、APP、終端、服務全開放的原則,一方面為新風、暖通、遮陽等傳統行業提供產品定製化智能升級服務,將智能升級後的產品納入智能家居2.0系統,不斷豐富互聯、互通的全場景生態;另一方面,基於智能家居2.0系統的產品豐富性和可定製性,無論是運營商、地產商還是社區物業、養老、家裝機構,都能在愛悠智能家居
  • 華為鴻蒙2.0手機版發布時間及流程確定
    終於等到了,華為鴻蒙2.0系統手機版要來了,華為鴻蒙2.0系統在9月的時候發布,而華為鴻蒙2.0系統手機開發者beta活動將會於12月16日在北京柏悅酒店舉辦。
  • Adjust發布全球應用營銷數據基準工具2.0
    新增點擊率、每點擊成本(CPC)及作弊類型分布在內五項營銷指標 第三季度數據顯示,89%的用戶在應用安裝後一周流失,提升用戶體驗是關鍵 舊金山和柏林2018年11月13日電 /美通社/ -- 全球領先的移動監測和防作弊公司Adjust今日宣布,旗下提供的Adjust全球應用營銷數據基準工具已全面升級至2.0
  • 【官方發布】一圖看懂TensorFlow 2.0新架構
    而TensorFlow 2.0作為一個重要的裡程碑,將更加關注其「易用性」,更注重使用的低門檻,旨在讓每個人都能應用機器學習技術。那麼在架構方面,又會有何不同呢?話不多說,來看下新架構圖:TensorFlow 2.0帶來了一些新增功能,允許研究人員和高級用戶進行實驗,使用豐富的擴展,如Ragged Tensors,TensorFlow Probability,Tensor2Tensor等。
  • RocketMQ消息軌跡-設計篇
    自定義Topic在創建消息生產者或消息消費者時,可以通過參數自定義用於記錄消息軌跡的Topic名稱,不過要注意的是,rokcetmq控制臺(rocketmq-console)中只支持配置一個消息軌跡Topic,故自定義Topic,在目前這個階段或許還不是一個最佳實踐,建議使用系統默認的Topic即可。
  • 卓越巧問教育發布幼小銜接白皮書2.0,深度探究幼小銜接行業趨勢
    2019年10月26日,在近400位海內外行業專家、幼教從業者與權威媒體的共同見證下,卓越巧問教育再次聯合亞洲幼教年會發布《2019中國幼小銜接行業調研白皮書》(下簡稱白皮書2.0),並與現場的行業同仁分享優秀教育成果,深度探討新形勢下幼小銜接的機遇和挑戰。
  • 綠康時間銀行2.0正式發布
    6月18日,由杭州市民政局、中國社會福利基金會、中國社會福利與養老服務協會指導,綠康醫養集團主辦,杭州綠康時間銀行助老公益服務中心、杭州綠康醫養孝文化傳播有限公司承辦,志願匯平臺協辦的綠康時間銀行2.0發布暨「時間銀行6.18公益日」啟動儀式在杭州國際博覽中心隆重舉行。