概要
Manyana は、CRDTを用いた新しいバージョン管理のビジョンを提案するプロジェクト CRDTマージ により競合は情報提示のみで、実際のマージ失敗が発生しない 競合表示が従来よりも遥かに 分かりやすく、編集内容の構造を把握可能 履歴管理 やリベースも従来手法より優れた設計 Python製デモとして公開、設計思想をREADMEで解説
Manyana:CRDTベースの次世代バージョン管理の提案
- Manyana は、バージョン管理の将来像を提示するプロジェクト
- CRDT(Conflict-Free Replicated Data Types) を基盤とした設計
- 従来のバージョン管理で課題だった マージ失敗や競合 を根本から解決
- 競合は「発生しない」が、 編集内容の重なり は分かりやすく可視化
- 競合箇所には「誰が」「何を」したかが 明確に表示 されるUI設計
- 例:関数を片方が削除、もう片方が中身を編集した場合も 構造を保ったまま表示
CRDTの特長とバージョン管理への影響
- CRDT は「最終的整合性」を保証し、どんな順序でマージしても結果は同じ
- マージ時に 失敗やブロック が発生しない
- 並行編集が近接した場合のみ 情報として競合 を提示
- 競合解決は「どちらの編集内容か」を 明確に示す ため、従来より容易
- 履歴は「 weave構造」で管理され、各行の追加・削除時期も記録
- マージ時に 共通祖先の探索やDAGの走査 が不要
リベースと履歴管理の革新
- 従来のrebase は履歴を「書き換え」てしまう問題
- CRDT方式では、 プライマリアンセスター の注釈を加えるだけで、履歴を保ったまま「上書き」可能
- 複雑なマージトポロジー でも破綻しない設計
- 履歴は DAG再構成不要、weave構造に全て記録
Manyanaの現状と今後
- Manyana は約470行のPythonデモで、個別ファイル単位の動作
- cherry-pick や ローカルundo は未実装だが、READMEで実現方法を提案
- CRDTベースVCS がUX課題を解決できることを 実証
- コードはパブリックドメイン、設計思想はREADMEに全文記載
まとめ
- CRDTによるバージョン管理 は、従来の課題(競合・履歴破壊・複雑なマージ)を根本解決
- Manyana はその実現性と有用性を示す デモ兼設計書
- 今後のバージョン管理システム設計に 大きな示唆