Conda 调查结果
Anaconda 在 2022 年底对 conda 社区进行了调查。这篇文章回顾了我们从调查中学到的内容,以及它如何影响 conda 的未来方向。
大约在同一时间,Python 软件基金会发布了他们(规模更大得多)的 Python 打包调查的结果。这两项调查提出了一些相似的问题和一些不同的问题。当 PSF 调查的结果与 conda 社区特别相关时,我们会包含其中的见解。
虽然本次调查本身只有 72 份回复,并且绝不代表整个 conda 用户社区,但此处列出的汇总统计数据可能指出我们可能需要通过进一步研究或用户访谈跟进的特定问题领域。PSF 收到了 8774 份回复。
摘要包含几个部分
人们对 conda 的满意度如何?
conda 调查提出了 4 个问题,我们将把这些问题归入“满意度”类别
这里的情况大多是好的,但结果也突出表明,有些事情仍然需要改进。例如,在“Conda 是我首选的包管理器”中,61% 的人给出了“满意”的回答,但 25% 的人持中立态度,近 14% 的人给出了“不满意”的回答。这意味着 39% 的人不能说他们属于“满意”类别。对于其他三个问题,“满意”类别之外的数字分别为 28%、24% 和 32%。这些数字有所好转,但仍未达到我们期望的水平。有关这些数字背后的一些原因,请参阅下一节中的具体反馈。
哪些方面需要改进?
调查询问了受访者未来应优先考虑哪些更改。
速度
对速度的需求是最突出的主题
- 71% 的人优先考虑提速。
- 60% 的人使用 mamba,mamba 以其相对于标准 conda 求解器的速度而闻名。
一些个人回复
- "直接让 libmamba 成为默认求解器吧!!!!"
- "现在几乎 100% 的人都因为速度而使用 Mamba,只有在出现问题时才回退到 Conda。"
- "亲爱的女神,让求解器开箱即用更快。"
这项调查是在 2022 年 11 月和 12 月进行的,我们认为这是 conda 性能概况的一个转折点。22.11.0 conda 版本在调查窗口即将结束时发布,实现了并行软件包下载和解压,并从 conda-libmamba-solver
中删除了 experimental
标签(求解器在 2022 年 3 月的版本中添加)。在调查时,只有 19% 的受访者在使用 conda-libmamba-solver。
这些变化代表了多年来持续改进 conda 速度的努力。我们的下一次调查将告诉我们 conda 是否在加速方面取得成功……
更好的错误消息
紧随速度之后的是更有帮助的错误消息,占 65% 的受访者。
一些个人反馈
- "当它工作时,它非常棒。当它不工作时,诊断依赖项解析问题并发现发生了什么是非常痛苦的,导致出现诸如将 json 解析为 networkx 之类的临时工具以进行探索。"
- "依赖项解析冲突的可探索性。"
conda-libmamba-solver 的错误消息将很快得到改进,因为最新版本的求解器将集成到 conda 中。as the latest version of the solver gets integrated into conda.
更好的互操作性
改善与其他包管理器的互操作性是 62% 的受访者优先考虑的事项。人们使用多个包管理器的频率也印证了这一点。
除了 conda 之外,79% 的 conda 调查受访者还使用其他包管理器。75% 的所有受访者也使用 pip,55% 的人使用 mamba。
PSF 调查问卷询问“您使用哪些打包工具?”他们将包管理和环境管理混合在一起(conda 本身也是如此)
(注意:PSF 调查结果以蓝色轮廓显示。)
在此调查中,conda 的使用频率低于 6 个“标准”(且高度重叠)条目(pip、venv/virtualenv、PyPI、setuptools 和 wheel)以及 poetry。pip 的用户数量几乎是 venv 的两倍,venv 是第二受欢迎的回复。conda 紧随其后的是 pipenv 和 twine。conda-build 列在后半部分,有 4-5% 的受访者使用它。
(这只是时间上的一个快照,因此我们无法判断 conda 生态系统是否在 Python 生态系统中获得或失去关注度。)
PSF 调查问卷询问了几个与互操作性特别相关的问题。
当 PSF 要求受访者对这 4 个优先级进行排名时,排名最高(遥遥领先)的是“支持 Python 打包工具之间更好的互操作性”。最底部的是“支持 Python 打包与其他语言的打包工具之间的互操作性”。
其他几个问题表明,人们强烈倾向于只使用一种工具/工作流程进行包管理。
第一个问题是“我更喜欢有一个明确定义的“官方”工作流程”,75% 的人同意。第二个类似(但措辞相反)的问题是“多种工具的存在对 Python 打包生态系统有利吗?这里 46% 的人不同意这一说法,23% 的人持中立态度
我们如何处理这一切?
首先,我们注意到 Python 社区非常重视 Python 打包工具之间的互操作性,但对多种语言的支持却排在最后。这对 conda 来说既是好消息,也是坏消息。Conda 已经可以很好地与 pip 协同工作。不利之处在于,大多数 PSF 受访者并不优先考虑对多种语言的支持,而这正是 conda 的超能力之一。
PSF 受访者也显然更倾向于使用单一的打包工具包。 ... 但是,从这些调查中我们无法得知这一点。
conda 在何时使用?
行业和领域
略高于 40% 的受访者与学术界有关。由于学生加上教授/讲师的总人数不到 25%,因此这些学者中的很大一部分来自其他职位。特定领域构成了回复的长尾。
当被问及参与者在什么情况下使用 conda 时,81% 的人表示在工作中,只有 18% 的人表示与学校有关。72% 的人在开源项目中使用 conda。53% 的人将其用于“个人*”项目。
领域
该调查使用了 Anaconda Nucleus 站点上软件包目录中的类别,以询问 conda 在哪些应用领域中使用
数据使用和 ETL(67%,提取、转换和加载)以及机器学习和 AI(63%)是最常见的应用。可视化(54%)、打包(54%)和科学计算(53%)构成了下一个最大的群体。
conda 与什么一起使用?
软件包
conda 调查要求人们列出他们最常用的 5 个软件包。
这个问题有几个明显的领先者,超过一半的受访者使用 Numpy 和 Pandas。Matplotlib、Scipy 和 Scikit-learn 被 1/4 到 1/5 的受访者使用。
计算环境
Linux 是主要操作系统,使用率接近 70%,但 macOS 和 Windows 也相差不远,都在 50% 左右。VS Code 是明显首选的 IDE,使用率为 70%。Jupyter 平台紧随其后,两者都在 40% 左右。PyCharm 被 1/3 的参与者使用。
Python 是迄今为止使用最广泛的编程语言,使用率接近 100%。Shell、C/C++、R 和 SQL 的用户数量是 Python 的 1/3 到 1/4。
还有关于框架工具、CI 工具、机器学习框架和 ML 运营的数据。
数据
受访者对开放数据和专有数据的使用程度相同,两者的回复率都接近 80%。
列出了超过 33 种使用的数据格式。CSV 和 JSON 最受欢迎,每 7 个回复者中就有 6 个使用 CSV。
受访者列出了他们使用的 13 个数据库管理系统。SQLite (36%) 和 PostgreSQL (32%) 在该组中领先,其次是 MySQL (19%)。
工具
Microsoft Excel (35%) 和 R (31%) 是统计分析工具类别中最受欢迎的两种工具。
该调查询问了关于 ETL 和数据可视化工具使用的具体问题。 ... Jupyter (67%) 是数据可视化回复中的明显领先者,其次是 Plotly (35%)。列出了另外 23 种可视化工具,大多数只有一两个用户。
谁在使用 conda?
72 名回复者中有 71 名在工作中编写一些代码。
参与者经验
conda 组和 Python 组都具有相似的经验水平。 ... conda 调查询问了参与者的工作职能、行业和项目类型。
工作职能
最常见的角色是开发人员,其次是研究科学家。前 12 个角色可以大致分组
- 开发人员 (29.2%)
- 研究科学家 (27.8%) 和应用科学家 (15.3%)
- 数据科学家 (22.2%)、数据工程师 (15.3%) 和 ML 科学家 (12.5%)
- 教授/讲师 (12.5%) 和学生 (11.1%)
- ML Ops (6.9%)、DevOps (5.6%) 和系统管理员 (4.2%)
- 项目经理 (4.2%)
人们可以选择多个工作职能。
非常感谢所有参与调查的人,感谢 Anaconda 的 Luc (Boaz) Douyon 进行 conda 调查,感谢 PSF 的 Shamika Mohanan 进行 Python 打包调查摘要。我们将在未来几年继续对 conda 社区进行调查。届时,您将在此处看到报告。
Dave Clements,谨代表 Conda 通讯团队