通过我们的社区支持日获取模块帮助

更新:截至2021年5月1日,GoCenter中央存储库已经日落,所有功能将被弃用。有关中心日落的更多信息,请阅读弃用博客文章

如今,成为Golang开发人员令人兴奋的一件事是,强大的社区支持这门由Google开发的语言的发展。Golang的创始人在早期就对工程师的参与持开放态度,以社区为中心的方法现在已经成为Go本身的资产。今天,世界各地的工程师继续贡献开源包、模块和框架,并不断帮助评论新的想法,并在Go走向2.0路线图的过程中共同解决问题。JFrog社区工程团队在这一演变过程中发挥了作用,今天,我们将重点介绍从一开始就为社区做出贡献的个别工程师GoCenter2019年1月。让我们来听听他们的故事:

Ankush -开发经理,社区工程@ JFrog解释了为什么你应该使用GoProxy

“GoCenter背后的动机是通过帮助开发者采用Golang来改善Golang生态系统去模块成功地提供丰富的元数据,使开发人员能够做出决策。社区日班使我们能够实现这一愿景。在转换过程中,我们观察到故障通知,这些通知提供了关于模块未成功创建或服务的早期信号。这可能有多种原因;一个是缺少需求,例如不正确的模块名称等。我们使用Stack Overflow、社交媒体、各种Slack渠道和VCS系统来了解问题的背景。然后,我们可以通过与用户互动并帮助他们提交pull请求来解决问题。

“例如,几个月前,我在Kubernetes Slack频道上发现其中一个软件包,Apache节俭社区无法使用。我在谷歌上搜索了Apache Thrift,发现很多项目都失败了,因为他们没有使用GoProxy。当我在GoCenter上查看时,我注意到我们在那里可以使用它。一旦我发现了这个问题,我帮助传播意识,并解释这是准确的为什么开发者应该使用GoProxy这保证了可用性和不可变性。在GoCenter上,我们存储每个模块的每个版本,所以它总是可用的。在此之后,我花了更多的时间来思考解决方案,以及我还能如何帮助社区。在这样做的过程中,我也意识到他们改变了模块的名称,因此帮助社区理解迁移到新版本的模块也会解决名称问题。”

高级软件工程师Elio解释伪版本问题

“我们在社区支持日的主要目标是确保GoCenter上的模块正常工作,并尽我们所能为社区提供最好的服务。我们不希望人们错过Go模块应有的内容;例如,如果他们拿不到,我们会积极地与他们合作,找出原因。我们监控系统以确保它是健康的,我们观察所有的事件,并确保基于我们的安全和健康检查,我们可以有一个解决不健康模块的意见。当我们发现丢失了一些东西或者可能存在延迟问题时,我们会修复这些问题。当我们看到由于模块的作者可能在他们这边造成了问题而导致某些东西不可用时,我们会与他们沟通并与他们一起解决问题,以便人们可以将这些模块作为依赖来使用。

“在Slack上的一个例子中,一名用户报告了我们在GoCenter上处理伪版本的问题。我们与用户一起描述最佳和期望的用户体验,并能够在同一天解决问题。那时我们引入了伪版本修复功能。我们让它变得简单,所以他们不需要去他们的mod文件并在那里进行修复。我们刚刚发布了JFrog博客我为此写了一篇文章Dev.to上的伪版本问题。”

Mitali -软件工程师谈论安全缓解

“最近,我们增加了免费的安全扫描转模块到GoCenter从那以后,我一直在为社区减轻安全问题。从我们的漏洞数据库中,我一直在GitHub上发出pull请求,让社区知道某个项目在CVE公共数据库中出现了一个问题。我的任务是跟踪安全问题是否得到解决,或者该模块版本中是否仍然存在问题。我还会查看依赖项列表,看看是否有该模块的版本在他们选择在特定项目中使用的版本之后变得安全。在很多情况下,我可以建议模块作者使用哪个版本是最新的、最安全的。”

Mahesh -软件工程师解释了Artifactory如何使用GoCenter作为GoProxy

“我帮助解决的大多数问题都与Artifactory以及如何设置远程回购有关。去年,一个开发团队在Artifactory中创建了一些本地Go存储库,并将其用作他们的端点,这对他们来说不起作用,因为Artifactory中的文档解释说,你首先需要创建一个虚拟的repo,然后在虚拟的repo下添加本地的repo。之后,可以使用虚拟端点作为实际端点。一旦解释并理解了这一点,我便能够引导开发团队完成设置;我们帮助他们了解GoCenter作为GoProxy的工作原理,以及在Artifactory中可以看到环境变量的位置。”

Shivaram—高级软件工程师谈论如何帮助团队迁移到Go模块

“我很自豪的一件事是能够帮助我们的社区将Go项目迁移到使用Go 1.13版本的Go模块。将现有项目转换为使用Go模块可能非常具有挑战性,特别是如果项目已经通过Golang在包管理解决方案方面的许多早期尝试而发展。ETCD.io有一个这样的项目,也提出了其他复杂的挑战,因为它使用的代码生成器像protobuf并且没有模块感知的静态分析工具和构建中的各种类型的测试,包括单元测试、功能测试、集成测试和端到端测试,这些测试都必须经过修改才能与模块一起工作。我确保所有的测试都通过了,并且提交有544个文件。这是GitHub上最大的单次提交之一,也是我个人最喜欢的时刻。”

在Go模块上与社区合作

正如上面的故事所强调的,随着Go依赖管理的发展,JFrog社区工程团队已经帮助解决了许多问题,并且能够直接帮助开发人员更好地了解如何开发他们的Go模块,处理依赖问题,理解伪版本,并降低安全风险。

“我喜欢社区的日间支持——他们让我们作为GoCenter的用户了解可能出现的问题。这些转变甚至可以帮助我们了解防止这些错误的最佳实践,这有助于我们了解Go社区实际上是如何经历Go模块故障的,以及我们如何更好地解决这些问题。”- - -斯坦利

要了解更多关于我们如何支持Golang的发展,我们邀请您参与!你可以评论我们的GitHub问题在这里或直接与我们的工程师交谈加入我们的GoCenter Slack频道。

我们是谁

Ankush -开发经理,社区工程

我的目标是识别和解决大型开发者社区面临的问题,并确保我的团队产生的解决方案是高质量的。我喜欢创业的节奏。我最喜欢的突破是当我能够证明Helm不能扩展到超过100k的图表时,这是由于索引文件的设计——我做了一个演讲,从那天起,我就完全进入了社区。

Arvind -高级软件工程师

在加入JFrog之前,我在联邦政府工作。真正促使我选择JFrog的是社区方面——为其他开发人员解决痛点。在JFrog,我领导为我们构建的所有中央存储库和其他社区产品构建UI层。hth华体会最新官方网站

Mitali -社区软件工程师

在JFrog之前,我在思科和Artifactory一起工作。我非常喜欢Artifactory产品,并注意到JFrog正在招聘一名软件工程师,为GoCenter开发新功能。我还注意到这个角色与通常的软件开发人员角色有点不同,我被在社区团队中工作的想法所吸引。

Elio -高级软件开发人员

我在巴西工作了10年,为大公司、电信公司、小型创业公司和银行做工程师。在JFrog,我设计体系结构并构建我们的中央存储库,以支持负载的不可预测性。

斯坦利-技术解决方案开发

我的大部分职业生涯都是从事软件开发管理工作。我对QA和DevOps有着非常强烈的热情,这让我渴望帮助构建和支持开发人员工具,以实现更快的发布。在JFrog,我解决bug,开发测试自动化,在发布中提供问题的状态,并对发布的质量负责。

Shivaram- - - - - -高级解决方案开发人员

我以高级解决方案开发人员的身份加入JFrog,最初为合作伙伴团队做出贡献,但很快成为中心开发的核心贡献者。我喜欢接触新产品!hth华体会最新官方网站在JFrog,我们总是致力于新产品的开发,并在现场学习所有我们不hth华体会最新官方网站知道的东西。我喜欢在Golang和ElasticSearch以及Kubernetes上的微服务器上工作。

马赫什- - - - - -高级解决方案工程师

当我以高级解决方案工程师的身份加入JFrog时,我最初的工作是使用我们支持的模板,如Azure、Artifactory、AWS和OpenShift。我目前正在研究自动化管道工作——如何将代码部署到集群中。我未来的目标是将我们所有的解决方案与JFrog管道产品和支持新功能,特别是来自GoCenter。

裂缝,高级方案工程师

在JFrog之前,我在Kubernetes领域工作,并与人共同创立了Helm。在过去的15年里,我一直担任高级工程角色,主要是管理团队或从事DevOps、CI/CD自动化、监督项目以及在K8和Helm领域构建产品。hth华体会最新官方网站今天,我使用监控、警报、日志记录和利用云原生来简化我们的工作。我喜欢在支持开源项目的社区工程团队中工作。