Создатель BitTorrent объявил войну Git: что такое Manyana и почему CRDT - это будущее контроля версий
Если вы хоть раз видели эти строки в терминале — <<<<<<< HEAD, =======, >>>>>>> feature-branch — и чувствовали, как внутри что-то сжимается, вы не одиноки. Merge-конфликты в Git — это одна из тех вещей, к которым все привыкли, но которые никто не любит. Мы тратим часы, чтобы разобраться, кто что поменял, в каком порядке, и какой вариант оставить. И самое обидное — чем больше людей работает над проектом, тем хуже становится ситуация.
22 марта 2026 года Брэм Коэн — человек, создавший протокол BitTorrent и фактически изменивший способ передачи данных в интернете — представил Manyana: proof of concept системы контроля версий, построенной на принципиально другом фундаменте. Не на трёхстороннем мерже, не на эвристиках, а на CRDT — математической структуре данных, в которой конфликты слияния невозможны по определению. И у этого подхода серьёзные последствия для всей индустрии разработки.
Давайте честно: Git — великий инструмент. Он решил кучу проблем распределённой разработки, дал нам ветвление, которое не стоит ничего, и стал стандартом де-факто. Но у него есть архитектурный изъян, который с годами становится всё болезненнее.
Git использует трёхсторонний мерж (three-way merge). Принцип такой: берём общего предка двух веток, сравниваем с каждой из них и пытаемся автоматически совместить изменения. Если обе ветки трогали одни и те же строки — получаем конфликт, который человек должен разрешить руками.
Проблема в том, что Git показывает конфликт как два непрозрачных блока текста — «left» и «right». Вот классический пример из поста Коэна. Два разработчика форкнули файл с функцией. Первый удалил всю функцию. Второй добавил одну строку в её середину. Git выдаст что-то вроде:
<<<<<<< left ======= def calculate(x): a = x * 2 logger.debug(f"a={a}") b = a + 1 return b >>>>>>> right
Два куска. Слева пусто, справа функция целиком. И сиди разбирайся: кто удалил? кто добавил? что из этого оставить? А теперь представьте, что таких конфликтов в pull request — двадцать. В эпоху AI-агентов, которые рефакторят тысячи строк за один промпт, — это уже не неудобство, а системная проблема.
Ключевая идея Manyana — использование CRDT (Conflict-Free Replicated Data Types, бесконфликтных реплицируемых типов данных). Эта концепция пришла из мира распределённых систем и была формально описана в 2011 году группой исследователей во главе с Марком Шапиро.
Суть CRDT можно объяснить на простой аналогии. Представьте, что у вас есть счётчик «лайков» на посте, и десять серверов по всему миру одновременно принимают нажатия. Каждый сервер увеличивает свою копию. Когда серверы синхронизируются — неважно, в каком порядке, — результат всегда одинаковый. Это и есть CRDT: структура данных, в которой слияние любых реплик всегда успешно и всегда даёт один и тот же результат.
CRDT уже давно используются в продакшене, и в довольно неожиданных местах: