Manyana:一種以 CRDT 重新思考版本控制的未來藍圖

本篇文章更新時間:2026/03/23
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


Manyana:重新想像版本控制的未來

以 CRDT 為核心,打造不再「合併失敗」的世界

編輯前言:這篇文章來自 Bram Cohen(BitTorrent 創辦人)在其部落格的介紹:Manyana。它提出一種以 CRDT 為核心的版本控制新模型,完整挑戰 Git 這類傳統 VCS 長年以來的痛點。對於工程師、協作工具開發者,這篇文章可以說是未來十年的技術藍圖。

核心觀點 (Key Takeaways)

  • CRDT 是版本控制的下一步:許多問題不是技術做不到,而是 UX 尚未被解決;Manyana 提供了一個具體的解法。
  • 合併永不失敗,但依然有「可讀的衝突」:CRDT 保證不會出現傳統意義上的 merge conflict,但仍能精準呈現對應的變動關係。
  • 歷史直接存在於資料結構本身:不再依賴 Git 式的 DAG 推算祖先,而是以「weave」方式保存所有歷史,讓 rebase 也能保留真實軌跡。

深入解析

來源文章:Manyana

CRDT(Conflict-Free Replicated Data Type)一直被視為協作系統的強大基礎,但近年卻少見有人將它用於版本控制。Bram Cohen 認為,技術早就成熟,只是過去缺乏好的 UX 設計,而 Manyana 的目的,就是把這個缺口補起來。

更「可讀」的衝突呈現

傳統 Git 在面對某些情境下的合併衝突會產生不透明的差異。例如,兩個人同時編輯一個 function:

  • 一個人把 function 刪掉
  • 另一個人在其中插入一行 log

Git 給你的通常是兩大團不知所云的 blob,需要工程師自己「逆向推理」到底發生了什麼。

Manyana 則把 CRDT 的資訊完整呈現,讓每一段差異都能精準指出「誰、對什麼、做了什麼」:

Each section tells you what happened and who did it. Left deleted the function. Right added a line in the middle.

透過這種方式,衝突不是阻礙,而是資訊本身。

合併永不失敗,順序永久固定

CRDT 的特點之一是「eventual consistency」。不論你用什麼順序合併,每次結果都一致。
這直接帶來兩個突破:

  • 合併永遠成功,衝突只是 metadata
  • 插入點的順序一旦確立,就不會因為不同人合併順序不同而造成差異

這解決了 Git 在多人分支時容易出現的「非決定性」問題。

歷史存在於資料結構,不需回推 DAG

Manyana 採用的是一種「weave」結構,也就是把所有出現過的行全部納入同一資料結構中,並附上新增、移除的 metadata。

這意味著:

  • 合併不需要找 common ancestor
  • 不會有「DAG 太複雜導致 3-way merge 失效」的問題

作者更提出一個重要觀點:rebase 不需要摧毀歷史。只要給 commit 一個「primary ancestor」註記,就能完整記錄真實演化,同時達成 rebase 想達到的效果。

筆者心得與啟發

老實說,看完 Manyana 的介紹,我最大的感受是:版本控制這件事其實還遠遠沒有被做完

我們已經習慣 Git 那些令人頭痛的體驗,包括:

  • 衝突解析難讀
  • rebase 破壞歷史
  • merge 有時會出現模糊的結果
  • 多人編輯時的非決定性問題

Manyana 把上述問題視為「不是必然的」,而是「技術選擇問題」。如果 CRDT 一開始就是版本控制的主流,我們今天的協作體驗可能完全不同。

特別讓我印象深刻的是作者提到的:

The history is in the weave, not reconstructed from the DAG.

這句話不只是在描述資料結構,也是一種哲學——版本控制不該靠猜測,而應該是完整記錄。

雖然 Manyana 只是 470 行 Python 的 demo,但它成功證明:

  • CRDT 不是沒辦法做版本控制
  • 關鍵在於 UX,而 Manyana 展示了可行的方向

如果未來真的有人基於這套思想打造一款主流工具,我想 Git 的未來地位不一定無可撼動。

對協作工具、雲端 IDE、甚至生成式 AI 程式工具來說,CRDT-based VCS 會是非常值得關注的下一步。


Share:

作者: Chun

WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。曾參與 WordCamp Taipei 等社群活動,GitHub Arctic Code Vault Contributor。提供資訊顧問、WordPress 開發教學、主機最佳化與企業 ERP 整合服務。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon