翻译版本请访问 中文 | Chinese
Rustaceans 们,大家好!
我们很高兴地公布我们第四次年度 Rust 社区调查的结果。在深入分析之前,我们要对所有抽出时间填写调查问卷的人表示衷心的感谢!你们的参与对 Rust 年复一年地不断改进至关重要!
让我们先看看调查受众。
调查受众
调查问卷以 **14** 种语言提供,我们收到了 **3997** 份回复。
以下是我们收到的回复的语言分布。
- 英语:69.6%
- 中文:10.8%
- 德语:4.3%
- 法语:3.3%
- 日语:3.0%
- 波兰语:1.2%
- 葡萄牙语:1.2%
- 西班牙语:0.9%
- 韩语:0.8%
- 意大利语:0.6%
- 瑞典语:0.5%
- 越南语:0.2%
在 2019 年的调查中,82.8% 的受访者表示他们使用 Rust,7.1% 的受访者表示他们目前没有使用 Rust,但过去使用过,10.1% 的受访者表示他们从未使用过 Rust。
如果我们将其与 2018 年的调查进行比较——当时 75% 的受访者表示他们使用 Rust,8% 的受访者表示他们目前没有使用 Rust,但过去使用过,8% 的受访者表示他们从未使用过 Rust——2019 年使用 Rust 的受访者更多。
回顾 Rust 2018
2018 年 12 月,我们发布了 Rust 2018 版——Rust 1.31.0。在 2019 年的调查中,92% 的 Rust 用户表示他们正在使用新版本。85% 的用户表示升级到 Rust 2018 版很容易。
接下来,我们请用户对 Rust 语言关键方面的改进进行评分。
总体而言,在 2018 版中,Rust 语言的许多方面都被认为“有所改进”。
会议和社区
我们注意到英语和非英语语言结果之间存在一些差异。在非英语语言调查子集中,大多数问题和关注点与英语语言调查子集相同。但是,非英语语言子集中有一个关注点/趋势很突出——希望 Rust 文档以他们的母语或他们填写调查问卷的语言提供。这在中文组中尤为明显,但这可能是由于中文组的代表性更高。
我们正在跟踪带有“Translation”GitHub 问题标签的 正在进行的翻译工作。
我们收到了很多关于如何改进 Rust 并使其对更多人更友好的反馈。我们无法在这里列出所有反馈,因此这里总结了一些我们关注的反馈。
人们普遍要求提供更多关于 Rust 的学习资料。在专业知识方面,主要要求的是初级和中级学习资料。很多这些要求还专门要求视频内容。
人们提到的参与的常见障碍是社交焦虑和可访问性。其中一个常见的原因是,一些资源对于有阅读障碍的人来说很难阅读。
以下是针对“我们能采取什么行动让你感觉更受欢迎?”这个问题的一些具体回复。
- 我觉得自己经验不足,技能不足,无法参与 Rust 社区
- 宣传更多的新人贡献/参与方式
- 更完善的指导,在线课程
- 制作关于如何为编译器贡献代码的视频教程。我很想贡献,但我感到很害怕
- 对于新人来说,很难找到资源来了解 Rust 如何在开源项目中使用,因此他们在学习语言时无法看到实际应用。
- 更多教程/博客,以完全初学者的身份解释简单的 Rust 和编码概念
- 更多中级教程。我们已经有一百万个“Rust 入门”教程了。
- 更小的帮助小组——社交焦虑让我很难在 Discord 上说话,例如
- 不要在欧洲联盟时间很晚的时候举行同步会议。减少同步会议的次数,或者更一致地发布和汇总团队会议的会议记录。
这些问题是我们希望在 2020 年及以后解决的问题。
谁在使用 Rust,以及用于什么?
Rust 的日常使用率略有上升,为 27.63%(去年略低于 25%,2017 年为 17.5%)。日常或每周使用率也继续略有上升。今年为 68.52%,去年为 66.4%,2017 年为 60.8%。
我们还询问用户如何评价他们的 Rust 专业知识——在“7”附近有一个明显的峰值。
为了更深入地了解这一点,我们将用户对自身 Rust 专业知识的评价与他们使用 Rust 的时间长度相关联。
为了更广泛的背景,我们调查了全职使用 Rust 的用户在他们的组织中倾向于担任什么职位(调查受访者可以选择多个职位)。
毫无疑问,Rust 用户最常见的职位是程序员/软件工程师。
为了获得更多背景信息,我们请 Rust 调查受访者确定他们所在的行业。
对于全职使用 Rust 的用户来说,最常见的行业是后端 Web 应用程序。
大多数 Rust 项目(43%)的代码行数在 1,000-10,000 行之间。中等规模到大型规模的 Rust 项目(总代码行数超过 10,000 行)继续呈上升趋势。它们从 2016 年的 8.9% 增长到 2017 年的 16%,2018 年的 23%,到 2019 年的 **34%**。
为什么不使用 Rust?
一个友好的 Rust 社区的重要组成部分是接触非用户。
当我们询问为什么有人停止使用 Rust 时,最常见的回复是“我的公司不使用 Rust”——这表明 Rust 的采用率仍然是最大的原因。其次是学习曲线、缺少必要的库、切换到 Rust 后速度变慢以及缺乏 IDE 支持,这些是用户停止使用 Rust 的最常见原因。
对于表示从未使用过 Rust 的用户来说,大多数人表示“我还没有学习 Rust,但我想要学习”或“我的公司不使用 Rust”——再次表明采用率是主要障碍。
为了更广泛的背景信息,我们还调查了非 Rust 用户认为最适合他们角色的职位。
与 Rust 用户一样,最常见的职位是程序员/软件工程师。
与 Rust 用户一样,最常见的行业是后端 Web 应用程序。
我们还询问用户什么会促使他们更频繁地使用 Rust。大多数人表示,如果他们的公司采用 Rust,如果 Rust 有更多他们需要的库,以及如果 IDE 支持更好,他们会更频繁地使用 Rust。除了这些原因之外,最常见的理由是需要改进学习曲线和互操作性。
由于采用率似乎是阻止一些受访者使用 Rust 的最大问题,让我们更深入地研究一下。
Rust 采用率——更深入地研究
首先,我们询问我们可以做些什么来提高 Rust 的采用率。
一些用户给出了具体的例子
- “尽可能平滑的学习曲线,对于小型企业来说,即使是 4-6 周才能提高生产力也是一个很大的要求”
- “更高的市场渗透率”
- “更稳定的库”
- “一个像 Rails、Django 和 Phoenix 一样的全栈 Web 框架”
- “更好的文档,更多示例,关于使用哪些板条箱的建议”
- “更多地强调它是 C 或 C++ 的更安全替代方案(并且通常应该成为默认选择)。“
- “改进编译时间。至少与 Go 一样快的开发构建编译速度对我们来说是考虑 Rust 的门槛。(发布构建可以很慢”
- “更好的平台支持”
- “安全性和性能,经济高效且“绿色”(低碳足迹)语言”
- “面向 ARM 的嵌入式开发”
- “更好的 GUI 框架,类似于 Qt 或通过绑定直接使用 Qt。”
大多数人表示,Rust 的成熟度——例如更多库和完整的学习资源以及更成熟的生产能力——会使 Rust 更具吸引力。
让我们更深入地研究一下这些方面,首先是需要更多成熟的库。
库——更深入地研究
当我们询问用户他们认为对 Rust 生态系统至关重要的库时,以下是前十个回复
- serde
- rand
- tokio
- async
- clap
- regex
- log
- futures
- hyper
- lazy_static
我们还询问用户使用多少个依赖项的版本为 1.0 或更高。
- 0.8% 的用户表示“全部”
- 6.7% 的用户表示“大多数”
- 65.9% 的用户表示“一些”
- 5.2% 的用户表示“没有”
- 21.4% 的用户表示“我不知道”
IDE 和工具——更深入地研究
Rust 的 IDE 支持也被认为是采用率的障碍。
当我们询问用户使用什么编辑器时,Vim 和 VSCode 远远是最受欢迎的,其次是 Intellij。
我们还询问用户使用什么 IDE 设置
- 43.3% 的用户表示 RLS
- 21.7% 的用户表示 Intellij
- 15.2% 的用户表示 Rust-analyzer
- 12.4% 的用户表示没有(或 CTAGS)
- 4.2% 的用户表示仅 Racer
至于用户开发的平台——Linux 和 Windows 继续占据主导地位。
- 55% 的 Rust 用户在 Linux 上开发
- 24% 的用户在 Windows 上开发
- 23% 的用户在 macOS 上开发
我们发现,绝大多数用户使用当前的 Rust 稳定版本(63%)。需要注意的是,调查允许受访者选择多个他们使用的 Rust 版本选项。
- 30.5% 的用户使用 nightly 版本
- 2.5% 的用户使用 Beta 版本
- 63% 的用户使用当前的稳定版本
- 3.1% 的用户使用以前的稳定版本
- 0.6% 的用户使用自定义分支
- 0.3% 的用户不知道
令人惊讶的是,在工作流程中使用 Nightly 编译器的用户数量下降到了 20%。去年超过了 56%。
学习曲线——更深入地研究
Rust 以其显著的学习曲线而闻名。
大约 37% 的 Rust 用户在使用 Rust 不到一个月的时间内就感觉到了生产力——这与去年的百分比(40%)相差不大。超过 70% 的用户在第一年内就感觉到了生产力。不幸的是,与去年一样,用户仍然面临着挑战——21% 的用户表示他们还没有感觉到生产力。
作为兴趣点,我们提取了那些还没有感觉到生产力的用户子集,并绘制了他们对自身 Rust 专业知识的评价。这表明,那些还没有感觉到生产力的用户,他们的 Rust 专业知识水平处于初级到中级——这些群体最需要我们的学习资料、文档等的帮助。
互操作性——更深入地研究
多年来,一些用户表达了希望 Rust 与其他语言更具互操作性的愿望。
当我们询问用户希望 Rust 与哪些语言互操作时,收到了各种各样的答案,但 C 语言占据主导地位,其次是(有点令人惊讶的是)R 语言,紧随其后的是 C++。需要注意的是,受访者可以选择多个语言来回答这个问题 - 这些百分比是基于总的回复。
在应用程序的目标平台方面,Linux 仍然是首选,占 36.9%,其次是 Windows,占 16.3%。紧随 Windows 的是 macOS 和 WebAssembly,分别占 14%。我们还看到越来越多的用户将目标平台设为 Android 和 Apple iOS。
结论
总的来说,我们的用户表示,生产力仍然是他们工作中一个重要的目标(无论是否使用 Rust)。结果表明,阻碍 Rust 使用的突出问题是采用率。学习曲线仍然是一个挑战 - 我们似乎最需要改进的是对 **中级** 用户的后续支持 - 但库和工具也是如此。
感谢所有参与本次调查的人 - 这些结果对我们来说非常有参考价值 - 特别是关于如何改进 Rust 语言本身以及整个 Rust 生态系统。我们期待在 2020 年及以后继续为你们工作,并与你们合作!