Go 博客

Go 的四年

Andrew Gerrand
2013 年 11 月 10 日

今天标志着 Go 作为一个开源项目成立四周年。

与其谈论我们在技术上的进展(再过几周发布 Go 1.2 时会有很多可以谈论的),我们认为不如借此机会回顾一下 Go 社区是如何成长的。

让我们从一张图表开始

这张图表显示了过去四年中 Google 搜索词“golang”的增长情况。注意曲线在 2012 年 3 月 Go 1.0 发布时出现的拐点。如果这些搜索能很好地代表兴趣,那么很明显,自发布以来,尤其是在过去 2 年里,对 Go 的兴趣显著增长。

但是这些兴趣来自哪里呢?

开源社区已经接纳了 Go,我们的社区维基列出了数百个 Go 项目。其中一些热门项目包括:

  • Docker 是一个用于在轻量级容器中打包和运行应用程序的工具。Docker 使应用程序的隔离、打包和部署变得容易,深受系统管理员的喜爱。其创建者 Solomon Hykes 将 Go 的标准库、并发原语和易于部署性列为关键因素,并表示“简单地说,如果 Docker 不是用 Go 编写的,它就不会如此成功。”

  • Packer 是一个自动化创建虚拟机或云服务部署所需机器镜像的工具。其作者 Mitchell Hashimoto 现在正在开发另一个 Go 项目,serf,一个去中心化的发现服务。与 Docker 类似,这些项目有助于管理大规模的基于集群的服务。

  • BitlyNSQ 是一个实时分布式消息传递平台,旨在实现容错和高可用性,目前在 bitly 和许多其他公司投入生产使用。

  • CanonicalJuJu 基础设施自动化系统用 Go 重写。项目负责人 Gustavo Niemeyer 表示:“Go 之所以成为一个引人注目的选择,不是因为某一个方面,而是因为精心组织了制作精良的小模块。”

  • raft 软件包提供了 Raft 分布式一致性协议的实现。它是 etcdSkyDNS 等 Go 项目的基础。

  • 其他热门项目包括 biogoGorilla Web Toolkitgroupcache、Mozilla 的 hekakvql 轻量级存储系统,以及 Sky 行为数据库。

但这只是冰山一角。高质量的开源 Go 项目数量惊人。多产的 Go 黑客 Keith Rarick 说得很好:“Go 生态系统仅用了四年时间就达到了令人惊叹的水平。想想 2013 年的 Go 和 1995 年的 Python 或 1999 年的 Java 相比吧。或者和 1987 年的 C++ 相比!”

企业也喜欢 Go。Go 用户维基页面列出了数十个成功案例(如果您正在使用 Go,请务必将自己添加到其中)。一些例子如下:

  • CloudFlare 完全使用 Go 构建了他们的分布式 DNS 服务,并且正在将每分钟处理数 GB 日志的基础设施迁移到该语言。程序员 John Graham-Cumming 表示:“我们发现 Go 非常适合我们的需求:熟悉的语法、强大的类型系统、强大的网络库和内置并发性的结合意味着我们在这里构建的项目越来越多地使用 Go。”

  • SoundCloud 是一个音频分发服务,拥有“数十个Go 系统,几乎涉及网站的每个部分,在许多情况下为各项功能提供自上而下的支持。”工程师 Peter Bourgon 表示:“Go 表明,困扰其他语言和生态系统的那些开发者们不得不忍受的繁冗(通常带着愤怒)根本不是现代编程的必要部分。使用 Go,我与我的工具之间有着直接而非对抗的关系,从开发到生产都是如此。”

  • ngrok 服务允许 Web 开发者远程访问他们的开发环境。其作者 Alan Shreve 表示,“ngrok 作为项目取得成功,很大程度上归功于选择了 Go 作为实现语言”,他列举了 Go 的 HTTP 库、效率、跨平台兼容性和易于部署作为主要优势。

  • Poptip 提供社交分析服务,产品工程师 Andy Bonventre 表示:“最初只是尝试用 Go 编写一个服务,结果几乎将我们的整个基础设施都迁移到了 Go。我最喜欢 Go 的地方不一定是语言特性,而是它对工具、测试以及其他使编写大型应用程序更易于管理的元素的关注。”

  • 音乐协作初创公司Splice 选择使用 Go 构建其服务。联合创始人 Matt Aimonetti 表示:“我们认真研究并考虑了许多编程语言,但 Go 的简洁性、效率、理念和社区最终赢得了我们。”

  • 当然,Google 的工程团队也在转向使用 Go。工程师 Matt Welsh 最近分享了他的经验,讲述了如何用 Go 重写一个大型生产服务。其他值得注意的公开例子包括 YouTube 的 vitess 项目dl.google.com。我们希望很快能分享更多类似的故事。

2012 年 9 月,Apcera 的 CEO Derek Collison 预测“Go 将在 24 个月内成为 [基础设施即服务]、编排和 [平台即服务] 等系统工作的主导语言”。看看上面的列表,很容易相信这个预测。

那么您如何参与进来呢?无论您是经验丰富的 Go 程序员还是仅仅对 Go 好奇,都有很多方式可以加入 Go 社区:

  • 加入离您最近的 Go 用户组,在那里您当地的 gophers 会面交流知识和经验。这些组织正在世界各地涌现。我本人曾在阿姆斯特丹、柏林、哥德堡、伦敦、莫斯科、慕尼黑、纽约市、巴黎、旧金山、首尔、斯德哥尔摩、悉尼、东京和华沙的 Go 小组发表演讲;但还有更多

  • 创建或贡献一个开源 Go 项目(或贡献 Go 本身)。(如果您正在构建某些东西,我们非常乐意在 Go 邮件列表上听到您的消息。)

  • 如果您在 2014 年 2 月在欧洲,请前来参加 FOSDEM 2014Go Devroom(开发者房间)。

  • 参加 2014 年 4 月在丹佛举行的首届大型 Go 会议 GopherCon。该活动由 Gopher Academy 组织,他们也运营一个 Go 招聘板块

Go 团队对过去四年里 Go 社区的成长感到惊叹。我们很高兴看到 Go 正在构建如此多出色的事物,并对与我们出色且专注的贡献者们一起工作深表感激。感谢大家。

祝愿 Go 再创辉煌四年!

下一篇文章:Go 中的文本规范化
上一篇文章:Go 中的字符串、字节、rune 和字符
博客索引