Rust 2017 年度调查结果

2017 年 9 月 5 日 · Jonathan Turner

又到了一年一度我们通过广泛征集社区(包括 Rust 用户和非用户)的意见来审视项目进展的时候了。哇,大家的反响真是热烈!

今年我们收到了 5,368 份回复这比去年多了 2,000 多份回复

大家的反馈规模既令人振奋又令人感动,我们努力阅读了所有评论和建议。大家分享了许多有用的想法和经验,我们对此深表感谢。事不宜迟,我们来看看结果。

Chart: 66.9% Rust users, 9.9% stopped using, 23.2% never used

和去年一样,三分之二的回复来自 Rust 用户,其余来自非用户。今年,我们区分了“不使用 Rust”的人群,以便更好地区分曾经使用但已停止使用 Rust 的人和从未接触过 Rust 的人。看到这么多开发者愿意帮助我们改进 Rust(即使他们不使用!),以便让 Rust 能够触及更多的人,这令人鼓舞。

我们将在报告后面部分详细讨论 Rust 非用户,但首先,我们来看看 Rust 用户的回复。

Rust 使用情况

Chart: 0.5% less than a day, 4.2% less than a week, 13.1% less than a month, 39.7% less than a year, 42.5% over a year (悬停查看更多信息)

今年,我们看到有经验的 Rust 用户数量不断增长,“使用一年以上”的用户增长到 42% 以上(高于去年的 30%)。初学者群体也非常庞大,“使用不足一个月”的用户约占 18%,这意味着尽管用户基础不断扩大,我们每月仍能吸引接近五分之一的新用户。

Chart: 36.5% less 1000 lines, 46.3% 1000 to 10000 lines, 14.2% 10000 to 100000 lines, 2.1% over 100000, 0.9% don't know (悬停查看更多信息)

人们正在使用越来越多的 Rust 代码,中型和大型项目的代码行数占比自去年以来几乎翻了一番,现在占受访者的 16%(高于去年的 8.9%)。这表明人们越来越有兴趣在更大规模的项目中使用 Rust,并且越来越需要支持这种增长的工具。

Chart: 17.5% daily, 43.3% weekly, 24.4% monthly, 14.9% rarely

尽管开发者使用的代码量不断增加,但每日和每周用户的比例略有下降。每日用户从 19% 降至 17.5%,每周用户从 48.8% 降至 43.3%。这可能是我们增长阶段的自然过渡,因为更广泛的开发者群体开始使用 Rust。

迈向稳定

Chart: 92.5% no, 7.5% yes

去年,我们在编译器发布导致的破坏性变更方面取得了巨大进展。去年,16.2% 的受访者表示升级到新的稳定版 Rust 编译器会破坏他们的代码。今年,这个数字已降至受访者的 7.5%。这是一个巨大的改进,也是我们引以为豪的成就,但我们将继续努力将其进一步降低。

Chart show strong support for nightly and current stable releases

开发者大多选择使用 nightly 或最近的稳定版本(部分使用 beta),这表明开发者渴望并且能够快速升级。这比去年开发者使用版本范围更广的情况稍微简化了支持结构。

稳定版用户目前占 Rust 用户的 77.9%。不幸的是,尽管我们在过程宏方面付出了努力,并帮助 Serde 等 crate 迁移到稳定版,但我们仍需要努力推广用户从 nightly Rust 编译器迁移出来。今年的数据显示 nightly 用户有所增加,目前有 1,852 票,占使用 nightly 的受访者的 51.6%,高于去年的 48.8%。

我们如何使用 Rust

Chart: 90.2% rustup, 18.9% linux distros, 5% homebrew, 4.7% official .msi, 3.1% official tarball, 1.4% official mac pkg (悬停查看更多信息)

Rust 工具链中的一大成功是 rustup,它是 Rust 工具链安装器。去年,我们看到人们安装 Rust 的方式多种多样。今年,许多人已转向使用 rustup 作为主要的 Rust 安装方式,总计 3,205 份回复,占比从去年的 52.8% 提高到 90.2%

Chart: 80.9% Linux, 35.5% macOS, 31.5% Windows, 3.2% BSD-variant

Linux 仍然是 Rust 开发者选择的主要平台之一。值得注意的是,Windows 作为开发平台的使用率也有所上升,在总计 3,588 名受访者中有 1,130 人使用,占比达到受访者的 31.5%,高于去年的 27.6%。

Chart: 91.5% Linux, 46.7% Windows, 38.2% macOS, 16.8% embedded, 13.2% WebAssembly and asm.js, 9.9% Android, 8.9% BSD-variant, 5.3% Apple iOS

接下来,我们询问了大家使用 Rust 项目的目标平台。虽然桌面操作系统在这里占比相似,但我们看到其他目标平台的范围也在不断扩大。Android 和 iOS 分别占 9.9% 和 5.3%,健康发展,两者都比去年的百分比高出近 10 倍。嵌入式领域自去年个位数百分比以来也取得了显著增长。总体而言,交叉编译自去年同期以来有了相当大的增长。

Chart: 45.8% vim, 33.8% vscode, 16.1% intellij, 15.7% atom, 15.4% emacs, 12.2% sublime, 1.5% eclipse, 1.5% visual studio

在编辑器方面,vim 仍然占据主导地位,但我们看到 VSCode 的采用率健康增长,达到 34.1%(高于去年的 3.8%)。这一增长无疑得益于 VSCode 是首批支持 Rust Language Server 的平台之一。

Chart: 4.4% full-time, 16.6% part-time, 2.9% no but company uses Rust, 57.6% no, 2.4% not sure, 16.1% not applicable (悬停查看更多信息)

Rust 在工作场所的使用也在持续增长。今年,4.4% 的受访者全职使用 Rust,16.6% 的受访者兼职使用 Rust,均高于去年的 3.7% 全职和 16.1% 兼职。

Two charts part-time: 2016: 29.6% less than 1000 lines, 55.3% 1000 to 10000 lines, 14.5% 10000 to 100000 lines, 0.6% 100000 lines. 2017: 18.9% less than 1000 lines, 56% 1000 to 10000 lines, 23.1% 10000 to 100000 lines, 2% more than 100000 lines

在公司中兼职使用 Rust 的用户自去年以来在大型项目中的使用有所增长,中型和大型项目在总项目中所占的比例这次有所提高。

Two charts full-time: 2016: 4.4% less than 1000 lines, 42.6% 1000 to 10000 lines, 39.7% 10000 to 100000 lines, 13.2% more than 100000 lines. 2017: 1.9% less than 1000 lines, 27.9% 1000 to 10000 lines, 52.6% 10000 to 100000 lines, 17.5% more than 100000 lines

同样,全职使用 Rust 的商业用户在中型和大型项目中所占比例也有所提高,代码行数超过 100,000 行的项目几乎占所有全职商业受访者的 18%,而 10,000-100,000 行范围内的项目占比从 39.7% 大幅增加到 52.6%

社区包容性感受

chart: 75.1% feel welcome, 1.3% don't feel welcome, 23.6% don't know (悬停查看更多信息)

Rust 社区一个重要目标是成为一个对新用户(无论是当前用户还是未来的潜在用户)都热烈欢迎的社区。我们很高兴看到超过四分之三的受访者表示他们在 Rust 社区感受到了欢迎,另有 23.6% 的受访者表示不确定。

chart showing 81.4% not underrepresented, and a variety of underrepresented, with no category above 5%

受访者的群体构成与去年基本持平。多样性和包容性仍然是 Rust 项目在各个层面的重要目标。Rust Bridge 倡议旨在入门阶段实现多样性。今年启动的 Rust Reach 项目汇集了在 Rust 世界中代表性不足的人群的广泛专业知识,并将他们与 Rust 团队成员配对,使 Rust 更容易被更广泛的受众所接受。

已停止使用 Rust

今年新增了将已停止使用 Rust 的人与从未接触过 Rust 的人区分开来,以便更好地了解他们停止使用的原因。首先,我们来看看他们是什么时候停止使用的。

chart: 3.2% less than a day, 18.5% less than a week, 43.1% less than a month, 30.2% less than a year, 4.9% more than a year (悬停查看更多信息)

这里我们遇到的第一个惊喜是人们在停止使用 Rust 之前尝试了多久。我们最初的猜测是,如果 Rust 不适合他们或他们的项目,人们会在第一天,或者最多第一周就放弃使用。然而,我们看到的是,人们平均尝试 Rust 的时间比我们预想的长得多。

已停止使用 Rust 的用户反馈主题

  • 23% 的受访者认为 Rust 太难使用
  • 20% 的受访者表示他们没有足够的时间有效地学习和使用 Rust。
  • 10% 的受访者认为工具不够成熟
  • 5% 的受访者表示他们需要更好的 IDE 支持
  • 其余用户提到了需要在工作中获得对 Rust 的支持,或者他们已经完成了需要使用 Rust 的项目,或者因为Rust 的语法望而却步,或者想不到要构建什么项目,或者与Rust 社区有过糟糕的互动

未使用 Rust

chart: 666 company doesn't use Rust, 425 Rust is too intimidating hard to learn or too complicated, 295 Rust doesn't solve a problem for me, 255 Rust doesn't have good IDE support, 209 Rust doesn't have libraries I need, 161 Rust seems too risky for production, 89 Rust doesn't support platforms I need, 73 Rust doesn't have tools I need

尽管学习曲线和语言复杂性仍然是阻碍人们学习 Rust 的因素,但许多人普遍反馈的一点是,目前活跃的 Rust 商业项目还不够多,无法让人们参与其中。对于一些人来说,如果能有强烈的动机,他们是可以克服学习曲线的。

改进领域

最后,我们在调查问卷末尾提供了一个自由填写区域,征集 Rust 可以改进的地方。在介绍我们看到的反馈主题之前,我们要向所有提交深思熟虑评论的受访者致以诚挚的“感谢!”。其中包含许多非常好的想法,我们将把这些想法提供给相关的子团队用于未来的规划。接下来,我们来看看今年重要的反馈主题。

  • 17% 的回复强调了需要改进语言的人体工程学 (ergonomics)。人们提出了许多建议,关于如何改进 Rust 的日常使用体验,以便更轻松地进行原型设计,更方便地进行异步编程,以及在使用更多数据结构类型时更灵活。与之前一样,对于借用检查器 (borrow checker) 和生命周期 (lifetimes) 的体验能够更轻松、更顺畅的需求仍然是一个热门话题。
  • 16% 的回复提到了创建更好的文档的重要性。这些主题包括帮助用户从其他语言过渡,创建更多示例和样本项目,帮助人们开始使用各种任务或 crate,以及创建视频资源来辅助学习。
  • 15% 的回复指出需要改进库支持。人们提到了对一组强大的核心库的需求,寻找高质量 crate 的困难,crate 和 crate 生态系统的整体成熟度,以及需要涵盖广泛领域(例如 web、GUI、网络、数据库等)的库。此外,人们还提到,根据库的 API 设计和文档量,入门使用库可能会很困难。
  • 9% 的回复鼓励我们继续构建IDE 支持。同样,今年再次强调了相当一部分开发者需要在他们的 IDE 和工具中获得 Rust 支持。Rust Language Server 作为一项广泛支持 IDE 的持续努力,被认为是今年人们最期待的项目之一,评论指出这些努力需要达到稳定状态,并将支持扩展到其他 IDE,同时继续增加可用功能的数量。
  • 8% 的回复专门提到了学习曲线。随着越来越多的开发者尝试学习 Rust 或将其教授给同事和朋友,他们发现缺乏足够的资源来有效地完成这项工作,而且 Rust 本身也难以提供顺畅的学习体验。
  • 其他重要的主题包括需要:更快的编译时间更多企业的 Rust 支持(包括工作机会)、更好的语言互操作性改进的工具链更好的错误信息更多的市场推广更少的市场推广,以及改进对 Web Assembly 的支持

结论

今年的反响让我们惊叹不已。不仅回复数量比去年大幅增加,我们还看到了人们使用 Rust 的领域越来越多样化。非常感谢大家的深思熟虑的回复。我们期待利用您的反馈、建议和经验来帮助我们规划明年。