跳到主要內容

開源路線圖

·5 分鐘閱讀
Héctor Ramos
Facebook 工程師

今年,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 社群的一項倡議,它促成了本路線圖中討論的幾項倡議的創建。