Swoole 2019 :化繁爲簡、破繭成蝶

Swoole開源項目從2012年開始發佈第一個版本,到如今已經有近7年的歷史。在這七年的時間裏:git

  • 提交了8821次代碼變動
  • 發佈了287個版本
  • 收到並解決1161issue反饋
  • 合併了603pull request
  • 共有100位開發者貢獻代碼
  • GitHub收穫了11940顆星

貢獻者

協程

2018年咱們推出了全新的Swoole4版本,在此以前Swoole主要的編程方式仍是同步阻塞模式或異步回調。新的基於協程實現的CSP編程逐漸成爲咱們惟一推薦使用的編程模式。協程將紛繁複雜異步編程大大簡化。使用Swoole4協程,既簡單又強大。在將來的Swoole5版本,咱們計劃刪除非協程的相關特性和代碼,減小歷史包袱,提高穩定性,下降複雜度,減小沒必要要的選項,純粹協程化。 github

過去6年咱們的團隊主要以兼職開發爲主,團隊成員大多來自於騰訊、阿里、滴滴、百度、360、小米等國內一線互聯網企業,還有一部分是國外的PHP開發者,甚至PHP語言ZendVM內核做者Dmitry Stogov也曾向Swoole貢獻了代碼。除此以外,咱們還招募了一些在校大學生爲Swoole編寫代碼,逐步培養年輕一代開發者。編程

20187月份咱們組建了全職開發團隊,專一於Swoole內核以及Swoole Cloud雲原生組件和生態鏈的開發。告別過去的草莽班子,轉變爲專業化的開源技術研發團隊。swoole

咱們的目標是讓Swoole項目成爲Node.jsGo這樣的工業級技術,成爲PHP編程語言的在異步IO和網絡通訊方面的基石。網絡

研發管理

成立全職研發團隊後,咱們逐漸創建了很是完善的研發管理體系,提高Swoole的軟件質量。主要包括如下幾個方面:框架

測試驅動(TDD)

如今咱們投入大量精力實現單元測試腳本、壓測腳本、自動化測試,提高單元測試覆蓋率。目前已有680項測試用例,17項壓測項目,在Travis-CI平臺能夠看到每一次CommitPull Request的編譯、測試結果。異步

研發工做也基於TDD進行,在開發新特性、重構、Bug Fix時,會先編寫對應的單元測試腳本,測試覆蓋到代碼變動的全部場景。編程語言

單元測試

代碼審查(Code Review)

團隊成員之間進行代碼交叉審查、互相Code Review,對於代碼變動的細節進行充分的評估和討論。異步編程

重大變動,會進行團隊Review,花費數小時甚至數天討論每一行代碼變動細節。工具

RFC 機制

對於非Bug Fix、非性能提高、非重構,新特性或有可能改變底層行爲的變動,咱們會分爲4個步驟進行。

  1. 發起RFC的提案,https://github.com/swoole/rfc...,提案內容會詳細闡述此項變動的來龍去脈、相關配置項、影響的範圍、使用方法、示例。
  2. 提案討論,咱們會對提案進行充分的討論,刨根問底,分析優劣,推敲細節。全部問題均討論清楚後,最終立項,開始實現。
  3. 開發負責人建立git分支,編寫單元測試腳本,編寫代碼,實現提案中的全部內容,最終發起Pull Request
  4. 交叉評審,檢查代碼,提出改進意見,反饋給開發負責人,繼續完善細節。最終合併到主幹。

整個過程均是在GitHub平臺公開進行的,對Swoole項目感興趣的PHPer都可參與。

Swoole RFC

灰度測試

爲了保證正式版本的穩定性,咱們在發佈前會在內部項目上進行灰度測試,檢驗新版本的穩定性。

另外咱們與大部分Swoole框架做者創建了聯繫,新版本會先發給各大框架的做者提早試用。有重大底層變動、或不兼容項會提早與其餘Swoole之上的開源項目做者進行溝通。

總結

在過去的幾年,Swoole項目作的並非很專業,存在較多BUG和難用的地方,也讓不少使用者踩到了很多坑。最近半年成立全職研發團隊後,咱們在研發管理方面進步飛快,Swoole的穩定性、成熟度方面已今非昔比。穩定性始終是第一位的,咱們在將來將會更加謹慎、嚴謹,保證質量。

重構

2018年下半年咱們對底層的代碼進行了屢次重構,在代碼結構、可讀性、複用性、封裝度方面進行了不少優化。使得Swoole軟件更爲簡潔、優雅。

編程語言方面,咱們如今逐漸使用C++替代C語言。C++提供的面向對象、智能指針、容器、模板等特性可以幫助咱們進一步提高團隊的開發效率。

在此也歡迎各位PHPer參與Swoole項目,貢獻代碼。

文檔

Swoole的文檔也是廣爲開發者詬病的一個方面。在2018年咱們團隊在文檔方面逐漸加大投入。從新編寫梳理文檔,加入豐富的例子程序,加入更詳細的配圖,修復細節問題,刪除帶有感情色彩的語句,更加客觀中立嚴謹。

2019 將來

新的一年咱們主要有3個方向上發力。

作減法

刪除非協程的特性,刪除沒必要要的模塊,減小歷史包袱,提高穩定性、下降複雜度,減小沒必要要的選項,化繁爲簡,更簡單。

Swoole內核層面仍然會繼續不斷重構、精簡,減小代碼行數,清理冗餘代碼,儘量地實現代碼複用。

深刻項目

2018年末,咱們已經開始逐漸與在生產環境上大量使用Swoole的企業創建聯繫,包括騰訊雲閱文好將來陌陌優信等企業。瞭解實際應用場景、業務模式,進行深度交流合做,提供建議,幫助企業技術團隊更好的解決業務問題,接受反饋改進底層。

生態鏈

2019年咱們會基於Swoole4協程開發一些配套的工具和組件,彌補PHPCloud Native時代生態鏈方面的不足。

相關文章
相關標籤/搜索