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 大部分未使用的抽象层。
在第一个里程碑中,我们就精简核心项目向社区寻求帮助。反响非常热烈,我们几乎跟不上所有的进展。查看不到一个月内完成的所有工作!
最令我们兴奋的是,维护者们积极参与修复长期存在的问题、添加测试并支持长期需求的功能。这些模块在 React Native 内部获得了比以往更多的支持,这表明这对社区来说是重要的一步。此类项目包括 WebView,它自剥离以来 收到了许多拉取请求,以及 CLI,它现在 由社区成员维护,并获得了急需的改进和修复。
主要用户问题
去年 12 月,我们询问了社区对 React Native 的 不满之处。我们汇总了回复并 逐一进行了答复。幸运的是,社区面临的许多问题也是 Facebook 内部存在的问题。在我们的下一个里程碑中,我们计划解决一些主要问题。
投票最多的问题之一是升级到新版本 React Native 的开发者体验。不幸的是,由于我们使用 master 分支运行 React Native,我们自身并没有这种体验。值得庆幸的是,社区成员已经站出来解决这个问题
- 来自 Callstack 的 Michał Pierzchała 通过在底层使用 rn-diff-purge 改进了 react-native upgrade 命令。我们还更新了网站,删除了过时的升级说明。
- 我们计划默认推荐 iOS 项目使用 CocoaPods,这将减少升级 React Native 时项目文件的变动。这将使人们更容易安装和链接第三方模块,这在精简核心的背景下尤为重要,因为我们期望项目默认链接更多模块。
0.59 版本发布
没有 React Native 社区的帮助,特别是 Mike Grabowski 和 Lorenzo Sciandra 的帮助,我们将无法发布版本。我们希望改进版本管理流程,并计划从现在开始更多地参与其中
- 我们将与社区成员合作,为每个主要版本撰写博文。
- 当用户升级到新版本时,我们将在 CLI 中直接显示破坏性更改。
- 我们将缩短发布所需的时间。我们正在探索增加自动化测试的方法,并创建改进的手动测试计划。
其中许多计划将纳入即将发布的 React Native 0.59 版本中。0.59 将包含 React Hooks、一个针对 Android 的新的 64 位 JavaScriptCore 版本以及许多性能和功能改进。目前它作为发布候选版本发布,预计在未来两周内将趋于稳定。
后续步骤
在接下来的两个月里,我们将继续管理拉取请求以 保持进度,同时开始减少未处理的 GitHub 问题数量。我们将通过精简核心项目继续缩小 React Native 的表面积。我们计划解决社区排名前 5 位的问题。在我们敲定社区指南后,我们将把注意力转向我们的网站和文档。
我们非常高兴能在三月份在伦敦 Facebook 接待来自社区的十多位贡献者,以帮助推动其中一些工作。我们很高兴您正在使用 React Native,并希望您能看到和感受到我们在 2019 年正在努力实现的改进。我们将在几个月后发布另一个更新,与此同时,我们将合并您的拉取请求!⚛️✌️