CNCF項目超過了十億行代碼:與DevStats創造者Łukasz Gryglicki的問答

你們中的一些人可能不知道CNCF社區有一個非常有價值的報告工具–DevStats。

CNCF從2017年開始開發DevStats,為Kubernetes社區提供關於Kubernetes如何應對幾乎前所未有的增長的及時和相關的見解。今天,它已經發展到包含所有CNCF項目,並且由於它是開源的,幾乎可以為任何項目或指標定製。

除了跟蹤統計數據以度量所有託管項目的健康狀況外,我們還在編譯年度和項目旅程報告時使用DevStats。

在度量DevStats的過程中,我們剛剛遇到了一個不可思議的里程碑–所有CNCF項目加起來已經超過了10億行代碼。沒錯,10億!

為了紀念這一成就,我們坐下來與DevStats創造者Łukasz Gryglicki了解更多的關於工具、它的歷史、以及我們的社區如何從中受益。

CNCF:DevStats是什麼?

Łukasz Gryglicki:DevStats是一個服務,從git和GitHub獲取數據,然後將它轉變成圖表報告社區活動。這是CNCF資助的項目,也是對所有CNCF支持的項目提供的服務。它使用Grafana儀錶板組織和顯示項目數據。我們把它放在一些強大的服務器上,這些服務器是由Packet慷慨捐贈的。

它的工作方式是下載幾PB的數據,這些數據代表了過去6年GitHub上的每一個公開行為,除了CNCF託管的1400多個倉庫之外,它幾乎把所有的數據都扔掉了。它處理數據並將其存儲在Postgres數據庫中,並且每小時下載更新的數據。

DevStats現在(大約9個月前)是一個Kubernetes原生應用程序,並使用許多其他CNCF項目,包括Helm、containerd、CoreDNS等。DevStats是一個完全開源的項目。它還使用Linux基金會項目,包括Linux(Ubuntu)和Let's Encrypt,以及Red Hat的Patroni來支持在Kubernetes上運行Postgres數據庫。

DevStats還允許用戶跟蹤自定義指標,而不僅僅是PR問題或提交。它有許多非標準儀錶板,例如分析bot活動、公司所屬關係、貢獻者位置、時區映射、性別、編程語言、許可類型等等。

問:DevStats是如何產生的?

LG:CNCF執行董事Dan Kohn提出了DevStats的初始架構,並聘請我來實施它。我們之前曾在一家醫療創業公司Spreemo共事。我的第一個實現是使用Ruby,但是當我在Go中重新實現時,我能夠利用並發性獲得20倍的性能改進。

我們在2017年創建了DevStats,作為Kubernetes社區度量開發人員和社區數據的一種方式。它是為Kubernetes指導委員會和SIG-Contributor Experience而創建的,他們需要一個工具來對社區中正在發生的事情進行深入的分析和理解。隨着Kubernetes成為僅次於Linux的第二大開源社區,他們也在尋找一種方法來控制這樣一個快速增長的項目的開發。他們需要一個能夠理解他們工作流程的工具(比如bot命令,以及特定於Kubernetes的倉庫標籤)。最大的需求之一是允許對歷史數據進行分析,以顯示趨勢是如何演變的。

我們首先在2018年歐洲KubeCon + CloudNativeCon哥本哈根大會上介紹了這個項目。然後,為了支持更好的擴展和更多的資源需求,它被轉移到Kubernetes。它成為了一個完整的Kubernetes應用程序外觀的範例,符合所有在2019年歐洲KubeCon + CloudNativeCon巴塞羅那大會上提出的最佳實踐。現在,DevStats涵蓋了所有CNCF項目、一些Linux基金會項目(比如Linux和Zephyr)、GraphQL基金會、CDF(持續交付基金會)、Core Infrastructure Initiative等等。

CNCF:CNCF項目跨越10億行代碼是一個令人印象深刻的里程碑!我們是如何走到今天這一步的?這意味着什麼?

LG:這對CNCF來說是一個巨大的里程碑。首先,這意味着CNCF和它的項目都在以令人難以置信的速度增長。當你想到「谷歌Chrome有670萬行代碼,而據報道微軟Windows 10操作系統有5000萬行代碼」這個事實時,10億行代碼似乎更讓人印象深刻。隨着項目從沙箱和孵化階段發展到畢業階段,它們會逐漸成長,並變得更加堅固為企業所用。DevStats儀錶板按項目顯示代碼行數。

CNCF:關於DevStats,還有什麼是社區應該知道的嗎?

LG:DevStats是開源的–任何人都可以使用它並為自己的項目部署自己的實例。我們通過在DevStats倉庫中創建特性請求來定期添加新的儀錶板,因此,如果你需要為你的項目創建一個特殊的儀錶板,請提交一個特性請求,我們將為你檢查儀錶板!

CNCF:還有什麼令人興奮的新功能嗎?

LG:最近,我們根據TOC和項目維護者的反饋,迭代了一個項目狀態儀錶板的幾個修改版本。

我們還在為DevStats創建RESTful API。這意味着人們將能夠編寫自己的工具,並且有一個DevStats API服務器可以在他們的工具請求上返回數據。例如,他們可以編寫一些東西來查詢他們每天的項目使用情況,DevStats將以JSON的形式返回這些數據。

Łukasz Gryglicki自2017年以來CNCF高級開發人員。在加入CNCF之前,Łukasz為美國公司(包括Cleverstep、Jamis、以及Spreemo Health)遠程工作。