1 Punkte von GN⁺ 2024-01-23 | 1 Kommentare | Auf WhatsApp teilen
  • Diversion ist ein Versionsverwaltungssystem für große Repositories und Zusammenarbeit im Cloud-Zeitalter; zu den ersten Nutzern gehören Spieleentwickler, die Einfachheit und Skalierbarkeit wollen
  • Git wurde 2005 für langsame Netzwerke, kleine Projekte und eine Welt ohne Cloud entwickelt und stößt nach Ansicht von Diversion heute bei Repository- und Dateigrößen sowie der Zahl gleichzeitiger Nutzer an Grenzen
  • Die internen Versionsverwaltungssysteme von Google und Meta sowie der Einsatz von SVN und Perforce bei einigen Unternehmen aus Spieleentwicklung, Halbleitern und Finanzdienstleistungen werden als Beleg angeführt, dass Git nicht für jede Organisation passt
  • Diversion verarbeitet Repository-Operationen wie commit, branch und merge über API-Aufrufe auf Basis von verteiltem Storage, Datenbanken, REST API und serverloser Cloud-Infrastruktur
  • Der Dienst ist derzeit als Open Beta verfügbar, kleine Teams können kostenlos starten, und Verbesserungen bei Geschwindigkeit, CI-Integration, IDE- und Game-Engine-Plugins sowie der Usability sind in Arbeit

Die Grenzen von Git, auf die Diversion abzielt

  • Diversion ist ein Cloud-natives Versionsverwaltungssystem, das unter diversion.dev angeboten wird
    • Eine kurze Demo gibt es als YouTube-Video
    • Zu den ersten Nutzern gehören Spieleentwickler, die Einfachheit und Skalierbarkeit als Vorteile sehen
  • Git hat in den vergangenen 18 Jahren eine große Rolle für die Weiterentwicklung der Softwareentwicklung gespielt, wurde aber für die Bedingungen von 2005 entwickelt und ist daher nicht für alle Nutzer das perfekte Werkzeug
  • Der größte Nachteil ist die begrenzte Skalierbarkeit, die sich bei Repository-Größe, Dateigröße und der Zahl gleichzeitiger Nutzer zeigt
    • Google und Meta haben deshalb eigene Versionsverwaltungssysteme entwickelt
    • Einige Großunternehmen aus Spieleentwicklung, Halbleitern und Finanzdienstleistungen nutzen weiterhin Legacy-Tools wie SVN und Perforce
  • Auch die Komplexität von Git kann zu realem Arbeitsverlust führen
    • In einem früheren Startup verlor ein Data Scientist durch einen falschen Git-Befehl einen Monat Teamarbeit
    • Einige Stunden später konnte die Arbeit aus einem nicht aktualisierten Repository-Klon wiederhergestellt werden
  • Gleichzeitig haben Gits Branch- und Merge-Funktionen stark zu modernen Entwicklungspraktiken wie Feature Branches und CI/CD sowie zu höherer Entwicklergeschwindigkeit beigetragen

Cloud-basierte Funktionsweise

  • Diversion will die Branch-Funktionalität von Git beibehalten und zugleich ein einfacheres, schnelleres und skalierbareres Versionsverwaltungssystem bieten
  • Das Konzept der Echtzeit-Zusammenarbeit aus modernen Cloud-Tools wird auf Versionsverwaltung angewendet
    • Ähnlich wie bei Google Docs und Figma kann der aktuelle Arbeitsstand geteilt werden
    • Entwickler wollen das, woran sie gerade arbeiten, nicht immer offenlegen, aber es kann nützlich sein, vor dem Commit Feedback zu bekommen, Merge-Konflikte zu erkennen und zu vermeiden oder zu sehen, welche Teile der Codebase andere gerade ändern
  • Die interne Architektur basiert auf verteiltem Storage und Datenbanken, REST API und serverloser Cloud-Infrastruktur
    • Alle Repository-Operationen wie API-Aufrufe für commit, branch und merge werden darüber verarbeitet
    • Der Desktop-Client synchronisiert sogar den Arbeitsstand vor dem Commit in Echtzeit in die Cloud
    • Nutzer können über eine interaktive CLI, eine Web-UI und IDE-Plugins zugreifen
    • Derzeit unterstützen die IDE-Plugins JetBrains, weitere sollen folgen
    • Mit der Web-UI lassen sich die meisten grundlegenden Aufgaben auch ohne Installation des Desktop-Clients ausführen
  • Es ist mit Git kompatibel und kann mit bestehenden Git-Repositories synchronisiert werden
    • Neue Commits aus Diversion gehen in Git ein, und neue Git-Commits gehen auch in Diversion ein

Veröffentlichungsplan und Bedingungen der Beta-Nutzung

  • Sobald die Codebase ausgereift ist und auf der Website ein Verzeichnis für Open-Source-Repositories implementiert wurde, soll das Projekt als Open Source veröffentlicht werden
    • Auch der Code von Diversion wird mit Diversion verwaltet
  • Der Dienst ist derzeit als Open Beta verfügbar; über „Get Started“ lässt sich per Self-Service beginnen
    • Dafür ist kein Gespräch mit jemandem erforderlich
    • Für kleine Teams ist die Nutzung kostenlos; Preisinformationen gibt es unter pricing
  • Zu den laufenden Verbesserungen gehören Geschwindigkeit, CI-Integration, IDE- und Game-Engine-Plugins sowie weitere Verbesserungen der Usability

1 Kommentare

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

    • Cloud-Native ist ein Implementierungsdetail und nur dann wichtig, wenn man nicht plant, ein neues Versionsverwaltungssystem (VCS) als paketierte Software statt als Service zu verkaufen.
    • Es ist unklar, wie Cloud-Native die alltäglichen Probleme von Git-Nutzern löst.
  • The biggest drawback of Git is its limited scalability

    • Es stellt sich die Frage, wie hoch der Anteil der Nutzer ist, die tatsächlich Skalierungsprobleme mit Git erleben.
    • Ich habe in Unternehmen mit einigen Hundert bis zu Zehntausenden von Ingenieuren gearbeitet, aber persönlich nie Skalierungsprobleme mit Git erlebt.
    • Die Nutzung eines Monorepos kann Skalierungsprobleme verursachen, aber Monorepos selbst sind umstritten.
  • 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.).

    • Aus Nutzersicht besteht wenig Interesse an internen Protokollen.
    • Bei der Nutzung von CLI oder UI ist das interne Protokoll nicht wichtig.
    • Es besteht Neugier auf ein VCS auf Basis abstrakter Syntaxbäume (AST).
  • most notably in games development, semiconductors and financial services are still using legacy tools like SVN and Perforce

    • Der Fokus sollte weniger auf der Komplexität von Git liegen, sondern darauf, dass Git für große binäre Assets nicht gut geeignet ist.
    • Ein Zitat von Linus Torvalds dazu, dass Git mit großen Dateien nicht gut umgeht.
  • it was built for a very different world in 2005 (slow networks, much smaller projects, no cloud)

    • Git wurde 2005 für eine ganz andere Welt entworfen: langsame Netzwerke, kleinere Projekte und keine Cloud.
    • Da Git verteilt ist, sollte es auch in Cloud-Umgebungen gut funktionieren.
    • Dass ein Data Scientist mit einem falschen Git-Befehl die Arbeit eines Monats zerstört hat, wirkt wie ein Konfigurationsproblem.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command

    • Statt Git zu kritisieren, sollte man sich stärker auf das eigene Produkt konzentrieren.
    • Git ist ein verteiltes VCS, und das Problem ist der Versuch, es ohne Backups zentralisiert zu verwenden.
  • git is bad we're better

    • Als Spieleentwickler besteht wenig Interesse an dem vorgeschlagenen Angebot.
    • Moderne Workflows mit Git LFS funktionieren reibungslos.
    • Cloud-Native wird als Merkmal genannt, aber Details zur Unterstützung von On-Premise und selbst gehosteten Private Clouds fehlen.
    • Die Präferenz von Künstlern für Dateisperren und die Schwierigkeit, Sperren mit P4-Streams und Branches zu nutzen.
  • File locking across branches - coming soon!

    • Die Funktion für Dateisperren über Branches hinweg soll bald erscheinen, aber das Angebot muss noch verbessert werden.
  • 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.

    • Die Datenstruktur von Git ist eine erstaunliche Erfindung, aber es besteht keine Zustimmung dazu, dass alle Befehle über eine REST API laufen sollen.
    • Die Stärke von Git liegt darin, dass man auch offline mit partiellen Klonen arbeiten und Commits synchronisieren kann, sobald man wieder online ist.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command.

    • Es wird anerkannt, dass die Usability von Git verbessert werden muss, aber das aufgetretene Problem wirkt wie ein Versagen im DevOps-Betrieb.
    • Es braucht eine flachere Lernkurve, die Nicht-Programmierern die Vorteile von Source Control näherbringt und gleichzeitig fortgeschrittene Funktionen erhält.
  • The world needs a git alternative.

    • Die Welt braucht eine Alternative zu Git.
    • Git stößt an Grenzen, wenn mehrere Personen täglich in dasselbe Repository committen.
    • Wenn Git besser mit Rebase umgehen könnte, würde sich die Arbeitsgeschwindigkeit von Softwareentwicklungsteams voraussichtlich um 20 % erhöhen.
  • 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.

    • Es gibt die Wahrnehmung, dass Unternehmen alles kaufen, wenn "Cloud" oder "AI" im Namen steht.
    • Es ist wichtig, sich auf die Lösung von Problemen statt auf Technologie zu konzentrieren.
    • Wenn die User Experience schlecht ist, sind technische Details bedeutungslos.
    • Es braucht eine Vertriebsstrategie für ein Produkt, das Entwicklungszeit verkürzt, Fehler reduziert und die Zusammenarbeit verbessert.