发布于 2026-01-06 0 阅读
0

谷歌如何管理开源软件

谷歌如何管理开源软件

很多人都知道,谷歌使用一个名为 monorepo 的单一代码仓库来存储所有内部源代码。谷歌的 monorepo 已经在博客上被提及在会议上被讨论,并在ACM 通讯上发表过文章。 

目前大多数研究都集中在单体仓库如何影响谷歌开发者的生产力,以及一个团队编写的软件如何被多个团队使用。但我很少看到有人探讨它如何影响谷歌内部团队使用开源软件的方式。

Google monorepo 的优势

与内部代码一样,第三方开源代码也以 `/third_party` 为前缀导入到 monorepo 中。这种方法有诸多优点:

  • 单一版本。与谷歌内部开发的库类似,将开源代码导入单体仓库可确保所有应用程序都使用同一版本的库,而不是像谷歌内部的许多应用程序那样,存在着版本混乱、难以理解和维护的问题。
  • 更新便捷。由于代码版本集中在一个地方,无论是进行日常维护还是修复关键安全问题,更新开源库都变得更加容易。您只需更新 `/third_party` 目录下的项目副本,Google monorepo 中的每个应用程序都会使用该新版本进行构建。不过,您必须确保此次更新不会影响 monorepo 中其他任何项目的构建。
  • 依赖关系清晰。通过将所有依赖项集中存储在一个位置,Google 工程师可以轻松查看 monorepo 中哪些组件依赖于特定的开源库。因此,当需要更新以修复安全漏洞时,各个应用程序的开发者可以很快收到通知,告知他们需要部署包含已修复依赖项的新二进制文件。
  • 简化许可审核流程。许可审核可以集中在一个地方完成,无需像以前那样,每次应用程序需要依赖新的库时都进行新的审核。正如您所想,在谷歌这样的大型企业中,大量的开源项目已经过许可审核,并获准在谷歌内部使用。

事实证明,谷歌从单体代码库中获得的这些好处,对大多数其他使用开源软件的工程组织也同样有价值——即使它们的规模不及谷歌。但大多数工程组织缺乏足够的人力或财力来确保自己能够获得这些好处。

毕竟,使用开源软件的主要好处之一就是可以访问许多通用的基础架构组件,而无需自己从头开始编写。 

但大多数开发团队仍然需要高度确信他们使用的软件得到了妥善维护。他们需要确认软件的许可方式符合组织的要求,并且需要了解软件的安全性,或者在出现漏洞时收到通知。 

从根本上讲,大多数开发者都希望能够像谷歌的开发者从 monorepo 拉取代码时那样,获得“已知良好”的组件,而不是像引入新的开源组件那样,在没有任何健全性检查的情况下,进行依赖轮盘赌式的依赖。

如何管理像谷歌这样的开源软件

每个组织都能从像谷歌那样管理开源软件中获益。幸运的是,Tidelift 订阅服务让您可以轻松创建自定义的开源组件目录,从而获得谷歌方法的诸多优势,而无需维护自己的分支或投入资源创建和维护自己的单体仓库。

通过 Tidelift 订阅,您可以查看所有应用程序中使用的开源软件包及其版本目录。您可以利用工作流自动化,根据开发人员的需求审批新软件包——开发人员提出软件包请求,然后由经理或架构师进行审核和批准。 

您可以根据已知的安全漏洞或许可问题禁止某些软件包或软件包版本。或者,您可以集中标记一个本质上属于理论性质的漏洞,该漏洞不仅可以被忽略一次,而且可以被所有开发团队忽略,而无需每个团队都费力地审查漏洞并自行评估,以通过部署前扫描测试。 

与开源维护者合作

我们更进一步,与众多开源软件包的维护者合作,以确保这些软件包得到良好维护,拥有清晰的许可协议,并在发现漏洞时及时修复安全漏洞。这是一种双赢的局面,因为使用某个项目的订阅者越多,维护者获得的报酬就越多,这意味着他们有更多的时间和动力来维护和更新他们的项目。

作为 Tidelift 的订阅用户,您可以自行设定在组织内使用开源项目的策略,或者您也可以完全接受我们的指导。

定制您的产品目录

Tidelift 中托管的开源软件目录可以通过多种不同的方式使用。

  1. 您的开发人员可以使用我们的命令行工具来确保他们使用的是合适的软件包和版本,并在发现需要时请求新的软件包和版本。 
  2. 您可以在持续集成管道中添加检查,以确保不会构建任何使用未经审查的组件的内容。 
  3. 您可以接入中央工件管理器(例如JFrog Artifactory),以便只允许下载经过批准的组件。 

每个选项都可以单独使用,或者为了达到最佳部署效果,可以将三个选项全部使用!

如果您有兴趣了解更多关于管理开源依赖项的最佳实践,我们可以提供帮助。您可以与我们的专家交流,或点击此处阅读更多关于Tidelift 托管开源方案的信息。 

照片由Joseph Barrientos拍摄,来自Unsplash

文章来源:https://dev.to/tidelift/how-google-manages-open-source-hpm