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 年正在进行的改进。我们将在几个月后再次发布更新,并且在此期间将继续合并您的拉取请求!⚛️✌️