摘要:像 godoc.org 一樣 ,pkg.go.dev 也提供 Go 文檔。同時,go.dev 還提供了一個 Go 軟件包和模塊的新信息資源中心:pkg.go.dev,而在此之前,Go 已經存在了一個包資源網站:godoc.org。

北京時間 2019 年 11 月 14 日凌晨 1 點 16 分,Go 官方團隊在 golang-nuts 郵件組宣佈 go.dev 上線,這是一個新的 Go 開發人員中心。具體的介紹可以看我之前發佈的文章 大家用Go都做什麼?Go官方新發布的 Go.Dev 告訴你 。同時,go.dev 還提供了一個 Go 軟件包和模塊的新信息資源中心:pkg.go.dev,而在此之前,Go 已經存在了一個包資源網站:godoc.org。2020 年 1 月 31 日,在 Go 官方博客又發佈了一篇博文,關於 pkg.go.dev 接下來要做的事情,一時間社區討論激烈,很多人不解。官方(Russ)對此也進行了解釋。本文就官方的博文和 Google 郵件組上的相關內容進行整理總結,分享給大家。

一、官方博文 《Next steps for pkg.go.dev》快速解讀

  1. 將 godoc.org 請求重定向到 pkg.go.dev,並向社區開發者徵求反饋意見
  2. 回答了開發者比較關心的幾個問題:
    • 在遷移過程中,如果 package 沒有顯示在 pkg.go.dev 上,可以通過從 proxy.golang.org 獲取對應版本的 module 來添加;
    • 開發者的package突然出現不明的許可證限制 ,不要慌,後面會優化證書檢測算法;
    • pkg.go.dev 是否會開源?很多公司想搭建自己的代碼文檔中心,目前這個需求在徵求意見可填官方的調查問卷:https://google.qualtrics.com/jfe/form/SV_6FHmaLveae6d8Bn

以下是全文:

介紹

在 2019 年,我們官方啓動了 go.dev ,這是 Go 開發人員新的資源中心。

作爲該站點的一部分,我們還啓動了 pkg.go.dev ,它是有關 Go 軟件包和模塊的信息資源中心。像 godoc.org 一樣 ,pkg.go.dev 也提供 Go 文檔。然而,它還了解 module,並提供有關軟件包以前版本的信息!

今年開始,我們將在 pkg.go.dev 中添加新的更多功能,以幫助我們的用戶更好地瞭解他們的依賴關係,並幫助他們圍繞要導入的庫做出更好的決策。

將 godoc.org 請求重定向到 pkg.go.dev

爲了減少在過渡的過程中對用戶的打擾,我們計劃在今年晚些時候將流量從 godoc.org 重定向到 pkg.go.dev 上。同時我們需要您的及時意見反饋,以確保 pkg.go.dev 能夠滿足我們所有用戶的需求。我們鼓勵大家從今天開始使用pkg.go.dev,並提供反饋。

您的反饋將爲我們的過渡計劃提供信息,目的是使 pkg.go.dev 成爲包和模塊的主要信息和文檔來源。我們確定您想在pkg.go.dev上看到一些內容,並且希望您收到有關這些功能的信息!

您可以通過以下渠道與我們分享您的反饋意見:

  • 在 Go 問題跟蹤器上發佈 (https://golang.org/s/discovery-feedback);
  • 發郵件:[email protected]
  • 通過 go.dev 底部的 “Share Feedback” 或 “Report an Issue”;

作爲過渡的一部分,我們還將討論對 pkg.go.dev 進行 API 訪問的計劃 。我們將在 Go issue 33654 (https://golang.org/s/discovery-updates) 上發佈更新 。

問答

自 11 月推出以來,我們已經收到 Go 用戶關於 pkg.go.dev 的大量反饋 。對於本文的剩下部分,我們將回答一些常見問題,希望對大家有幫助。

1. 我的 package 未顯示在 pkg.go.dev 上,該怎麼做?

我們會定期監控 Go Module Index 以查找要添加到 pkg.go.dev 的新包。如果在 pkg.go.dev 上沒有找到某個包,則可以通過從 proxy.golang.org 獲取模塊版本來添加它 。有關說明,請參見 https://go.dev/about

2. 我的 package 有許可證限制。它會是什麼問題?

我們知道,無法在 pkg.go.dev 上完整地看到您想要的 package,這是一個令人沮喪的經歷。感謝您在我們改進許可證檢測算法過程中的耐心配合。

自 2019 年 11 月推出以來,我們進行了以下改進:

  • 更新了我們的許可政策(https://pkg.go.dev/license-policy),裏面包括了我們檢測和識別的許可列表;
  • 與許可證檢查(https://github.com/google/licensecheck)團隊合作,改善對版權聲明的檢測;
  • 建立了特殊情況的手動審覈流程;

與往常一樣,我們的許可政策位於 https://pkg.go.dev/license-policy 。如果您遇到問題,請隨時在 Go 問題跟蹤器上提交問題 (https://golang.org/x/discovery-feedback),或發送電子郵件至 [email protected], 以便我們直接與您合作!

3. pkg.go.dev 會開源嗎,以便可以在我的私人庫上運行它?

我們知道,擁有私有代碼庫的公司希望運行提供模塊支持的文檔服務器。我們希望幫助滿足這一需求,但是我們目前還沒有深入的瞭解這個需求痛點。

我們從用戶那裏聽說,運行 godoc.org 服務器比實際上要複雜得多,因爲它是爲在 Internet 範圍而不是僅在公司內部提供服務而設計的。我們認爲當前的 pkg.go.dev 服務將出現相同的問題。

我們認爲使用新的服務都能夠提供私有代碼部署,而不是讓每家公司都面臨運行在公網上面。而且除了提供文檔之外,新服務器還可以爲 goimports 和 gopls 提供幫助 。

如果要運行這樣的服務,請填一個 3-5 分鐘的調查( https://google.qualtrics.com/jfe/form/SV_6FHmaLveae6d8Bn ),以幫助我們更好地瞭解您的需求。該調查將持續到 2020 年 3 月1日。(polaris 建議: 國內用戶可以反饋反饋關於大陸訪問不到或慢的問題 。)

最後,我們對 2020 年 pkg.go.dev 的未來感到興奮,希望廣大開發者也一樣!我們期待聽到您的反饋,並希望與 Go 社區在該遷移中緊密合作。

原文地址:https://blog.golang.org/pkg.go.dev-2020

二、Go 團隊核心成員 RSC(Russ)在郵件組的回覆

以下是他郵件回覆內容的整理:

這封郵件有點長,但我希望它能解決大部分討論。如果您覺得缺少任何東西,請回復,我很高興繼續討論。

go.dev 出現的背景

過去一年左右的時間裏,我們開始瞭解的一件事是,下一波 Go 採用者中的許多人都希望擁有一個包含 Go 資源的“一站式”網站,包括如何入門,誰正在使用它,指向學習資源,軟件包文檔等的鏈接。新的 go.dev 就是該一站式網站。在宣佈它的博客中,我們將其稱爲 Go 開發人員的新中心

爲什麼 go.dev 不同於 golang.org?

我個人認爲,將兩者分開可以使 go.dev 包含更多社區內容。從歷史上看, golang.org 是權威地談論 Go 的地方:它具有語言規範,標準庫文檔,官方下載等。對我們一直很重要的一點是,不要將它與世界上所有其他 Go 內容混在一起。新站點似乎是爲其他資源創建更具包容性的場所的機會,因此是第二個站點。

godoc.org 出現的背景

Gary Burd 從 2012 年末開始創建並運行了 godoc.org 。它曾經是,現在仍然是一個絕妙的主意,並且顯然是對 Go 社區的寶貴服務。大約一年後,Gary 決定不再運行併爲服務器付費,因此將其交給 Go 項目採用。我們很樂意這樣做,以確保所有 Go 用戶仍然可以使用此資源。我們在 2014 年採用 godoc.org 時說過 (https://groups.google.com/g/golang-nuts/c/_rbVuzl-OqA/m/N_xoNaD4kAoJ),我再說一遍:我非常感謝 Gary 創作的作品。

爲什麼根本沒有新的軟件包文檔站點?爲什麼不就地更新 godoc.org?

通過引入模塊和包的多個版本的概念,我們知道必須更新 godoc.org 。經過一番努力,似乎值得重新開始,特別是因爲具有單 VM 數據庫的 godoc.org 服務器設計已經開始有點不合時宜了。除了模塊工作之外,我們還要解決其他問題,例如服務的可訪問性和整體可伸縮性。

As a side note, there’s almost nothing in the Go distribution that has survived eight years without being redone. The compiler, the assembler, the linker, the go command itself, most of the standard library: all of them have been massively overhauled one or more times since the start of Go. That’s how we take what we learn and make things better.

順便提一句,Go 發行版中幾乎沒有任何內容可以重做 8 年。編譯器,彙編器,鏈接器,go 命令本身,大多數標準庫:自 Go 以來,所有這些庫均已進行了一次或多次大修。這就是我們學習和改進事情的方式。

這種重寫總是涉及一個過渡時期,在這個過渡時期中,舊版本仍然是大多數人使用的主力軍,而新版本則爲早期採用者測試和發現錯誤提供了新名稱。

爲什麼在 pkg.go.dev 上有新的包文檔站點?

Docs for all the packages in the entire ecosystem are exactly the kind of community-generated content that go.dev is meant to help find, so pkg.go.dev seemed like a good name. Especially since go.dev has a much broader scope than godoc.org , it makes sense to take the opportunity to fold it in and reduce the number of sites a typical user has to be aware of (once the transition is complete).

整個生態系統中所有軟件包的文檔都是 go.dev ,旨在幫助查找社區產生的內容,因此 pkg.go.dev 似乎是個好名字。尤其是由於 go.dev 的範圍比 godoc.org 更爲廣泛,因此有機會抓住它並減少它是有意義的。典型用戶必須知道的站點數(一旦轉換完成)。

當 pkg.go.dev 不夠完善時,爲什麼要談論將 godoc.org 重定向到 pkg.go.dev?

直言不諱,以便您可以幫助我們瞭解發生了什麼問題,因此我們可以在重定向發生之前對其進行修復。我們知道一些事情,但是發現有些事情我們完全不知道也不會感到驚訝。最好是儘早發現而不是後來發現。同樣,該博客文章首先是請求反饋有關在實際執行重定向之前需要發生的情況。

爲什麼 pkg.go.dev 需要檢測到許可證才能顯示文檔?爲什麼沒有 godoc.org?

負責 pkg.go.dev 的團隊已經花了很多時間與 Google 的律師討論從互聯網下載 Go 源碼時我們可以做或不能做的事情。我們遵循的規則是,提供漂亮的 HTML 文檔版本會顯示原始文檔的修改版本,並且只有在獲得公認的已知良好許可證的情況下,我們才能這樣做。

When we adopted godoc.org from Gary Burd back in 2014, it did not occur to any of us to put it through that kind of review. If we had, maybe the community would have gone through this licensing pain earlier. For now we are focusing on making changes to pkg.go.dev rather than correcting past mistakes on godoc.org . (At this point, more scrutiny of what godoc.org does is not likely to have an outcome that anyone likes.)

當我們在 2014 年採用 Gary Burd 的 godoc.org 時,我們所有人都沒有想到要進行這種審查。如果有的話,也許社區會更早地經歷這種許可痛苦。目前,我們專注於對 pkg.go.dev 進行更改,而不是更正 godoc.org 上的錯誤。(在這一點上,對 godoc.org 所做的事情進行更嚴格的審查可能不會產生任何人喜歡的結果。)

pkg.go.dev 上不顯示那些熱門軟件包?

現在看來 pkg.go.dev 可以看到至少 100 個其他模塊導入的 1200 個模塊。其中,看起來 82 被標記爲不可再發行,因此我們無法顯示其文檔。低於 7%,我們正在努力更好地理解這一點。如果有任何是我們的錯誤,我們將予以解決。

Another thing that was suggested that I think is a great idea is to change the “no docs available” page to have a command-line to bring up the docs in your own local godoc command.

我認爲另一個好主意是建議更改 “無可用文檔” 頁面,以便使用命令行在您自己的本地 godoc 命令中顯示該文檔。

題外話:一般來說(不僅僅是關於 Go 的內容),你會驚訝於在某種元數據(GitHub meta,package.json,SPDX代碼等)中具有聲明的 “許可證類型” 但實際上沒有許可證文本的軟件包數量。這使得許可證無法遵守!例如,MIT 許可證要求“以上版權聲明和此許可聲明應包含在軟件的所有副本或重要部分中”。但是,如果沒有要包含的此類通知,僅包含“ // SPDX-License-Identifier:MIT”註釋,則實際上沒有辦法遵守。真是一團糟。如果您從未遇到過程序員如何看待世界與律師如何做之間的差異,那麼讓我推薦 What Colour are your bits?

encountered the differences between how programmers see the world

and how lawyers do, let me recommend “ What Colour are your bits? “]

爲什麼pkg.go.dev沒有開源?

這裏沒有任何陰謀。最初的計劃是將其開源,但是開放源代碼給代碼庫帶來了壓力,要求它們可以在其他環境中重用。目前,該代碼僅針對以下一種情況編寫:全球 pkg.go.dev 網站。

我幫助編輯了博客文章,並負責“將pkg.go.dev開源,以便我可以在我的私人代碼上運行它嗎?”這個問題。對於造成這麼多人的冒犯,我深表歉意。

我並不是要暗示沒有其他理由來運行文檔服務器,只是舉例說明我認爲 Go 開發人員想要代碼的最常見原因。

與我們發佈不是全局代理站點的代理的開放源代碼參考實現的方式幾乎相同,我仍然希望我們將發佈不需要模塊代碼的軟件包文檔站點的開放源代碼參考實現。全球站點。不論是在使用私有代碼還是在您的筆記本電腦上使用完全開源的代碼,無需在全球範圍內實現的實現都可以更輕鬆地運行。我還希望同一臺服務器可以提供索引查詢,以使諸如 goimports 和 gopls 之類的工具更快。相比之下,pkg.go.dev 可能無法(至少以不同的方式)爲擴展關注點和隱私關注點提供此類查詢。

因此,博客文章中的原因是真正的原因:當前的代碼不是您可能應該運行的代碼,無論是在工作中還是在離線模式下的筆記本電腦上,我都認爲我們可以爲此提供更好的答案。

但是,我聽到所有想要查看網站上正在運行的代碼並可能對其做出貢獻的所有人,無論是否在其他情況下運行都有意義。我將對此進行調查。

再次感謝您在我們與大家溝通不暢時給我們打招呼。確實有幫助。希望這封郵件也能對您有所幫助,否則請告知我。

祝好,

Russ

注意:目前 godoc.org 上已經有提示,建議使用 pkg.go.dev 了。

三、關於 golangclub.com

最後,go.dev 的中國本土化站點:https://golangclub.com 仍在完善中,期待您的貢獻。項目地址:https://github.com/polaris1119/golangclub

歡迎關注我的公衆號:

相關文章