關注你所關注的 - Golang社區調研報告

Golang語言可以說現在炙手可熱,大家熟悉的Kubernates 就是使用Golang開發的。
我們在最近於倫敦和聖地亞哥舉行的GopherCon大會上調查了1000多名開發者,以更好地瞭解Go 開發社區和對Go Module的總體看法。隨着最近發佈的Go 1.13版本,現在是向社區分享一些有趣數據的好時機。

BTW, 在JFrog,我們也是Go開發者(JFrog CLI和Xray都是用Go編寫的)。 同時也是GoLang社區的貢獻者, 併爲社區維護貢獻了公共註冊中心 Gocenter(goproxy) https://gocenter.io/. 加速Golang語言開發人員構建速度。

以下是我們學到的一些關鍵的東西:

Go開發人員是高度投入的
絕大多數的Go開發者都在使用最新版本的GoLang。超過70%的受訪者表示使用的是最新版本的Go 1.12。
同樣值得注意的是,超過82%的Golang開發者使用的是1.11或更新的版本,因此能夠使用Go Module。只有一小部分報告使用了Go的早期版本。
關注你所關注的 - Golang社區調研報告

幾乎同樣多的使用最新版本的Go開發人員也報告在他們的組織中採用了Go Module。也有相當多的人希望儘快使用Go Module,這樣到2020年中期,其使用率將上升到至少80%,並可能接近100%。
關注你所關注的 - Golang社區調研報告

GoLang被廣泛應用於各個行業
雖然Go開發應用於廣泛的計算領域,但DevOps僅排在Web開發之後,有近五分之一的報告稱他們使用Go來實現這些目的。系統、數據庫和網絡應用程序的得分也很高,這表明在移動和嵌入式設備等有前途的領域還有很大的增長空間。
關注你所關注的 - Golang社區調研報告

選擇Go Module很難
當開發人員選擇開源組件時,他們傾向於追求安全性和質量。但在如何判斷 Go Module的風險方面,幾乎沒有共識。
大多數報告顯示人們偏好用他人使用最多的包,以及流行度所帶來的保證。同時安全漏洞也是一個問題,開發人員如何確定一個包的風險在各種各樣的條件下是不同的,如內網環境和外網環境同一個漏洞的處理可能是不一樣的。
關注你所關注的 - Golang社區調研報告

如何更好更快的選擇Go Module
由於開發人員在選擇越來越多的Go模塊時遇到了困難,GoCenter通過交互搜索幫助用戶發現。一旦你有了結果,GoCenter會提供你需要的所有信息來決定哪些模塊最適合你的需求,包括活動和星級。我們也正在開發一個系統,根據選擇的標準來給模塊打分,這將更好的幫助Golang開發人員更快的選擇到合適的模塊。
關注你所關注的 - Golang社區調研報告

GoCenter
我們感謝所有對我們GoLang調查做出迴應的開發者。我們從中獲得的信息將幫助我們幫助您,特別是在我們繼續使GoCenter成爲幫助採用Go Module的有用工具的情況下。

如果您還沒有聽說過GoCenter,那麼它提供了不可變的、版本化的模塊的中心源,這些模塊直接從公共源存儲庫中的Go項目進行處理和驗證。在衆多好處中,使用GoCenter可以加快GoLang應用程序的構建時間。

GoCenter現在託管了超過260,000個版本化的Go Module,這些模塊可以免費提供給Go開發者社區。

GoCenter與Golang 1.13的最佳實踐

  1. 使用Gocenter 作爲Goproxy
    在Golang 1.13中,Go Module的支持在默認情況下是啓用的。儘管Go客戶端的新安裝會自動設置一個默認的google託管代理,在國內你可以覆蓋它並使用你選擇的Go Module代理,比如GoCenter。

要使用GoCenter作爲版本化go模塊的代理,請將GOPROXY環境變量設置爲GoCenter URL:
關注你所關注的 - Golang社區調研報告

Golang 1.13中的新特性允許您在GOPROXY中指定由逗號分隔的多個代理,以及直接從源代碼下載模塊的Direct 模式(這種模式的場景是goproxy中沒有對應模塊或版本是會返回404)。但是GoCenter目前支持了自動包含特性,意味着您在使用GoCenter進行代理時不需要使用這些Direct模式,當gocenter中目前沒有緩存對用組件時,會自動觸發到源碼庫中自動拉取對應組件以及版本。
https://github.com/jfrog/gocenter/blob/master/releases.md#2019-march-27-enhanced-automatic-inclusion-of-go-modules

  1. 校驗和(checksum)數據庫支持
    從Golang的1.13版開始,go get通過谷歌在sum.golang.org上維護的一個可審計的校驗和數據庫來執行模塊的身份驗證。版本1.13會使用GOSUMDB環境變量中默認設置這個校驗和的DB URL。
    GoCenter已經通過代理sum.golang.org幫助我們加速構建。如果你的GOPROXY設置爲GoCenter,你不需要改變任何東西-你已經通過GoCenter驗證你的模塊了!

  2. 私有Go Module 倉庫
    GoCenter用於代理通過公共源存儲庫(如Github)共享的Go Module。Golang 1.13還引入了一些環境變量,特別是GOPRIVATE,用於繞過代理和校驗和驗證,從私有存儲庫下載模塊版本, 此場景比較適合企業內部有大量自研發Go Module。您可以在Golang文檔中瞭解如何使用它們。

  3. 版本驗證
    在1.13版本中,爲Go Module使用正確的後綴非常重要。go命令現在對請求的版本字符串執行額外的驗證,如果模塊不符合語義導入版本控制,go get將失敗。因此,在Golang 1.13之前加載的模塊的僞版本(pseudo version)可能會失敗。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章