React Native 开源更新 2019 年 3 月
在决定加大对 React Native 开源社区的投入后,我们于 2018 年第四季度宣布了我们的 React Native 开源路线图。
我们的第一个里程碑是,我们着重于识别并改进社区最显著的方面。我们的目标是减少未处理的拉取请求,缩小项目的范围,识别主要用户问题,并建立社区管理指南。
在过去的两个月中,我们取得了比预期更多的进展。阅读下文了解更多详情
拉取请求
为了建立一个健康的社区,我们必须迅速响应代码贡献。在过去几年中,我们对社区贡献的审查优先级较低,累积了 280 个拉取请求(2018 年 12 月)。在第一个里程碑中,我们将未处理的拉取请求数量减少到约 65 个。同时,每天打开的拉取请求平均数量从 3.5 个增加到 7 个,这意味着我们在过去三个月内处理了大约 600 个拉取请求。
我们合并了近三分之二的拉取请求,并关闭了三分之一。如果拉取请求已过时、质量低劣或不必要地增加了项目的范围,它们将被关闭而不合并。大多数已合并的拉取请求修复了错误、改善了跨平台兼容性或引入了新功能。值得注意的贡献包括改进类型安全和正在进行的 AndroidX 支持工作。
在 Facebook,我们从 master 分支运行 React Native,因此所有更改都会先经过测试,然后才能进入 React Native 发布版本。在所有已合并的拉取请求中,只有六个导致了问题:四个仅影响内部开发,另外两个在发布候选阶段被发现。
其中一个更显著的社区贡献是更新后的“RedBox”屏幕。这是一个很好的例子,说明社区如何使开发者体验更友好。
瘦核心
React Native 目前有非常广泛的表面区域,其中包含许多在 Facebook 不常使用的、未维护的抽象。我们正在努力缩小表面区域,以使 React Native 更小,并允许社区更好地维护那些在 Facebook 几乎不使用的抽象。
在第一个里程碑中,我们向社区寻求 Lean Core 项目的帮助。反响热烈,我们几乎无法跟上所有的进展。查看不到一个月内完成的所有工作!
最令我们兴奋的是,维护者们已经介入,修复了长期存在的问题,添加了测试,并支持了长期以来要求的功能。这些模块在 React Native 内部获得了比以往任何时候都多的支持,这表明这是社区的一大进步。此类项目的例子有 WebView,它在提取后收到了许多拉取请求,以及现在由社区成员维护并获得了急需的改进和修复的 CLI。
主要用户问题
12 月,我们向社区征集了他们不喜欢 React Native 的地方。我们汇总了这些反馈,并对每个问题都进行了回复。幸运的是,我们社区面临的许多问题在 Facebook 也存在。在下一个里程碑中,我们计划解决一些主要问题。
得票最高的问题之一是升级到新版本 React Native 的开发者体验。不幸的是,这不是我们自己会遇到的问题,因为我们在 Facebook 是从 master 分支运行 React Native 的。值得庆幸的是,社区成员已经站出来解决了这个问题。
- 来自 Callstack 的 Michał Pierzchała 通过在底层使用 rn-diff-purge 改进了 react-native upgrade。我们还更新了网站,移除了过时的升级说明。
- 我们计划默认推荐 iOS 项目使用 CocoaPods,这将减少升级 React Native 时项目文件的改动。这将使用户更容易安装和链接第三方模块,这在 Lean Core 的背景下更为重要,因为我们期望项目默认链接更多模块。
0.59 版本发布
没有 React Native 社区的帮助,特别是 Mike Grabowski 和 Lorenzo Sciandra,我们将无法发布版本。我们希望改进发布管理流程,并计划从现在开始更多地参与。
- 我们将与社区成员合作,为每个主要版本撰写博客文章。
- 当用户升级到新版本时,我们将在 CLI 中直接显示重大更改。
- 我们将缩短发布所需的时间。我们正在探索增加自动化测试的方法,并创建改进的手动测试计划。
这些计划中的许多都将纳入即将发布的 React Native 0.59 版本。0.59 将附带 React Hooks,一个新的适用于 Android 的 64 位 JavaScriptCore 版本,以及许多性能和功能改进。它目前已作为发布候选版本发布,预计将在未来两周内稳定。
下一步
在接下来的两个月里,我们将继续管理拉取请求,以保持进度,同时开始减少未解决的 GitHub 问题数量。我们将继续通过 Lean Core 项目减小 React Native 的表面区域。我们计划解决社区排名前五的问题。随着社区准则的最终确定,我们将把注意力转向我们的网站和文档。
我们非常高兴能在三月份在伦敦 Facebook 接待十多位社区贡献者,以帮助推动其中的几项工作。我们很高兴您正在使用 React Native,并希望您能看到并感受到我们正在 2019 年进行的改进。几个月后我们将发布另一次更新,同时我们会合并您的拉取请求! ⚛️✌️