Git en riesgo: LLMs desafían el control de versiones

Fuentes: SCMandLLM.md

El desarrollo de software está evolucionando rápidamente, y las herramientas tradicionales, como los IDEs, están perdiendo relevancia a medida que los desarrolladores pasan más tiempo explorando código y interactuando con modelos de lenguaje grandes (LLMs). El sistema de control de versiones Git, que ha sido la piedra angular del desarrollo durante años, está empezando a convertirse en un cuello de botella. La complejidad de las fusiones (merges) y los rebases, junto con la dificultad para manejar monorepos y dividir/unir código, está generando fricción y repetición de trabajo, especialmente en entornos colaborativos donde el propio LLM se convierte en un colaborador.

El autor argumenta que es hora de buscar alternativas a Git, rechazando la idea de compatibilidad directa debido a la gran cantidad de repositorios existentes. La crítica principal se centra en la arquitectura fundamental de Git, que presenta limitaciones inherentes. Estas limitaciones incluyen la dificultad para manejar monorepos, la falta de soporte para “overlay branches” (ramas superpuestas) para compartir código entre repositorios, la naturaleza no determinista de las fusiones y la ausencia de capacidades avanzadas de búsqueda y análisis de código (más allá de grep). Además, el modelo de datos de Git, basado en 'blobs' (archivos binarios), es demasiado básico para un sistema moderno de control de versiones.

La solución propuesta es un sistema de control de versiones que funcione como una base de datos para el código, en lugar de un sistema de archivos. Esto implicaría versionar estructuras de datos (como árboles AST - Abstract Syntax Trees, que representan la estructura del código) en lugar de simples blobs de texto, y utilizar algoritmos de fusión deterministas (basados en principios de CRDT - Conflict-free Replicated Data Types). El autor está trabajando en un nuevo sistema que utiliza el formato RDX (Replicated Data eXchange), una extensión de JSON con potentes capacidades de fusión CRDT, y que opera a nivel de AST para proporcionar un control más preciso y eficiente sobre el código. El objetivo final es ofrecer un sistema con una interfaz limpia y fácil de usar, que permita una gestión más fluida del código en entornos modernos impulsados por LLMs y la colaboración intensiva.