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,即 arrow
、arrow-flight
和 parquet
之外,我們還維護
- 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-rs 和 arrow-datafusion 中將選定的 issue 標記為「good first issue」。這些 issue 的範圍很小,但仍然是對專案的寶貴貢獻,並幫助新社群成員熟悉我們的開發工作流程和工具。
不太確定從哪個特定的 issue 開始,或者對我們其中一個專案的狀態感到好奇嗎?加入 Arrow 郵件列表 或 ASF Slack 伺服器上的 #arrow-rust 頻道。
總結
最後請注意:這裡的任何內容都不旨在作為規範性建議。作為一個社群,我們已決定這些流程最適合我們專案的目前狀態,但隨著時間的推移,這可能會改變!畢竟,軟體工程沒有 萬靈丹。