Go 部落格

四年的 Go

Andrew Gerrand
2013 年 11 月 10 日

今天為 Go 開源專案的四週年紀念。

我們並不打算探討技術進展(等我們在幾週內發行 Go 1.2 時,會有許多內容得以討論),而是想藉此機會探討 Go 社群如何成長。

讓我們從圖表開始

此圖表顯示過去四年中搜尋字詞「golang」的 Google 搜尋次數成長。請注意 2012 年 3 月左右曲線的轉折點,當時 Go 1.0 發行。如果這些搜尋次數是可以反映興趣的合理指標,那麼顯而易見地對於 Go 的興趣從其推出以來大幅增加,而過去 2 年的成長尤為顯著。

但興趣從何而來?

開放原始碼社群擁抱了 Go,我們的社群 wiki 列出了 數百個 Go 專案。其中幾個熱門專案

  • Docker 是工具,用於將應用程式封裝並執行於輕量級容器中。Docker 可讓應用程式易於隔離、封裝和部署,並受到系統管理員的喜愛。其建立者 Solomon Hykes 引用了 Go 的標準函式庫、共時機制,以及其易於部署作為 Docker 成功的重要因素,並表示「簡單來說,如果 Docker 沒有用 Go 編寫,就不會如此成功。」

  • Packer 是一個用於自動化建立機器映像,以便部署到虛擬機器或雲端服務的工具。它的作者 Mitchell Hashimoto 目前正在進行另一個 Go 專案,一個分散式探索服務 serf。這些專案如同 Docker,協助管理大型、以叢集為基礎的服務。

  • BitlyNSQ 是為容錯及高度可用性所設計的實時分散式訊息平台,並於 bitly 及許多其他公司使用於執行階段。

  • CanonicalJuJu 基礎架構自動化系統已重新使用 Go 語言撰寫。專案負責人 Gustavo Niemeyer 表示:「讓 Go 成為令人信服的選擇的並非單一面向,而是精巧組合經過精心打造的小元件。」

  • raft 套件提供 Raft 分散式共識協定的實作。它是許多 Go 專案的基礎,例如 etcdSkyDNS

  • 其他熱門專案包括 biogoGorilla Web Toolkitgroupcache、Mozilla 的 heka、輕量級儲存系統 kvql,以及行為資料庫 Sky

但這只是冰山一角。高品質的開放原始碼 Go 專案數量非常驚人。多產的 Go 駭客 Keith Rarick 很貼切地表示:「Go 生態系統在短短四年後的狀態令人驚嘆。將 2013 年的 Go 與 1995 年的 Python 或 1999 年的 Java 相比。或 1987 年的 C++!」

企業也開始採用 Go。 Go 使用者 Wiki 頁面 列出了許多成功案例(如果您使用 Go,請將它加入其中)。一些範例

  • CloudFlare 使用 Go 從頭打造其分散式 DNS 服務,並著手將其每分鐘數 Gigabtye 的記錄基礎架構移轉至該語言。程式設計師 John Graham-Cumming 表示:「我們發現 Go 能完美符合我們的需求:具備熟悉的語法、強大的類型系統、強固的網路程式庫以及內建並行處理功能,這表示越來越多的專案會用 Go 來打造。」

  • SoundCloud 是一個音訊散佈服務,擁有「數十個使用 Go 的系統,觸及到網站的每一部份,並且推動上至下許多功能。」工程師 Peter Bourgon 說,「Go 證明了其它語言和生態系統中累贅的東西—開發人員在怒氣中學著應對的那些事物—根本不是現代程式設計中必要的部份。有了 Go,我可以和我的工具建立起直接且合作良好的關係,從開發到生產。」

  • ngrok 服務讓網頁開發人員可以遠端存取他們的開發環境。其作者 Alan Shreve 表示,「ngrok 專案的成功,很大一部份要歸功於選擇 Go 作為實作語言」,將 Go 的 HTTP 函式庫、效率、跨平台相容性與易於部署列為主要優點。

  • Poptip 提供社群分析服務,產品工程師 Andy Bonventre 表示,「原本只是想實驗寫一個 Go 服務,最後卻變成將我們幾乎整個基礎設施都轉移到它上面。我最喜歡 Go 的地方,不一定是它的語言功能,而是它重視工具、測試和其它讓寫大型應用程式更易於管理的元素。」

  • 音樂協作新創企業Splice 選擇用 Go 來建置他們的服務。共同創辦人 Matt Aimonetti 表示,「我們認真地研究並考慮許多程式語言,但 Go 的簡潔、效率、哲學和社群打動了我們。」

  • 當然,Google 各個工程團隊也正在採用 Go。工程師 Matt Welsh 最近分享了他的經驗,說明如何使用 Go 改寫大型生產服務。其他著名的公開範例包括 YouTube 的vitess 專案dl.google.com。我們希望很快就能分享更多像這樣的案例。

2012 年 9 月,Apcera 執行長 Derek Collison預測「24 個月後,Go 將成為 [基礎建設即服務]、[網格服務] 和 [平台即服務] 系統工作的支配性語言。」回顧上述清單,相信這個預測是很容易相信的。

那麼,你能如何參與呢?無論你是經驗豐富的 Go 程式設計師還是對 Go 充滿好奇,都有許多方法可以在 Go 社群中開始

  • 加入您最近的 Go 使用者社群,當地 gopher 將在此齊聚一堂,分享他們的知識和經驗。這些社群正於世界各地如雨後春筍般出現。我本人曾在阿姆斯特丹、柏林、哥德堡、倫敦、莫斯科、慕尼黑、紐約市、巴黎、舊金山、首爾、斯德哥爾摩、雪梨、東京和華沙的 Go 社群演講;但還有更多社群

  • 建立或為某個開放原始碼 Go 專案做出貢獻(或為 Go 本身做出貢獻)。(如果您正在開發某個專案,我們很樂意在Go 郵寄清單上聽取您的意見。)

  • 如果您於 2014 年 2 月在歐洲,請來參加FOSDEM 2014上的Go Devroom

  • 參加於 2014 年 4 月在丹佛舉辦的第一場大型 Go 大會GopherCon。這場活動是由Gopher Academy舉辦。他們也經營一個Go 求職平台

過去四年,Go 團隊對於 Go 社群的成長驚嘆不已。我們很榮幸看到許許多多偉大的事務使用 Go 打造而成,並由衷感謝我們傑出且奉獻的貢獻者。謝謝大家。

讓我們一起再走過四年!

下一篇文章:Go 中的文字標準化
上一篇文章:Go 中的字串、位元組、符文和字元
部落格首頁