在开源软件技术及应用上拥有近 30 年经验的微软 Azure CTO 办公室首席项目总监 Stephen R. Walli 深入谈起了微软开源文化的演进,并分享了 GitHub 这两年来的巨大成长。今天,开发者们生活在一个开源的世界里,一直都在使用、喜爱开源。而微软为开发者所有,由其治理并为其服务,这是创始人(比尔·盖茨和 Paul Allen)的初衷。
在被微软收购后,GitHub 的使命依然是为开发者构建全球协作的平台,微软只是为一家活跃的成长中的硅谷独角兽公司提供稳定性。在 2020 年,GitHub 上的开发者总数增长至 5000 万,80% 的用户及贡献者来自于美国之外,其中以中国最多。中国在 GitHub 上是一个令人难以置信的充满活力的成长社区,在中国的注册数量正在持续快速增长,在过去一年里增长了 37%。
以下为 Stephen R. Walli 的演讲实录:
大家好,我是微软 Azure CTO 办公室首席项目总监 Stephen R. Walli,很高兴也很荣幸能够再次和大家交流,两年前我就曾与大家一起交流过微软开源文化的演变,当时还刚刚发布微软收购 GitHub 的信息。
我努力把重点放在是文化而非策略这个观点上。我曾想回到这样一种观点,即微软由开发者所有,由其治理并为其服务,这是创始人(比尔·盖茨和 Paul Allen)的初衷。当然,我们的第一任 CEO 本身就是开发者,现任 CEO 也是一位开发者。
我想通过这个故事来帮助大家理解,在这个历史节点上,开发者一直都在使用开源,所有的工具、工具链,开发者就是生活在一个开源的世界里。
开发者喜欢开源,而微软由开发者所有,由其治理并为其服务,在我们变得更好之前,我们明白如何参与到开源的世界之前,这只是时间问题。在我们明白如何参与到开源的世界之后不久,也就是两年前,微软加入了开放创新网络 OIN,也加入了 LOT Network,这是两个专利持有组织,旨在保护其关心的开源社区。
最近的一些事情再次证明了微软支持开源软件的文化态度,Brad Smith 是我们的总顾问,也是我们微软的总裁,而且在过去 20 年里,他一直担任法律总顾问,Brad 承认了 20 年前公司在开源软件方面站在了历史潮流的对立面。不过,正如他所说,好消息是生命足够长,你可以学习,你也需要改变,我非常喜欢这句话。
The good news is that life is long enough, you can learn...that you need to change.
所以今天,在这个简短的介绍之后,我想接着和大家谈谈,微软正在持续发展自己的开源文化。我想从以下三个方面进行讨论:
微软对 Kubernetes 项目的参与,以及我们如何在 Azure 上的 AKS 服务中使用它;
GitHub 的最新情况,尤其是在中国的进展;
还有一些新举措,是微软和其他一些供应商开始合作,以确保开源软件供应链安全的新举措。
风靡的 Kubernetes
首先,我们来说说 Kubernetes 和 AKS。今天,所有人都在运行容器化应用程序。据 Gartner 预测,到 2022 年,全球超过 75% 的组织将运行容器化应用和生产。
Kubernetes 是容器编排(Container Orchestration)的核心,它是一个非常成功的开源软件项目社区,无论衡量方式如何,Kubernetes 都是 GitHub 头号项目。
Kubernetes 已经发展几年,微软也成为该社区一部分好几年了,我们是云原生计算机基金会的铂金会员,Kubernetes 是 Linux 基金会的一部分,围绕着支持 Kubernetes 及其相关开源项目。我们是技术监督委员会、管理委员会的一部分,也是项目内 Kubernetes 指导委员会的一部分、Linux 基金会的董事会成员。
多年来,我们一直是这个社区的一部分,也是这个社区中不断成长的一部分。
Kubernetes 的成长令人欣喜,因为它得到了广泛的使用,并且独立于供应商,得到了社区支持,这个项目很顺利,有众多来自不同公司和行业的贡献者。不仅仅是供应商在做贡献,你可以看到许多不同的贡献者,来自世界各地。其中一些是客户和专家,而用户其中一些是学者,你会发现这是一个非常活跃的社区。
同时,微软不仅参与了 Kubernetes 开源社区项目,还继续围绕 Kubernetes 项目创建和参与不少其他项目,它们都与云原生部署、云原生应用程序打包、如何思考在 Kubernetes 上运营和管理大规模部署有关。
这些项目都是我们自己继续发布开源许可证并围绕这些项目建立社区的。
Kubernetes 本身仍然只是容器编排的核心项目,不能单独使用 Kubernetes,需要向 Kubernetes 添加一些东西,才能真正为应用程序部署创建完整的平台。
大家知道所有大型云服务提供商都把 Kubernetes 作为一个社区中的认证平台,然后将其引入自己的平台,开始创造丰富的客户体验。它们以多种不同的方式进行,因为要增加安全性和应用程序治理,数据集治理以及身份管理平台,大家会一直在自己的服务中的所有不同集成中看到这一点。
微软集成 Kubernetes 的方式不同于亚马逊将 Kubernetes 或 Google 与其 Kubernetes 产品集成的方式。
Azure 上的 Kubernetes 是第一方 Azure 服务,我们通过 AKS 来进行所有的东西,都具有面向客户的托管服务,这些实践为它提供了支持。涉及到围绕它的全面企业支持的这些安全的多层次也提供了支持,并且具有完整的统一管理经验。
开源项目是组件,公司会采用这些组件,和面向客户的旧产品和服务,这就是企业使用开源的方式。他们希望以这种方式使用开源,回馈这些项目,以及所有为了保持项目健康活力,以供大家使用而做的改变。
GitHub 与中国
现在我想和大家谈谈 GitHub。
当我在两年前发言的时候,微软刚刚宣布一项 GitHub 交易已经完成。根据美国商业法,除了非常简单的公开声明,我不能再多说,声明称我们期待合作,这是很好的。我想和大家聊一聊这两年来 GitHub 巨大的成长。
GitHub 的使命仍然是为开发者协作构建全球平台,我们将 GitHub 作为其自己的组织运行。事实上,微软只是为一家活跃的成长中硅谷独角兽公司提供稳定性,它现已稳定下来,成为面向开发者和客户的微软公司的一部分。
因此,尽管我们仍在继续运行它,GitHub 也在自行运行,它自己的部门在不断发展壮大。
这只是一些疯狂的数字,我不会一个一个地讲,但是确实存在这种丰富的环境,在 2020 年,GitHub 上的开发者总数增长到 5000 万,我们 80% 的用户位于美国以外,而在排名前十的国家和地区中,美国依然是最大的市场,不过中国紧随其后,其次是印度、英国、巴西、俄罗斯和加拿大等。
中国是 GitHub 上一个令人难以置信的充满活力的成长社区。我们已经有超过 200 万学生在 GitHub 上查阅和学习代码,这对人们来说,是很好的学习体验。我们继续帮助满足世界上更多开发者的需求,并向他们传授开源知识。
我们继续提供企业平台,目前全球财富 50 强企业中,有 32 家企业正在 GitHub 上构建软件,这是一个非常稳定的合作企业质量环境。
而 GitHub 在中国这两年持续发展壮大,中国是 GitHub 在亚太地区最大的市场,也是全球第二大市场。在中国的注册数量持续快速增长,在过去一年中增长了 37%,比美国的增长速度还要快。比如说,中国的企业云账户也在持续增长。
在中国,开源本身仍然是充满活力的技术发展机会,随着人们继续合作,分享工作,相互学习,GitHub 平台仍然是实现这一目标的绝佳场所。
因此,很高兴看到开源在中国的发展,看到 GitHub 在中国的连锁反应。
来看看中国有多少人在学习开发并成为开发者,可以看到,在中国,GitHub 教育也在以 8% 的速度发展。
如何保护开源软件供应链?
我想谈的最后一个话题是,保护开源软件供应链。全世界的人们都在关注这个领域,看到它的时候,我们都明白人们是如何考虑保护食品供应链的,大家知道食物来自农场,通过买家通过经销商再到客户手中,如果有问题,我们可以追溯回去,就像人们希望从软件供应链的角度来考虑这个问题一样。
从开源开发者把代码放入 GitHub 存储库,然后,由应用程序开发者持有,用于支持公司中的终端用户,或者用于构建产品并将其销售给终端用户。
同样是这种意义上的软件供应链,和我们如何追踪问题。不幸的是,软件供应链并不像食品供应链那样简单,这是因为有太多的依赖关系开始互相回滚,人们总是使用更多的组件来构建更大的组件,这些都是软件供应链规则,因此当我们开始弄清楚它时,这是一个更为复杂的问题。
而当你踏入这个领域,真的就像我们一开始说的,开发者喜欢开源系统和开源开发者问题,所有在这种环境下工作的开发者都是这样。
当遇到一个已发现的关键漏洞,突然之间,一个漏洞可以接触到人们所依赖的许多不同的关键软件包,所以 Visual Studio Code Atom Slack 和 Discord 会使用 Electron。
Electron 中的 CVE 影响了全世界许多用户,但问题比这更严重,因为随着软件变得越来越复杂,越来越多的人在开源世界中工作、协作和共享,我们的依赖链越来越长。VS Code 依赖于 Electron,Electron 依赖于 Chromium,而并非当前版本的 Chromium,它依赖于旧版本的 Chromium,不能简单地重新平台化,Chromium 则依赖于 FFmpeg,奇怪的是 FFmpeg 依赖于 FreeType,继续这样下去,FreeType 中的漏洞可能会通过 Electron 迅速影响,然后就会看到它扩展到很多其他方面。
所以,这项工作是为了验证,我们确实比较了解食品供应链是如何运作的,我们正设法把这个想法应用到软件供应链上。
我们正努力通过软件物料清单和策略来进行,这可以让我们考虑诸如开发者、生产者身份、产品识别等因素。正是这个软件集合,正逐步进入构建过程完整性,我们怎么知道这来自于一个可靠的网站,但没有经过限制和许可,我们怎么知道这个软件包及其所有依赖关系都正确符合其许可要求。
同样地,创造是否意味着我作为客户的要求,如果我是航空飞机制造商,我可能对我正在使用的软件有非常不同的要求。
最后是材料,我们对我们创造的软件组件有信心吗?这是开始考虑构建材料和软件以及如何对其应用策略的所有要素。
早期的项目之一为这里的一些思想提供了基础,这个项目就是 SPDX(Software Package Data Exchange),即软件包数据交换,这个项目是 Linux 基金会旗下的项目,用于许可证合规性工作,它基本上提供了 XML 格式标记系统,可以帮助快速识别清单中软件组件的关联关系。
另外还有一个名为 in-toto 的开源项目,正在进行大量实验,它真正关注的是构建完整性,以便在构建,向最终成品软件包开放的组件时,可以在整个供应链中进行真正的策略追溯和证明,所以现在这个领域有很多工作要做。
我们的目的是,要在整个复杂的软件供应链中,能有大家都认可的软件物料清单,这些软件供应链的不同部分连接在一起,因此组件基于组件。当有很长的依赖关系链时,以及各个部分如何组合在一起,实际上可以跨所有这些网络站点进行验证,这就是目前正在进行的工作。
这项工作引起了很多人的关注,微软参与了这些讨论,我想在不久的将来会有更多的讨论,但这是一个挑战,需要在全球范围内很多人一起努力,我认为在接下来的几年里,我们会不断加以应对,我们再次在社区中集体合作,以确保开源软件供应链的安全。
总结
最后,我想给大家分享一个观点,两年前我和大家交流时,我从 CEO 萨提亚·纳德拉那里了解到这个观点,通过我们的行动,最近采取的行动、以及今天和未来的行动来判断我们。我想请大家在 2020 年继续以我们的行动,以我们在这个代表开源世界的活跃全球软件社区中的参与来做判断,感谢大家抽出时间,很荣幸能在中国进行演讲,我非常非常期待在不久的将来再次访问北京。
关键词: 微软收购GitHub