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。我们还更新了网站,以删除过时的升级说明。
- 我们计划默认推荐 CocoaPods 用于 iOS 项目,这将减少升级 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 年正在进行的改进。我们将在几个月后再次更新,并且在此期间将合并您的拉取请求! ⚛️✌️