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