重要提示:本文信息现已过时。请查看我们的新博客文章获取最新详情。
TL;DR:未来几个月,我们会重新设计志愿工作模式,让核心志愿者暂时放下审核社区贡献的工作。 如果你只是用 Exercism 学习或接受指导,这里没有你需要了解的内容(不过如果你感兴趣,也欢迎一读!)。 如果你是轨道维护者、想为 Exercism 做贡献,或者想报告 bug 或问题,那么请务必读一读 🙂
过去 6 个月里,我们花了很多时间探索 Exercism 的未来,畅想每一条语言轨道都做到最好的样子。 我们为目前已构建的一切感到无比自豪。 目前已收到的 85,000 条评价,见证了我们的社区在构建语言轨道、并借助这些轨道指导众多学员方面所做的出色工作。 最重要的是,我们相信自己才刚刚触及无限可能的一角。 对于 Exercism 的未来,我们有宏大的构想、满怀希望,也无比兴奋。 但要实现它们,我们首先需要解决一些潜藏在表面之下的根本问题。
其中最首要的,是要解决如何以健康、可持续的方式扩大志愿者社区这一难题。 Exercism 建立在数百名敬业志愿者的肩头之上,但如今其中很大一部分人感到精疲力竭,许多人因此离开了。 这背后的原因有很多,有些与 Exercism 直接相关,有些源于生活中的时间压力,还有些则与当下世界发生的种种大背景有关。 但我们已经非常清楚,我们需要设计并开发出一种更好的方式,让大家一起建设这个平台。
一直以来,我们尝试用开源软件(OSS)的模式来建设 Exercism,即由维护者审核来自更广泛社区的贡献。 这给我们带来了很多问题,也让维护者和贡献者都感到沮丧。 如果你想了解细节,我在下文有更深入的探讨;但简单来说,我们的核心志愿者如今把时间花在被动地充当看门人,而不是成为创新的创造者。 这对他们来说乐趣大减,也意味着 Exercism 失去了这些人过去为平台带来的魔力。
要解决这个问题,我们需要做两件事:
- 我们需要设计一套新的志愿工作体系,比传统的 OSS 模式更适合 Exercism。 到目前为止,我们已经投入了大量精力尝试,但没有成功。 所以我们打算抽出一些时间,在未来几个月里与志愿者一起,认真地把这件事设计好。
- 未来几个月,我们会在很大程度上暂停更广泛社区的贡献,让核心志愿者能够按自己的方式专注构建和开发轨道(或者,如果他们只想喘口气,也可以放个长假!)
我希望,通过退后一步、真正把这件事设计好,同时通过募资来扩充我们的教育团队,我们能让 Exercism 成为一个出色的志愿服务之地,并帮助它稳固未来。 与此同时,这些调整应该能让轨道比过去一年有更大的改进和成长空间,也能让维护者不再精疲力竭,而是在为 Exercism 工作的过程中更快乐、更有活力,与彼此的联系也更加紧密。
具体的变化
我们正在落实三项具体的变化。
使用论坛,而不是 GitHub Issues
我们会把 GitHub 完全空出来,让维护者专注于他们想推进的 issue。 我们会关闭大量此前为社区创建、供大家处理的 issue(并加上标签,这样将来需要时就能轻松重新打开),同时在大多数代码仓库中不再接受新的、未经邀请的 issue 或 PR。 如果你想讨论或报告什么,请改用论坛。 如果你提交未经邀请的 issue 或 PR,它会被自动关闭,并引导你前往论坛。
暂停更广泛社区的贡献
轨道将分为三类:
- 大多数拥有活跃维护者的轨道会暂停社区贡献,让维护者能够自主运作,或者休息一下。 (这些轨道的维护者可以申请取消强制的“一次审核”要求。 请通过 Slack 联系 Erik。)
- 一些拥有活跃维护者、且维护者主动希望继续接受社区贡献的轨道,会保持开放(如果你是维护者,并且更想采用这种方式而不是第 1 种,请通过 Slack 联系 Jonathan Middleton 商量)。
- 对于没有活跃维护者的轨道,其开发在这段时间内基本会暂停。
无论如何,我和 Erik 都会继续在合并前对工具类代码仓库的 PR 进行把关检查。
唯一的例外是,我们会继续接受解题思路和文章的 PR,并推行一项全组织范围的乐观合并策略,目标是让 Exercism 各处都有一批基础的解题思路,同时允许逐步改进,规则如下:
- 如果代码能解决该练习,并且在语法和语义上符合惯用法(也就是说,看起来像 $LANG 代码),就应该合并。 否则,应由 PR 作者修改。
- 如果维护者想修改内容(例如改进建议、做些调整、突出更好、可供替代或更符合惯用法的解法),应该在后续的 PR 中完成。
设计一套新的志愿工作体系
我们将组建一个社区委员会,与大家一起设计一套可持续、健康的志愿工作框架,支持我们继续前行,释放 Exercism 的潜力。 如果你关心 Exercism 的未来,并且想参与这个过程,请联系 Jonathan。
未来几个月,我们会按这些措施来推进。 在这段时间里,我们会持续考量所有事情,并计划在 2023 年 6 月前做出一些新的决定。 如果你有任何想法,欢迎在论坛发起话题!
后记:为什么我们的 OSS 模式已经失效
我们过去的模式是围绕 OSS 模式建立的。 它依赖这样的志愿者:他们加入 Exercism,在构建轨道上做出出色工作,然后被授予维护者权限,从而可以接受更广泛用户群体的贡献来改进轨道。
这听起来很不错,但存在一些严重的问题。 其中最突出的问题是,那些为 Exercism 增添最多魔力的人,最终却没有时间写代码、创造 Exercism,因为他们的时间都花在了回应社区贡献上。 这几乎从来不是维护者最初参与 Exercism 的原因,也不是他们喜欢的工作。 这有点像把一个热爱开发的人“晋升”为团队负责人,让他们去管理人,而不是写代码。 当时看起来或许是一次不错的晋升,但结果往往证明,人们从做管理中获得的乐趣,远不及写代码的一半。
它还依赖这样一个假设:更广泛社区贡献的总和,大于某位维护者本来可以独自做出的贡献。 但在 Exercism,情况几乎从来不是这样。 Exercism 本身很复杂,教育又很难,两者叠加,使得为 Exercism 做贡献成了一件复杂而困难的事。 无论是 Exercism 的技术运作方式,还是它在教育上的思路,都有大量东西需要学习和理解,因此大多数人的第一次贡献,都还处在摸索阶段。 这意味着他们最初的贡献相对较小,但也意味着几乎总是需要花大量精力去审核和调整。 这对维护者来说是相当耗时的工作。 事实上,审核所花的总时间(再加上所需的情境切换),意味着维护者在审核 PR 上投入的精力,往往比他们自己动手做还要多。 当然,也有少数例外,但在 99% 的情况下都是如此。 而且这往往让维护者更加痛苦,因为 PR 要解决的问题并不在他们的优先事项前列,结果就是那些他们知道真正重要的事情反而没做成。
最后,OSS 模式依赖贡献者从小的贡献做起,最终积累到足够的知识和参与频率,从而成为维护者。 在像软件库这样的 OSS 项目里,这一套相对有效(例如,某人在生产环境中使用某个库,并不断为其添加改进,最终积累出和原始作者一样多的知识)。 然而,在 Exercism 上,这种情况根本没有发生。 尽管过去 12 个月里我们合并了来自数千名贡献者的 PR,但只有极少数人成为了长期贡献者,成为维护者的更是少之又少。 这同样主要是因为 Exercism 的复杂性,但也因为它并不是一个自成一体、适合这种传统模式的软件。
这一切对维护者来说是极大的打击,对 Exercism 也十分不利。
轨道停滞不前,我们那些曾怀有构建热情的核心志愿者,在工作的内容变成了审核他人成果、协调相互冲突的优先事项、应对意料之外的请求之后,大多也失去了那份热情。 在构建 v3 期间,维护者能够相对自主地工作,因为他们的工作大多是幕后进行的,这带来了极高的生产力,也让大多数人真心享受做贡献的过程。 而自 v3 发布以来,尽管许多志愿者投入的时间并不比之前少,这段时期的乐趣和产出却低得多,主要是因为大量精力都花在了回应他人的贡献或 issue 上。 我们的志愿者如今把时间花在被动地充当看门人,而不是成为创新者,这乐趣大减。
这些就是我们需要解决的挑战,而且都很难。 我们需要找到一种方式,让那些愿意花上数百小时构建 Exercism 语言轨道的人能够这样做,并且乐在其中。 我们需要找到一种方式,让 bug 修复和小贡献能够进入我们的代码库,而不必占用这些核心志愿者的注意力。 我们需要找到一种方式,吸引新的志愿者加入 Exercism,并在他们选择长期做贡献时给予支持。 我们需要总体上减少把关的做法,同时也要尊重那些为轨道付出大量心血的人,他们有着坚定且经过深思熟虑的意见。 我们需要让管理和运营整套志愿工作体系变得有趣。 我们还需要解决一大堆其他的事情。 这需要时间,也会是个挑战,但一旦我们做成,那将会非常了不起。