開源路線圖
今年,React Native 團隊專注於大規模的 React Native 重新架構。正如 Sophie 在她的 React Native 現況文章中提到的,我們已經草擬了一個計畫,為了更好地支援 Facebook 以外蓬勃發展的 React Native 使用者和協作者群體。現在是時候分享更多關於我們一直在努力的細節了。在這麼做之前,我想闡述我們對 React Native 在開源方面的長期願景。
我們對 React Native 的願景是...
- 一個健康的 GitHub 儲存庫。 問題和提取請求在合理的期限內得到處理。
- 增加測試覆蓋率。
- 從 Facebook 程式碼儲存庫同步輸出的提交不應破壞開源測試。
- 更大規模的有意義的社群貢獻。
- 穩定的 API, 使其更容易與開源依賴項介接。
- Facebook 使用與開源相同的公共 API
- React Native 版本發布遵循語義化版本控制。
- 一個充滿活力的生態系統。 由社群維護的高品質 ViewManager、原生模組和多平台支援。
- 優良的文件。 專注於幫助使用者創造高品質的體驗,以及最新的 API 參考文件。
我們已經確定了以下重點領域,以幫助我們實現這一願景。
✂️ 精簡核心
我們的目標是透過移除非核心和未使用的組件來減少 React Native 的表面積。我們將把非核心組件轉移給社群,使其能夠更快地發展。減少的表面積將使管理對 React Native 的貢獻更容易。
WebView
是我們轉移給社群的組件範例。我們正在開發一個工作流程,允許內部團隊在我們從儲存庫中移除這些組件後繼續使用它們。我們已經確定了數十個更多的組件,我們將把所有權轉讓給社群。
🎁 開源內部組件和 🛠更新的工具
Facebook 產品團隊的 React Native 開發體驗可能與開源有很大的不同。在開源社群中可能流行的工具在 Facebook 並未使用。可能有一個內部工具可以達到相同的目的。在某些情況下,Facebook 團隊已經習慣了 Facebook 以外不存在的工具。當我們開源我們即將推出的架構工作時,這些差異可能會帶來挑戰。
我們將努力發布其中一些內部工具。我們也將改進對開源社群中流行的工具的支援。以下是我們將要處理的項目(非詳盡列表)
- 開源 JSI 並使社群能夠引入他們自己的 JavaScript VM,取代 RN 初始版本中的現有 JavaScriptCore。我們將在未來的文章中介紹 JSI 是什麼,在此期間,您可以從 Parashuram 在 React Conf 上的演講中了解更多關於 JSI 的資訊。
- 支援 Android 上的 64 位元函式庫。
- 在新架構下啟用偵錯功能。
- 改進對 CocoaPods、Gradle、Maven 和新的 Xcode 建置系統的支援。
✅ 測試基礎設施
當 Facebook 工程師發布程式碼時,如果它通過所有測試,則認為可以安全發布。這些測試識別變更是否可能破壞我們自己的 React Native 介面之一。然而,Facebook 使用 React Native 的方式存在差異。這使得我們在不知不覺中破壞了開源中的 React Native。
我們將加強我們的內部測試,以確保它們在盡可能接近開源的環境中運行。這將有助於防止破壞這些測試的程式碼進入開源。我們也將致力於基礎設施,以實現對 GitHub 上核心儲存庫的更好測試,使未來的提取請求能夠輕鬆包含測試。
結合減少的表面積,這將使貢獻者能夠更快、更有信心地合併提取請求。
📜 公共 API
Facebook 將像開源一樣,透過公共 API 使用 React Native,以減少意外的破壞性變更。我們已經開始轉換內部呼叫站點來解決這個問題。我們的目標是收斂到一個穩定的公共 API,從而在 1.0 版本中採用語義化版本控制。
📣 溝通
React Native 是 GitHub 上按貢獻者數量計算的頂級開源專案之一。這讓我們非常高興,我們希望繼續保持下去。我們將繼續致力於促進貢獻者參與的倡議,例如提高透明度和公開討論。文件是新手接觸 React Native 時首先遇到的事情之一,但它一直不是優先事項。我們想解決這個問題,首先是恢復自動生成的 API 參考文件,創建更多專注於創建高品質使用者體驗的內容,以及改進我們的發行說明。
時間軸
我們計劃在接下來的一年左右時間內完成這些專案。其中一些努力已經在進行中,例如 JSI 已經在開源中落地。其他一些專案將需要更長的時間才能完成,例如減少表面積。我們將盡力讓社群了解我們的進展。請加入我們的 Discussions and Proposals 儲存庫,這是 React Native 社群的一項倡議,它促成了本路線圖中討論的幾項倡議的創建。