從 0 到 1:Apache APISIX 的 Apache 之路

2019 年 12 月 14 日,又拍雲聯合 Apache APISIX 社區舉辦 API 網關與高性能服務最佳實踐丨Open Talk 廣州站活動,本次活動,邀請了來自Apache APISIX、又拍雲、騰訊雲、HelloTalk 等企業的技術專家,分享網關和高性能服務的實戰經驗。Apache APISIX PPMC 溫銘作了題爲《Apache APISIX 的 Apache 之路》的分享。html

溫銘,深圳支流科技創始人,Apache APISIX PPMC,《OpenResty 從入門到實戰》專欄做者,創業以前在互聯網安全公司工做了 10 年,主要從事服務端的開發和架構,負責開發過木馬雲查殺、反釣魚系統和企業安全產品。曾在奇虎 360 擔任架構師,開源委員會發起人、委員。支流科技是一家開源底層技術初創公司,致力於微服務相關技術的創新和實現。安全

如下是分享全文:微信

Apache APISIX 是一個很年輕的項目,今年 6 月份開源,7 月份加入到 CNCF 全景圖,10 月份進入 Apache 孵化器,因此我會和你們分享一下 APISIX 是如何從 0 到 1,進入 Apache 孵化器的。架構

Apache APISIX 如今有 17 個 committer,分別來自 16 家不一樣的公司,是一個很是社區化的項目。每一個 committer 有一票,決定版本的發佈、選舉新的 committer 和 PPMC 等比較重大的事情。微服務

Apache Way

Apache Way 是你們都比較熟悉的概念:社區大於代碼。爛代碼能夠改,Apache 的導師並不會指導你怎麼寫出更高水平的代碼,他們更關心的是社區是否在健康的發展,只要有一個好的社區,爛代碼必定會有更高水平的人進行重構,變成更好的代碼。因此只要社區在,那這個項目就可以一直存活下去,這在 Apache 是最重要的。性能

郵件列表優先是另外一個重要的點,沒有在郵件列表中出現過的,就當作不存在。這在中國實際上是一個很是大的挑戰,你們在文化上和習慣上都不太喜歡用郵件:第一是時間不夠及時,可能發一封郵件後隔 1-2 天才能收到回覆;第二是郵件列表的不少東西是公開的,有些人喜歡私聊;第三郵件列表裏面只能出現英文,但其實中國人的英文是不差的,咱們比大部分其餘國家的人的英語已經好不少了,畢竟咱們學了不少年英語,還有各類翻譯的軟件,即便出現語法錯誤,都不是大問題。翻譯

第三是精英治理,在 Apache 社區中你們用貢獻來得到更多的話語權,更高的 title 意味着更多的付出和責任。視頻

第四是民主,全部人均可以參與 Apache 的投票,即便你不在 Apache 社區,但不是全部人的票都是有效的。好比 APISIX 當時進 Apache 孵化器的時候須要投票,我也能夠投支持票,但後面要寫 no binding,表示我支持並關注這個項目,但我是一個觀察員的身份,但這一票對於項目可否進 Apache 是沒有決定性的。只有對孵化器作了貢獻並獲得社區承認的人,即 Apache 孵化器的 PMC,他們的票纔是有效的,這就是 Apache 社區的民主。htm

開源社區的治理模式

咱們知道不少開源項目有一些是在基金會下面,有一些則不是。在基金會下面的項目,好比 Linux 基金會、Apache 基金會,他們的治理模式叫作「社區共識」,須要先在社區內討論,在達成一個共識後進行投票,而非直接投票。若是直接投票,沒有前面的討論和共識,那這個投票是沒有意義的。這個效率可能會很慢,但只有整個社區達成共識,後面纔沒有異議。項目管理

第二種是商業公司共識,只要商業公司的人達成共識,那麼這個 PR 或者 feature 就能夠被合併,而社區的人說話是沒有用的,由於它是被商業公司控制的一個項目,而若是你給商業公司貢獻代碼,可否被合併決定權在商業公司手裏。這對於我的開發者可能無所謂,可是對於參與項目的企業則是有所謂的,一般企業會有私有版本,企業想把本身的 feature 貢獻回社區,但商業公司可能由於這個東西和本身的商業版本衝突,就會拒絕掉。

第三種是仁慈的獨裁者,最典型的就是 Python,我的決定着開源項目的發展。

上述是開源社區的三種模式,若是是企業選擇項目,通常的咱們會推薦 Apache、Linux 基金會的項目,它首先在法律上是沒有隱患的,其次它是一個社區共識,咱們能夠經過向社區貢獻這種方式得到更多的話語權,這樣就造成了一個良性的循環。

如何進入 Apache 孵化器

Apache 如今有接近 50 個孵化器的項目,其中來自中國的有 10 個,APISIX 是如今國內惟一一個由創業公司進入 Apache 的項目,其餘不少是來自華爲、阿里、百度等大公司的項目。

一個項目要想進入 Apache 孵化器,須要明白如下名詞和步驟:

  • Champion:他是你項目的引薦人,這是你首先要去聯繫到的最重要的角色,他須要熟悉你以及這個項目。
  • Mentor:項目的導師,在項目進入 Apache 孵化器以後,Champion 就轉換成導師的角色,一個項目至少須要 1 個 Champion,2 個 Mentor,因此至少須要找到 3 個合適的人選。Mentor 會指導項目怎麼從孵化器裏邊的一個項目,一步一步地成長爲 Apache 的頂級項目,這其中包括髮布 Apache 版本、品牌管理、壯大社區等。若是變成了頂級項目,那麼這個項目之後就是社區自治了。
  • Proposal:找到 Champion 和 Mentor 以後,下一步須要寫一個 Proposal,即一個提案,介紹我是誰,解決了什麼問題,爲何要加入 Apache,項目如今的代碼文件有沒有和 Apache license 衝突的地方,初始的 committer 有哪些人、來自哪些公司,有沒有什麼潛在的風險,後面要如何發展等。
  • Discuss:接着會發起一個討論的郵件,看有多少人對這個感興趣,這個階段也能夠找到一些有興趣的 PMC 來加入 Mentor 指導項目。
  • Vote:最後是投票,投票經過,項目就能夠進入 Apache 孵化器了。

Apache Way 和國內開源文化的衝突
國內的 Apache 項目會遇到不少不同的挑戰,這和國內外的開源環境和文化有關係。

好比國內的工程師會以爲太忙,常常 996 加班,因此沒有時間和精力去作開源。但其實很多工程師在工做中也會使用到開源項目,寫過開源項目的 feature,可是他們並不會主動提交 PR,也不會在寫代碼以前在社區內發起討論,這就是不少文化上不一樣的地方。

溝通方式上,Apache 提倡的是在郵件列表中公開討論,可是國內的不少開發者更喜歡微信、QQ、電話等非公開的方式來溝通。特別是若是一個項目的 PPMC 大都來自同一家公司,那麼可能開早會的時候就把一個功能敲定了,但在郵件列表裏也沒有出現,這就不符合 Apache 的文化。

關於投票,不少開發者可能以爲本身英語很差或者人微言輕,不太願意在郵件列表中發表本身的意見,也不參與投票,那麼最終他就會被忽略掉。因此你須要積累一些」功績「,去幫助別人,慢慢地增長本身的影響力。Apache 是一個由我的組成的基金會,每一個人的行爲都只表明本身,不表明公司,每一個PMC 的一票都是對等的。

關於 Title,在 Apache 裏,最高的職位叫作 Apache 基金會主席,每一個項目的管理者是 VP,而後是 PMC(項目管理員會)、 Committer、 Contributor ,他有一個相似於咱們企業內職稱晉級的通道。可是在 Apache裏,即便你的職位變得很高,也並不意味着擁有更多的投票權,更多的是義務,好比對於 Apache APISIX 選舉新的 committer 的投票而言,孵化器主席的票和個人票是同樣的。Title 在 Apache 裏面更多的是一種榮譽,由於 Apache 基金會是一個非營利組織,它強調的是貢獻,這就是文化上的衝突。

版權問題

版權是一個很是重要的問題,前段時間發生的 Nginx 做者被抓就是由於版權問題。一個項目在正式加入 Apache 孵化器以前,全部 committer 和公司都要簽署 CLA,說明將這個項目的版權,所有捐給 Apache 基金會。加入 Apache 孵化器以後,最重要的里程碑就是發佈第一個 Apache 的 Release,這個版本就是要理清 license 上的風險,讓用戶能夠放心的使用。因此,商業公司使用 Apache 的項目是有保障的,不會涉及到版權不清晰的問題。

最後,Apache APISIX 是一個正在快速發展的開源項目,但願你們多多參與和貢獻,多謝。

演講PPT下載及視頻觀看:

基於 Apache APISIX 的下一代微服務架構

相關文章
相關標籤/搜索