2017 Go 贡献者峰会

未匹配的标注

本文为官方 Go Blog 的中文翻译,详见 翻译说明

Sam Whited
2017 年 8 月 3 日

介绍#

GopherCon 的前一天,一群 Go 团队成员和贡献者聚集在丹佛,讨论并计划了 Go 项目的未来。这是同类活动中的第一个事件,是 Go 项目的重要里程碑。该活动包括一个上午会议,围绕一个主题进行重点讨论,而下午会议则由小组讨论的圆桌会议组成。

编译器和运行时#

编译器和运行时会话首先讨论有关将 gc 和相关工具重构为可导入程序包的讨论。这将减少核心工具和 IDE 中的开销,后者可以将编译器自身嵌入以进行快速语法检查。代码也可以完全在内存中编译,这在不提供文件系统的环境中很有用,或者在开发过程中连续运行测试以获取实时的损坏报告。将来,最有可能在邮件列表中引发有关是否继续进行此工作的更多讨论。

关于弥合优化的汇编代码和 Go 之间的鸿沟,还有很多讨论。由于性能原因,Go 中的大多数加密代码都是以汇编形式编写的;这使得调试,维护和阅读变得困难。此外,一旦您尝试编写汇编语言,通常就无法回调 Go,从而限制了代码重用。 Go 中的重写将使维护更加容易。添加处理器内部函数并更好地支持 128 位数学运算将改善 Go 的加密性能。有人建议为此目的扩展 1.9 中的新 math / bits 包。

我对编译器和运行时的开发并不十分熟悉,这对我来说是当今最有趣的会议之一。我了解了很多有关世界的现状,问题以及人们想从哪里去的知识。

依赖管理#

dep 团队对项目状态进行了快速更新后,依赖管理会议开始关注 Go 世界在 dep (或类似 dep 之类的东西) 的工作方式) 成为打包管理的主要手段。使 Go 更加容易上手并且使 dep 更加易于使用的工作已经开始。在 Go 1.8 中,引入了 GOPATH 的默认值,这意味着用户在开始使用 dep 之前仅需将 Go 的 bin 目录添加到其 $ PATH 中。

dep 可能会实现的另一项未来的可用性改进是,允许 Go 在任何目录 (不仅仅是 GOPATH 中的工作空间) 中工作,以便人们可以使用习惯于其他语言的目录结构和工作流。通过指导用户完成将 bin 目录添加到其路径的过程,甚至自动化该过程,将来使 go install 的安装变得更容易。有很多不错的选择可使 Go 工具更易于使用,并且讨论可能会在邮件列表上继续进行。

标准库#

Russ Cox 的博客文章主要介绍了我们对 Go 语言的未来的讨论:Toward Go 2,让我们继续进入标准库会议。

作为标准库和子仓库的贡献者,本次会议对我来说特别有趣。标准库和子存储库中的内容以及可以更改的内容是一个定义不明确的主题。当 Go 团队可能没有也可能没有任何具有特定专业知识的人员时,Go 团队可能很难维护大量的软件包。要对标准库中的程序包进行关键修复,必须等待 6 个月才能发布新版本的 Go (或者,由于安全问题而必须发布正式版,这会浪费团队资源)。更好的依赖关系管理可以促进某些程序包从标准库迁移到具有自己的发布时间表的项目中。

对于标准库中的接口难以实现的事情,也进行了一些讨论。例如,如果 io.Reader 接受上下文,这样可以取消阻塞的读取操作,那就太好了。

在确定标准库中将要进行的更改之前,还需要更多的体验报告

工具和编辑器#

供编辑器使用的语言服务器是工具会话中的热门话题,许多人主张 IDE 和工具开发人员采用通用的 “Go 语言服务器” 来索引和显示有关代码和包的信息。建议将 Microsoft 的 Language Server Protocol 作为一个良好的起点,因为它在编辑器和 IDE 中得到了广泛的支持。

Jaana Burcu Dogan 还讨论了她在分布式跟踪中的工作,以及如何使有关运行时事件的信息更易于获取并附加到跟踪中。提出了使用标准的 “计数器” API 来报告统计信息,但是在设计此类 API 之前,需要社区提供具体的经验报告。

贡献者经验#

当天的最后一场会议是关于贡献者的经验。最初的讨论是关于如何使新的贡献者更容易使用当前的 Gerrit 工作流,这已经导致对几个仓库的文档进行了改进,并在几天后影响了新的贡献者研讨会!

还考虑了使查找任务更容易,使用户能够在问题跟踪器上执行园艺任务以及使查找审阅者更容易的功能。希望在接下来的几周和几个月中,我们将在贡献流程的这些以及更多领域看到改进!

分组讨论#

下午,参与者分成小组,对早晨会议中的某些主题进行了更深入的讨论。这些讨论有更具体的目标。例如,一个小组致力于确定体验报告的有用部分以及记录 Go 用户体验的现有文献列表,从而产生了体验报告 wiki 页面

另一个小组考虑了 Go 中错误的未来。最初,许多 Go 用户对 error 是接口感到困惑或不了解,并且不使用 io.EOF 之类的掩饰哨兵错误,将更多信息附加到错误上会很困难。分组讨论会讨论了可能在即将发布的 Go 版本中解决其中一些问题的特定方法,但还讨论了可以在 Go 2 中改进错误处理的方法。

社区#

除了技术讨论之外,峰会还为来自世界各地的人们提供了机会,他们经常交谈并共同工作,在很多情况下是第一次亲身见面。建立彼此之间的相互尊重和同情心是无可替代的,当需要将具有不同背景和思想的多样化群体团结在一起在一个社区中工作时,这一点至关重要。在休息时间,Go 团队成员将自己分散在贡献者中,讨论有关 Go 和一些一般性的社交化的问题,这确实有助于使人们每天审查我们的代码时,将名字与我们的脸联系起来。

正如 Russ 在 Toward Go 2 中讨论的那样,有效沟通需要了解您的听众。一起在会议室中收集大量 Go 贡献者样本有助于我们所有人更好地了解 Go 的受众,并就 Go 的未来展开许多富有成效的讨论。展望未来,我们希望做更多这样的活动,以促进讨论和社区意识。

Photos by Steve Francia

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-blog/contrib...

译文地址:https://learnku.com/docs/go-blog/contrib...

上一篇 下一篇
Summer
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~