为异步 Rust 建立共同愿景

2021 年 3 月 18 日 · Niko Matsakis 代表 异步基础工作组

异步基础工作组 相信 Rust 可以成为构建分布式系统的最受欢迎选择之一,从嵌入式设备到基础云服务。无论他们使用它做什么,我们希望所有开发人员都喜欢使用异步 Rust。为了实现这一点,我们需要将异步 Rust 从目前的“MVP”状态提升到一个新的高度,使其对每个人都触手可及。

我们正在发起一项协作努力,共同构建一个关于异步 Rust 的 愿景文档我们的目标是让整个社区参与到一个集体的想象行动中:我们如何才能使使用异步 I/O 的端到端体验不仅成为一种务实的选择,而且成为一种令人愉快的体验?

愿景文档从现状开始...

“愿景文档”从一个 角色阵容 开始。每个角色都与一个特定的 Rust 值(例如,性能、生产力等)相关联,这些值由他们的背景决定;这个背景也影响了他们在使用 Rust 时带来的期望。

让我向你介绍一个角色,Grace。作为一名经验丰富的 C 开发人员,Grace 习惯于高性能和控制,但她喜欢使用 Rust 来获得内存安全。以下是她的传记

Grace 已经编写 C 和 C++ 多年了。她习惯于破解大量底层细节,以从代码中获得最大的性能。她也经历过因 C 中的内存错误而导致的史诗级调试会话。她对 Rust 感兴趣:她喜欢获得与 C 相同的控制和性能,但同时也能获得内存安全带来的生产力优势。她目前正在尝试将 Rust 引入她工作中的一些系统,并且她也在考虑将 Rust 用于一些新的项目。

对于每个角色,我们将编写一系列 “现状”故事,描述他们在努力实现目标时遇到的挑战(并且通常以戏剧性的方式失败!)。这些故事并非虚构。它们是人们使用异步 Rust 的真实体验的集合,这些体验是通过访谈、博客文章和推文收集的。为了让你了解,我们目前有两个例子:一个例子是 Grace 必须调试她编写的自定义 Future,另一个例子是 Alan(一位来自 GC 语言的程序员)遇到堆栈溢出并必须调试原因

编写“现状”故事有助于我们弥补 知识诅咒:那些从事异步 Rust 工作的人往往是异步 Rust 的专家。我们已经习惯了 解决方法,并且我们知道一些小技巧可以帮助你摆脱困境。这些故事帮助我们评估所有这些小问题对那些还在学习异步 Rust 的人产生的累积影响。这为我们提供了优先排序所需的数据。

...然后说明我们将如何改变它

当然,愿景文档的最终目标不仅仅是告诉我们现在在哪里,而是我们要到哪里以及如何到达那里。一旦我们在现状故事方面取得了良好的进展,下一步将是开始集思广益,讨论关于 “美好未来” 的故事。

美好未来故事讲述了 2 或 3 年后的异步世界可能是什么样子。通常,它们会重演与“现状”故事相同的场景,但结局更美好。例如,也许 Grace 可以使用一个调试工具来诊断她卡住的任务并告诉她这些任务被阻塞在什么类型的 Future 上,这样她就不用在日志中搜索了。也许编译器可以警告 Alan 可能发生的堆栈溢出,或者(更妙的是)我们可以调整 select 的设计,以避免这个问题。我们的想法是要有雄心壮志,首先要关注我们想要创造的用户体验;我们将在沿途找出步骤(如果需要,我们也可能会调整目标)。

让整个社区参与进来

异步愿景文档提供了一个论坛,异步 Rust 社区可以在其中规划为异步 Rust 用户提供一个很棒的整体体验。异步 Rust 的设计初衷并非要采用“一刀切”的方式,我们也不想改变这一点。我们的目标是为端到端体验建立一个共同的愿景,同时保留我们构建的松散耦合、探索导向的生态系统。

我们用来编写愿景文档的过程鼓励积极的协作和“正和”思维。它从一个集思广益阶段开始,在这个阶段,我们的目标是收集尽可能多的“现状”和“美好未来”故事。这个集思广益阶段将持续六周,直到四月底。在前两周(直到 2021 年 4 月 2 日),我们只收集“现状”故事。在那之后,我们将接受“现状”和“美好未来”故事,直到集思广益阶段结束。最后,为了结束集思广益阶段,我们将为 奖项(如“最幽默的故事”或“最支持的贡献者”)选出获奖者。

集思广益阶段结束后,工作组负责人将开始将各种故事和美好未来组合成一个连贯的草案。这个草案将由社区和 Rust 团队进行审查,并根据反馈进行调整。

想帮忙吗?

如果你想帮助我们编写愿景文档,我们很乐意你贡献你的经验和愿景!现在,我们专注于创建现状故事。我们正在寻找能够编写 PR 或在问题或其他地方谈论他们经验的人。如果你想开始,请查看 现状故事模板——它包含了你需要打开 PR 的所有信息。或者,你可以查看 如何编写愿景 页面,它详细介绍了整个愿景文档过程。