Arrow Rust 實作的新開發工作流程


已發布 2021年5月4日
作者 Ruan Pearce-Authers (ruanpa)

Apache Arrow Rust 社群很高興宣布,他們遷移到新的開發工作流程現已完成!如果您正在考慮使用 Rust 作為處理欄狀資料的語言,請繼續閱讀,了解您的使用案例如何從我們全新且改良的專案設定中受益。

近幾個月來,社群成員與 Arrow 的 專案管理委員會 和其他貢獻者密切合作,以擴展 Arrow 實作可用的工作流程集。目標是定義一個新的開發流程,最終

  • 在適當情況下,實現更快的發布節奏,並遵守 SemVer
  • 鼓勵更廣泛社群透過統一工具最大限度地參與
  • 確保我們繼續堅持 The Apache Way 的原則

如果您只是想了解重點,以下是這些討論的主要成果

  • Rust 專案已移至獨立的儲存庫,位於主要的 Arrow monorepo 之外
    • arrow-rs 用於 Rust 中的核心 Arrow、Arrow Flight 和 Parquet 實作
    • arrow-datafusion 用於 DataFusion 和 Ballista(有關這些專案的更多資訊如下!)
  • Rust 社群將使用 GitHub Issues 來追蹤功能開發和問題,取代由 Apache 軟體基金會 (ASF) 維護的 Jira 實例
  • DataFusion 和 Ballista 將遵循獨立於主要 Arrow 發布的新發布週期

但是,作為一個社群,我們為什麼決定改變我們的流程?讓我們更深入地了解 Rust 實作的需求。

專案結構

Arrow 的 Rust 實作實際上包含幾個不同的專案,或者用 Rust 的術語來說,是 「crates」。除了核心 crates,即 arrowarrow-flightparquet 之外,我們還維護

  • DataFusion:一個可擴展的記憶體內查詢執行引擎,使用 Arrow 作為其格式
  • Ballista:一個分散式計算平台,由 Apache Arrow 和 DataFusion 提供支援

儘管這些專案都密切相關,並且有許多共同的貢獻者,但它們各自的生命週期都處於非常不同的階段。核心 Arrow crate 作為規格的實作,與其他版本的 Arrow 有嚴格的相容性要求,並且透過嚴格的跨語言整合測試進行測試。

然而,在另一方面,DataFusion 和 Ballista 仍然是它們自身的新興專案,經常經歷向後不相容的變更。在舊的工作流程中,DataFusion 與 Arrow 同步發布;由於 DataFusion 使用者通常需要在比 Arrow 發布更短的時間內獲得新貢獻的功能或錯誤修復,因此我們觀察到社群中的許多人只是直接參考我們的 GitHub 儲存庫,而不是 Rust 套件註冊表 crates.io 上的正確版本建置。

最終,我們決定將 Rust crates 分割成兩個獨立的儲存庫:arrow-rs 用於核心 Arrow 功能,而 arrow-datafusion 用於 DataFusion 和 Ballista。在確定後者的確切發布工作流程方面仍有工作要做,但這使我們能夠更好地滿足更廣泛的 Rust 社群對 crate 版本控制和穩定性的期望。

社群參與

所有 Apache 專案都建立在志願貢獻的基礎上;這是 ASF 和更廣泛的開源軟體開發的核心原則。在 Rust 社群先前的Workflow中,觀察到的一個摩擦點是需要在 Arrow 的 Jira 專案中記錄問題。此步驟要求潛在的貢獻者首先註冊一個帳戶,然後獲得權限授權以管理工單。

為了簡化新社群成員的流程,我們已決定遷移到 GitHub Issues,以追蹤新的開發工作和需要解決的已知錯誤,並通過從 Jira 導入各自的工單來引導我們的新儲存庫。仍然需要建立 Issue 來追蹤重要的擬議功能和增強功能;這創造了社群審查的機會,並有助於確保盡可能在流程的早期交付回饋。我們希望這能在組織和潛在貢獻者的可訪問性之間取得更好的平衡。

參與其中

為了進一步改善新 Arrow 貢獻者的入門流程,我們已開始在 arrow-rsarrow-datafusion 中將選定的 issue 標記為「good first issue」。這些 issue 的範圍很小,但仍然是對專案的寶貴貢獻,並幫助新社群成員熟悉我們的開發工作流程和工具。

不太確定從哪個特定的 issue 開始,或者對我們其中一個專案的狀態感到好奇嗎?加入 Arrow 郵件列表ASF Slack 伺服器上的 #arrow-rust 頻道。

總結

最後請注意:這裡的任何內容都不旨在作為規範性建議。作為一個社群,我們已決定這些流程最適合我們專案的目前狀態,但隨著時間的推移,這可能會改變!畢竟,軟體工程沒有 萬靈丹