Rust 2019 年调查结果

2020 年 4 月 17 日 · Rust 调查团队

翻译版本请访问 中文 | 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 语言关键方面的改进进行评分。

How has adoption level improved

How has async io improved

How has compile time improved

How has GUI development improved

How has IDE support improved

How has library support improved

How have stable language features and crates improved

How has Rust documentation improved

How has the learning curve improved

How has tools and support improved

总体而言,在 2018 版中,Rust 语言的许多方面都被认为“有所改进”。

会议和社区

我们注意到英语和非英语语言结果之间存在一些差异。在非英语语言调查子集中,大多数问题和关注点与英语语言调查子集相同。但是,非英语语言子集中有一个关注点/趋势很突出——希望 Rust 文档以他们的母语或他们填写调查问卷的语言提供。这在中文组中尤为明显,但这可能是由于中文组的代表性更高。

我们正在跟踪带有“Translation”GitHub 问题标签的 正在进行的翻译工作

我们收到了很多关于如何改进 Rust 并使其对更多人更友好的反馈。我们无法在这里列出所有反馈,因此这里总结了一些我们关注的反馈。

人们普遍要求提供更多关于 Rust 的学习资料。在专业知识方面,主要要求的是初级和中级学习资料。很多这些要求还专门要求视频内容。

人们提到的参与的常见障碍是社交焦虑和可访问性。其中一个常见的原因是,一些资源对于有阅读障碍的人来说很难阅读。

以下是针对“我们能采取什么行动让你感觉更受欢迎?”这个问题的一些具体回复。

  • 我觉得自己经验不足,技能不足,无法参与 Rust 社区
  • 宣传更多的新人贡献/参与方式
  • 更完善的指导,在线课程
  • 制作关于如何为编译器贡献代码的视频教程。我很想贡献,但我感到很害怕
  • 对于新人来说,很难找到资源来了解 Rust 如何在开源项目中使用,因此他们在学习语言时无法看到实际应用。
  • 更多教程/博客,以完全初学者的身份解释简单的 Rust 和编码概念
  • 更多中级教程。我们已经有一百万个“Rust 入门”教程了。
  • 更小的帮助小组——社交焦虑让我很难在 Discord 上说话,例如
  • 不要在欧洲联盟时间很晚的时候举行同步会议。减少同步会议的次数,或者更一致地发布和汇总团队会议的会议记录。

这些问题是我们希望在 2020 年及以后解决的问题。

谁在使用 Rust,以及用于什么?

How often do you use Rust

Rust 的日常使用率略有上升,为 27.63%(去年略低于 25%,2017 年为 17.5%)。日常或每周使用率也继续略有上升。今年为 68.52%,去年为 66.4%,2017 年为 60.8%。

How would you rate your Rust expertise

我们还询问用户如何评价他们的 Rust 专业知识——在“7”附近有一个明显的峰值。

How would you rate your Rust expertise

为了更深入地了解这一点,我们将用户对自身 Rust 专业知识的评价与他们使用 Rust 的时间长度相关联。

What title best matches your role for Rust users

为了更广泛的背景,我们调查了全职使用 Rust 的用户在他们的组织中倾向于担任什么职位(调查受访者可以选择多个职位)。

毫无疑问,Rust 用户最常见的职位是程序员/软件工程师。

What industry do you work in for Rust users

为了获得更多背景信息,我们请 Rust 调查受访者确定他们所在的行业。

对于全职使用 Rust 的用户来说,最常见的行业是后端 Web 应用程序。

Size of summed Rust projects

大多数 Rust 项目(43%)的代码行数在 1,000-10,000 行之间。中等规模到大型规模的 Rust 项目(总代码行数超过 10,000 行)继续呈上升趋势。它们从 2016 年的 8.9% 增长到 2017 年的 16%,2018 年的 23%,到 2019 年的 **34%**。

为什么不使用 Rust?

一个友好的 Rust 社区的重要组成部分是接触非用户。

Why did you stop using Rust?

当我们询问为什么有人停止使用 Rust 时,最常见的回复是“我的公司不使用 Rust”——这表明 Rust 的采用率仍然是最大的原因。其次是学习曲线、缺少必要的库、切换到 Rust 后速度变慢以及缺乏 IDE 支持,这些是用户停止使用 Rust 的最常见原因。

Why have you never used Rust?

对于表示从未使用过 Rust 的用户来说,大多数人表示“我还没有学习 Rust,但我想要学习”或“我的公司不使用 Rust”——再次表明采用率是主要障碍。

为了更广泛的背景信息,我们还调查了非 Rust 用户认为最适合他们角色的职位。

What title best matches your role for non Rust users

与 Rust 用户一样,最常见的职位是程序员/软件工程师。

What industry do you work in for non Rust users

与 Rust 用户一样,最常见的行业是后端 Web 应用程序。

I would use Rust more often if...

我们还询问用户什么会促使他们更频繁地使用 Rust。大多数人表示,如果他们的公司采用 Rust,如果 Rust 有更多他们需要的库,以及如果 IDE 支持更好,他们会更频繁地使用 Rust。除了这些原因之外,最常见的理由是需要改进学习曲线和互操作性。

由于采用率似乎是阻止一些受访者使用 Rust 的最大问题,让我们更深入地研究一下。

Rust 采用率——更深入地研究

首先,我们询问我们可以做些什么来提高 Rust 的采用率。

How can we improve Rust for better adoption

一些用户给出了具体的例子

  • “尽可能平滑的学习曲线,对于小型企业来说,即使是 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

What dependencies are 1.0 or above

我们还询问用户使用多少个依赖项的版本为 1.0 或更高。

  • 0.8% 的用户表示“全部”
  • 6.7% 的用户表示“大多数”
  • 65.9% 的用户表示“一些”
  • 5.2% 的用户表示“没有”
  • 21.4% 的用户表示“我不知道”

IDE 和工具——更深入地研究

Rust 的 IDE 支持也被认为是采用率的障碍。

What editor are you using

当我们询问用户使用什么编辑器时,Vim 和 VSCode 远远是最受欢迎的,其次是 Intellij。

我们还询问用户使用什么 IDE 设置

  • 43.3% 的用户表示 RLS
  • 21.7% 的用户表示 Intellij
  • 15.2% 的用户表示 Rust-analyzer
  • 12.4% 的用户表示没有(或 CTAGS)
  • 4.2% 的用户表示仅 Racer

What platform are you developing on

至于用户开发的平台——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 以其显著的学习曲线而闻名。

How long did it take to be productive

大约 37% 的 Rust 用户在使用 Rust 不到一个月的时间内就感觉到了生产力——这与去年的百分比(40%)相差不大。超过 70% 的用户在第一年内就感觉到了生产力。不幸的是,与去年一样,用户仍然面临着挑战——21% 的用户表示他们还没有感觉到生产力。

Expertise level of respondents who don't feel productive yet

作为兴趣点,我们提取了那些还没有感觉到生产力的用户子集,并绘制了他们对自身 Rust 专业知识的评价。这表明,那些还没有感觉到生产力的用户,他们的 Rust 专业知识水平处于初级到中级——这些群体最需要我们的学习资料、文档等的帮助。

互操作性——更深入地研究

多年来,一些用户表达了希望 Rust 与其他语言更具互操作性的愿望。

What languages would you want to use with Rust

当我们询问用户希望 Rust 与哪些语言互操作时,收到了各种各样的答案,但 C 语言占据主导地位,其次是(有点令人惊讶的是)R 语言,紧随其后的是 C++。需要注意的是,受访者可以选择多个语言来回答这个问题 - 这些百分比是基于总的回复。

What platforms are you targeting

在应用程序的目标平台方面,Linux 仍然是首选,占 36.9%,其次是 Windows,占 16.3%。紧随 Windows 的是 macOS 和 WebAssembly,分别占 14%。我们还看到越来越多的用户将目标平台设为 Android 和 Apple iOS。

结论

总的来说,我们的用户表示,生产力仍然是他们工作中一个重要的目标(无论是否使用 Rust)。结果表明,阻碍 Rust 使用的突出问题是采用率。学习曲线仍然是一个挑战 - 我们似乎最需要改进的是对 **中级** 用户的后续支持 - 但库和工具也是如此。

感谢所有参与本次调查的人 - 这些结果对我们来说非常有参考价值 - 特别是关于如何改进 Rust 语言本身以及整个 Rust 生态系统。我们期待在 2020 年及以后继续为你们工作,并与你们合作!