1 puntos por GN⁺ 2024-01-23 | 1 comentarios | Compartir por WhatsApp
  • Diversion es un sistema de control de versiones orientado a repositorios grandes y colaboración en la era de la nube; sus primeros usuarios son desarrolladores de videojuegos que buscan simplicidad y escalabilidad
  • Git fue creado en 2005, en un entorno de redes lentas, proyectos pequeños y sin nube, por lo que consideran que tiene límites frente a las escalas actuales de repositorios, tamaños de archivo y usuarios concurrentes
  • Los sistemas de control de versiones internos de Google y Meta, y el uso de SVN y Perforce por parte de algunas empresas de desarrollo de videojuegos, semiconductores y servicios financieros, se usan como evidencia de que Git no se adapta a todas las organizaciones
  • Diversion procesa operaciones de repositorio como commit, branch y merge mediante llamadas de API sobre almacenamiento distribuido, bases de datos, REST API e infraestructura cloud serverless
  • Actualmente se ofrece en beta abierta; los equipos pequeños pueden empezar gratis, y se están mejorando la velocidad, la integración con CI, los plugins para IDE y motores de videojuegos, y la usabilidad

Las limitaciones de Git a las que apunta Diversion

  • Diversion es un sistema de control de versiones nativo de la nube disponible en diversion.dev
    • Hay una demo rápida disponible en un video de YouTube
    • Sus primeros usuarios son desarrolladores de videojuegos, que valoran su simplicidad y escalabilidad
  • Git ha tenido un papel clave en la evolución del desarrollo de software durante los últimos 18 años, pero fue creado para el entorno de 2005 y no es una herramienta perfecta para todos los usuarios
  • Su mayor desventaja se ve en la escalabilidad limitada frente al tamaño de los repositorios, el tamaño de los archivos y la cantidad de usuarios concurrentes
    • Por eso Google y Meta crearon sus propios sistemas de control de versiones
    • Algunas grandes empresas de desarrollo de videojuegos, semiconductores y servicios financieros siguen usando herramientas legacy como SVN y Perforce
  • La complejidad de Git también puede derivar en pérdida real de trabajo
    • En una startup anterior, hubo un caso en el que una científica de datos usó un comando incorrecto de Git y el equipo perdió un mes de trabajo
    • Unas horas después, pudieron recuperarlo desde un clon del repositorio que no había sido actualizado
  • Aun así, las funciones de branching y merge de Git contribuyeron mucho a prácticas modernas de desarrollo como feature branch y CI/CD, además de mejorar la velocidad de los desarrolladores

Funcionamiento basado en la nube

  • Diversion busca ser un sistema de control de versiones más fácil, rápido y escalable, manteniendo las funciones de branching de Git
  • Aplica al control de versiones el concepto de colaboración en tiempo real de las herramientas modernas en la nube
    • Permite compartir el estado del trabajo en curso, como Google Docs y Figma
    • Aunque los desarrolladores no siempre quieren mostrar en qué están trabajando, puede ser útil para recibir feedback antes del commit, detectar y evitar conflictos de merge, o ver qué partes del codebase está modificando otra persona
  • Su arquitectura interna se basa en almacenamiento distribuido, bases de datos, REST API e infraestructura cloud serverless
    • Todas las operaciones de repositorio, como commit, branch y merge, se procesan como llamadas de API
    • El cliente de escritorio sincroniza en tiempo real con la nube incluso el estado del trabajo en curso antes del commit
    • Los usuarios pueden acceder mediante una CLI interactiva, Web UI y plugins para IDE
    • Actualmente el plugin para IDE soporta JetBrains, y se agregarán más
    • La Web UI permite realizar la mayoría de las operaciones básicas sin instalar el cliente de escritorio
  • Es compatible con Git y puede sincronizarse con repositorios Git existentes
    • Los nuevos commits de Diversion entran a Git, y los nuevos commits de Git también entran a Diversion

Planes de publicación y condiciones de uso de la beta

  • Planean publicarlo como open source cuando el codebase madure y esté implementado en el sitio web el directorio de repositorios open source
    • El código de Diversion también se gestiona en Diversion
  • Actualmente se puede usar en beta abierta, y es posible empezar en modalidad self-service haciendo clic en Get Started
    • Se puede usar sin necesidad de hablar con nadie
    • Es gratis para equipos pequeños, y la información de precios está en pricing
  • Las mejoras en curso incluyen velocidad, integración con CI, plugins para IDE y motores de videojuegos, y otras mejoras de usabilidad

1 comentarios

 
GN⁺ 2024-01-23
Comentarios de Hacker News
  • Cloud-Native Git Alternative

    • Lo de cloud-native es un detalle de implementación, y no importa a menos que planeen vender el nuevo sistema de control de versiones (VCS) como software empaquetado en lugar de como servicio.
    • No está claro cómo lo cloud-native resuelve los problemas cotidianos de los usuarios de Git.
  • The biggest drawback of Git is its limited scalability

    • Hay curiosidad sobre qué proporción de usuarios realmente sufre problemas de escalabilidad con Git.
    • He trabajado en empresas con desde cientos hasta decenas de miles de ingenieros, pero personalmente nunca he tenido problemas de escalabilidad con Git.
    • El uso de monorepo puede causar problemas de escalabilidad, aunque el monorepo en sí mismo ya es algo debatible.
  • Diversion is built on top of distributed storage and databases, accessible via REST API, and runs on serverless cloud infrastructure. Every repository operation is an API call (commit, branch, merge etc.).

    • Desde la perspectiva del usuario, hay poco interés en el protocolo interno.
    • Si se usa un CLI o una UI, el protocolo interno no importa.
    • Hay curiosidad por un VCS basado en árboles de sintaxis abstracta (AST).
  • most notably in games development, semiconductors and financial services are still using legacy tools like SVN and Perforce

    • En lugar de centrarse en la complejidad de Git, sería mejor enfocarse en que Git no es adecuado para manejar grandes activos binarios.
    • Se cita a Linus Torvalds diciendo que Git no maneja bien archivos grandes.
  • it was built for a very different world in 2005 (slow networks, much smaller projects, no cloud)

    • Git fue diseñado en un entorno distinto al de 2005, con redes lentas, proyectos más pequeños y sin nube.
    • Como Git es distribuido, debería funcionar bien también en entornos de nube.
    • Que un científico de datos destruyera un mes de trabajo con un comando incorrecto de Git parece un problema de configuración.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command

    • Más que criticar a Git, sería mejor enfocarse en su propio producto.
    • Git es un VCS distribuido, y el problema es intentar usarlo de forma centralizada sin respaldos.
  • git is bad we're better

    • Como desarrollador de videojuegos, hay poco interés en la propuesta presentada.
    • Un flujo de trabajo moderno con Git LFS funciona sin problemas.
    • Se presenta cloud-native como una característica, pero faltan detalles sobre soporte on-premise y nube privada autohospedada.
    • A los artistas les gusta la función de bloqueo de archivos, y usar bloqueos se vuelve difícil con P4 streams y ramas.
  • File locking across branches - coming soon!

    • La función de bloqueo de archivos llegará pronto, pero la propuesta todavía necesita mejoras.
  • Git cli UX made be not great, but the git datastructure of representing commits, branches, trees and blobs as immutable pointers and merkle trees is a phenomenal invention.

    • La estructura de datos de Git es una invención fenomenal, pero no hay acuerdo con que todos los comandos se realicen mediante REST API.
    • La gran fortaleza de Git es poder trabajar offline incluso con clones parciales y sincronizar los commits cuando se vuelve a estar en línea.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command.

    • Se reconoce que Git necesita mejoras de usabilidad, pero el problema ocurrido parece una falla de DevOps.
    • Hace falta una curva de aprendizaje más sencilla que permita mostrar a los no programadores las ventajas del control de versiones sin perder funciones avanzadas.
  • The world needs a git alternative.

    • Hace falta una alternativa a Git.
    • Git muestra sus límites cuando varias personas hacen commits todos los días al mismo repositorio.
    • Si Git pudiera manejar mejor el rebase, se estima que la velocidad de trabajo de los equipos de desarrollo de software mejoraría un 20%.
  • I get that enterprises will buy anything with "Cloud" or "AI" in the name, but VCS doesn't have anything to do with the cloud.

    • Existe la percepción de que las empresas comprarán cualquier cosa que tenga "Cloud" o "AI" en el nombre.
    • Es importante enfocarse en resolver problemas más que en la tecnología.
    • Si la experiencia de usuario no es buena, los detalles técnicos no significan nada.
    • Hace falta una estrategia de venta para un producto que ofrezca una experiencia que reduzca tiempo de desarrollo, disminuya errores y mejore la colaboración.