数据科学及相关领域诞生于开源项目,并由开源项目推动发展。开源社区让大家能够协力解决更大的问题。作为数据科学社区的守护者,我们认为重要的是要深入了解代码背后的故事,以 spotlight 那些在开源领域做出贡献的人。在一系列博客文章中,我们将重点介绍一些 Anaconda 员工、他们参与的开源项目以及他们的工作如何对更广泛的领域产生影响。
首先是 Cheng Lee,他是 Anaconda 的高级软件工程师,负责 Conda 开源项目。
.
问:什么是 Conda?
Conda 是 Anaconda 管理的旗舰开源项目。它是一个软件包和环境管理系统,可以极大地简化数据科学工作。您无需联系系统管理员或通过多个来源安装数据科学软件,只需使用 Conda,它可以处理软件安装、管理多个版本和软件环境以及处理升级等工作。
Conda 本身是一个工具,但它也是一个由社区支持的广泛生态系统。不仅 Anaconda 贡献软件包,我们还依靠一个庞大的社区来支持我们的用户。 Conda-forge 和 Bioconda 是两个最大的、更知名的子社区,但合作伙伴公司和项目、其他志愿者团体以及个人在更广泛的 Conda 生态系统中都扮演着重要角色。
问:您在 Conda 中的角色是什么?
我是 Conda 核心团队的主要成员之一。我负责 Conda 本身的许多开发工作,还负责社区方面的工作,例如响应问题和拉取请求、管理 Conda 技术栈的公开路线图以及与社区成员会面。我在 Anaconda 的所有时间,都或多或少地与这个项目相关。这并不意味着我一直在直接为 Conda 编写代码;我可能会与客户和合作伙伴会面,收集社区团队的反馈,并与 Anaconda 分发团队的其他成员合作,开发与 Conda 相关的软件和软件包。
问:您最自豪的贡献是什么?
我在 Anaconda 工作已有六个多月了。我在上家公司是一家 Anaconda 合作伙伴,因此我在 Conda 生态系统中工作已有五年多。
我为帮助构建软件包生态系统而感到最自豪。在我之前在一家生物技术初创公司工作时,我们为常用的生物信息学和分析工具构建了 Conda 软件包,我们强烈推荐 Conda 作为客户安装和管理用于分析科学数据的软件环境的标准方法。
Conda 及其软件包生态系统使得创建、管理和共享复杂的计算技术(软件)环境变得更加容易,尤其是对于那些并非软件开发人员或系统管理员的用户而言。这使他们能够专注于进行科学研究和分析,而无需担心构建、安装和管理软件。
问:您现在最兴奋发布的是什么?
我们正试图让非 Anaconda 员工更容易参与 Conda 的开发和维护。我们正在将 Conda 及其开发流程转变为社区成员可以更快速、更轻松地贡献代码、对问题和 PR 进行分类以及为 Conda 及其软件包生态系统开发额外工具的方向。
我们从社区收到的反馈是,Conda 目前的结构使得代码有些难以理解和修改。我们希望简化并更好地模块化 Conda 的代码库,以便人们能够自信地进行代码开发,而无需担心造成严重错误。例如,求解器的性能和过于模糊的消息一直是用户面临的长期问题;我们一直在努力改进 Conda 的这些方面,并希望获得更多社区贡献。
Conda 应用程序侧重于创建环境和安装软件包。但是,要发展和维护生态系统,需要考虑超出 Conda 本身的因素。用户如何在不同的平台上可靠地再现环境?“下一代”Conda 软件包和配方应该是什么样的?我们如何打包和分发用其他语言和运行时编写的工具(例如 Julia)?社区如何将生态系统扩展到 Anaconda, Inc. 不“正式”支持的平台(例如开源 BSD)?社区一直在努力回答这些问题,我们对此感到兴奋,并希望继续鼓励大家参与。
问:用户反馈对于 Conda 的演进有多重要?
Conda 的路线图几乎完全由其用户群驱动。除了庞大的开源社区外,用户群还包括 Anaconda 的各种商业合作伙伴和客户。Anaconda 的商业版、团队版和企业版产品都基于 Conda,因此 Conda 的路线图必须包括支持这些解决方案的项目。我的一项重要职责是确保我们能够获得来自这个多元化用户群的输入,并平衡他们的需求,以防止任何一个群体对 Conda 的开发产生过大的影响。
过去,我们并没有像现在这样出色地进行用户群体之间反馈的沟通,让他们了解不同的需求。我们正在努力更加透明地说明我们做出某些设计决策或代码更改的原因,而不是过去那样。
问:您认为该项目哪些用例最有趣或最令人惊讶?Conda 使哪些软件成为可能?
我一直都知道 Conda 很受欢迎,但直到我开始在 Anaconda 工作,我才真正了解其影响的规模。截至 2020 年 10 月初,2020 年 Conda 平均月用户数为 413 万,2020 年出货的软件包数量超过 30 亿。我们已成为安装 PyTorch 和 TensorFlow 等框架的标准方法。
我喜欢发现人们在“安装数据科学软件的工具”之外找到了哪些 Conda 用例。正如我之前提到的,Conda 在生物信息学领域很受欢迎;Bioconda 频道专门用于打包生物学软件,其软件包数量已接近 8000 个。至少有一家 DNA 测序仪制造商使用它来分发其仪器的分析工具。我看到 Conda 被高性能计算中心用于支持在同一台超级计算机上拥有多个版本的各种软件环境。有用于天文学、CFD、GIS 等的 Conda 软件包,我知道至少有一个团队正在使用 Conda 打包机器人操作系统。
Conda 的一个优点,也许更多人应该了解的是,它不仅限于 Python,也不仅限于数据科学工具。如果您像生物信息学一样,需要多个工具来运行用多种语言(例如 Python、R 和 Perl)编写的脚本,那么 Conda 特别有用。如果工作流程中的各个步骤需要相同工具的不同版本,那么它就几乎必不可少,而使用大多数其他打包系统则难以处理此问题。
问:您展望一年后的项目将是什么样的?
作为一家公司,我们仍然致力于保持 Conda 开源,并希望让社区更容易参与进来。我们希望在 2020 年及以后促进社区对 Conda 的更多贡献;我希望一年后,Conda 的贡献中有一部分来自 Anaconda 以外的人员。
此外,我们已经启动了 Conda 工具社区组织,我希望看到其中一些工具从孵化阶段发展为完全成熟的、非 Anaconda 维护的工具,并在明年年初发布。
问:您认为开源项目的价值是什么?
最大的价值是现代世界中的一种社区所有权感。软件在现代世界中起着如此重要的作用,开源使得软件对每个人都更加可用。它使人们更容易获取软件;它使人们更容易满足自己的需求,而不是依赖供应商;它降低了使用和开发软件的门槛。
在 Anaconda,我们很自豪地支持员工参与开源计划。要了解有关 Conda 以及我们如何为其他开源项目做出贡献的更多信息,请访问我们的开源页面 开源页面。