Diversion se présente comme une alternative cloud à Git adaptée aux fichiers lourds,
qui propose la synchronisation des modifications en temps réel et prévoit des permissions granulaires

Diversion est une startup israélienne qui propose une solution de contrôle de version moderne éponyme, basée sur le cloud et scalable. Elle s’adresse aux équipes de développement logiciel, en particulier ceux de l'industrie du jeu vidéo, qui veulent collaborer efficacement sur des bases de code de toute taille, tout en améliorant la sécurité, le devops et l’expérience des développeurs. Diversion est entièrement gratuit jusqu'à 10 utilisateurs et 100 Go de stockage.

Git est de loin le système de contrôle de version le plus largement utilisé aujourd'hui. Git est un projet open source avancé, qui est activement maintenu. À l'origine, il a été développé en 2005 par Linus Torvalds, le créateur bien connu du noyau du système d'exploitation Linux. De plus en plus de projets logiciels reposent sur Git pour le contrôle de version, y compris des projets commerciaux et en open source.

Par sa structure décentralisée, Git illustre bien ce qu'est un système de contrôle de version décentralisé (DVCS). Plutôt que de consacrer un seul emplacement pour l'historique complet des versions du logiciel comme c'était souvent le cas dans les systèmes de contrôle de version ayant fait leur temps, comme CVS et Subversion (également connu sous le nom de SVN), dans Git, chaque copie de travail du code est également un dépôt qui contient l'historique complet de tous les changements.

En plus d'être décentralisé, Git a été conçu pour répondre à trois objectifs : performances, sécurité et flexibilité.

Une critique récurrente affirme que Git est difficile à maîtriser. Une partie de la terminologie de Git sera nouvelle pour les nouveaux venus. Pour les utilisateurs d'autres systèmes, elle peut être différente. Par exemple, revert dans Git a une signification différente de celle de SVN ou CVS. Néanmoins, Git est très puissant et fournit de nombreuses fonctionnalités à ses utilisateurs. Apprendre à utiliser ces fonctionnalités peut prendre un certain temps, mais une fois assimilées, elles permettront aux équipes d'augmenter leur vitesse de développement.

Diversion, une alternative à Git orientée développeurs de jeux vidéo

Diversion se présente comme une alternative à Git et permet de gérer des fichiers binaires et volumineux, comme des images, des vidéos ou des modèles 3D. Diversion utilise le cloud pour stocker l’historique des modifications, ce qui permet de cloner rapidement des dépôts de grande taille, sans avoir à télécharger tous les commits passés.

Diversion offre également des fonctionnalités innovantes pour faciliter la collaboration entre les développeurs. Par exemple, Diversion permet de synchroniser en temps réel les modifications effectuées sur les fichiers, même avant qu’elles ne soient validées (commit). Ainsi, les développeurs peuvent partager leur travail avec leurs collègues, recevoir des feedbacks ou faire du pair programming. Diversion permet aussi de synchroniser automatiquement les environnements de travail, comme le PC et une instance EC2. Diversion supporte également des stratégies de branching et de merging similaires à celles de Git, avec une commutation rapide entre les branches et une merging facile.

Nom : instant.png
Affichages : 8854
Taille : 24,5 Ko

Diversion se distingue aussi par son système de permissions granulaires, qui permet d’assigner des droits d’accès à des dossiers spécifiques, pour des utilisateurs ou des équipes. Cela permet de limiter l’accès à certaines parties du code, ou de permettre des contributions extérieures à un projet, sans avoir à partager tout le dépôt ou à en créer un séparé. Sur le site de présentation, il est indiqué que la fonctionnalité sera bientôt disponible.

Nom : granular.png
Affichages : 1468
Taille : 52,6 Ko

Diversion est compatible avec Git, ce qui signifie qu’il est possible de synchroniser des dépôts existants entre les deux systèmes, ou d’utiliser Git pour cloner à partir de Diversion. Cela permet d’intégrer facilement Diversion avec des outils modernes de CI (intégration continue).

Nom : git.png
Affichages : 1463
Taille : 57,1 Ko

Diversion a noté quelques différences entre son outil et d'autres outils disponibles sur le marché.

L'entreprise note par exemple que par rapport à Git, son outil est :
  • Facile à utiliser - pas besoin de lire un livre avant de commencer. Il n'est pas possible de faire des erreurs comme avec Git.
  • Fonctionne bien avec les fichiers volumineux - téléchargez tout ce dont vous avez besoin
  • Synchronise vos modifications sur le cloud pendant que vous travaillez

Par rapport à SVN :
  • Vous n'avez pas besoin d'un serveur Diversion, il est dans le cloud.
  • Diversion a de vraies branches, comme Git

Par rapport à Perforce :
  • Vous n'avez pas besoin d'un serveur Diversion, il est dans le cloud.
  • Il n'y a rien à installer, il suffit de s'inscrire et de commencer à créer
  • Pas besoin d'acheter des licences !

D'accord, mais pourquoi un autre VCS ?

Sasha Medvedovsky, co-fondateur de Diversion, explique pourquoi ils en sont venus à lancer ce VCS. Ci-dessous, ses propos :

Il ne fait aucun doute que Git a grandement amélioré nos vies, et a joué un rôle important dans l'avancement du développement logiciel au cours des 18 dernières années. Mais il a été conçu pour un monde très différent en 2005 (réseaux lents, projets beaucoup plus petits, pas de cloud), et n'est pas l'outil idéal pour tout le monde aujourd'hui.

Le plus grand inconvénient de Git est son évolutivité limitée, tant en ce qui concerne la taille des dépôts et des fichiers que le nombre d'utilisateurs simultanés. C'est la raison pour laquelle Google et Meta ont construit leurs propres systèmes de contrôle de version. C'est également la raison pour laquelle d'autres grandes entreprises, notamment dans le domaine du développement de jeux, des semi-conducteurs et des services financiers, utilisent encore des outils anciens tels que SVN et Perforce.

Un autre problème que nous essayons de résoudre est la fameuse complexité de Git. Dans notre précédente startup, un data scientist a accidentellement détruit un mois de travail de son équipe en utilisant la mauvaise commande Git (EDIT : nous avons finalement été en mesure de restaurer à partir d'un clone de repo non mis à jour, après quelques heures). En tant que développeur ayant utilisé CVS et SVN avant la création de Git, je me suis souvent demandé pourquoi Git était si difficile à apprendre, comparé à d'autres outils.

D'autre part, les capacités de branching et de merging de Git sont exceptionnelles - cela a permis les méthodologies modernes de développement de logiciels que nous prenons tous pour acquis aujourd'hui (par exemple, les branches de fonctionnalités, CI/CD), améliorant considérablement la vélocité des développeurs.


Nous nous demandions s'il était possible de créer un système de contrôle de version facile à utiliser, rapide et évolutif, avec les capacités de branching de Git ? Et qu'est-ce qui peut encore être amélioré, tant que nous y sommes ?

La collaboration en temps réel (par exemple, Google Docs, Figma) est l'une des possibilités offertes par les outils modernes de type "cloud". Bien que les développeurs ne souhaitent pas nécessairement que leur travail en cours soit visible par tout le monde, il peut être très utile de le partager facilement pour obtenir un retour d'information avant un commit, pour détecter et prévenir les conflits de merging, et pour avoir une visibilité sur les parties de la base de code qui sont modifiées par d'autres.

Diversion est construit sur un stockage distribué et des bases de données, accessible via une API REST, et fonctionne sur une infrastructure cloud sans serveur. Chaque opération de dépôt est un appel API (commit, branch, merge, etc.). Le client de bureau synchronise tous les travaux en cours avec le cloud en temps réel (même avant un commit). Les utilisateurs peuvent travailler avec Diversion en utilisant un CLI interactif, une interface Web ou des plugins IDE (actuellement JetBrains, d'autres seront bientôt disponibles). L'interface Web permet d'effectuer les opérations les plus basiques, sans avoir besoin d'installer un client de bureau.

Diversion est compatible avec Git, et peut se synchroniser avec les dépôts Git existants (chaque nouveau commit dans Diversion va dans Git, et vice versa). Nous prévoyons de le publier en open source une fois que la base de code aura atteint sa maturité, et lorsque nous aurons mis en place un répertoire de dépôts open source sur notre site web (naturellement, le code de Diversion est géré sur Diversion !)

Nous sommes en bêta ouverte, vous pouvez l'essayer. C'est entièrement en libre-service et il n'y a pas besoin de parler à qui que ce soit, et c'est gratuit pour les petites équipes.

Construire un contrôle de version est difficile (comme nous l'avons appris), et Diversion a encore un long chemin à parcourir. Nous travaillons actuellement sur l'amélioration de la vitesse, les intégrations CI, les plugins pour les EDI et les moteurs de jeu, et d'autres améliorations d'utilisation. Nous serions ravis d'avoir votre avis et vos commentaires sur ce que nous avons fait jusqu'à présent !

Conclusion

Diversion a été fondée en 2021 par Egal Lazarev et Sasha Medvedovsky, deux ingénieurs logiciels expérimentés, qui ont notamment servi dans des unités d’élite de la cyber-intelligence israélienne. Diversion fait partie de la promotion S22 de Y Combinator, le célèbre accélérateur de startups basé en Californie. Diversion compte actuellement 9 employés basés à Tel Aviv, et recrute pour des postes en marketing et en ingénierie.

Diversion vise à révolutionner le domaine du contrôle de version, en proposant une solution adaptée aux besoins des équipes de développement logiciel modernes, qui travaillent avec des fichiers de plus en plus volumineux et complexes, et qui ont besoin de collaborer efficacement et en toute sécurité. Diversion se positionne comme une alternative au Git basée sur le cloud, qui offre des avantages en termes de performance, de simplicité d’utilisation et de fonctionnalités innovantes. Diversion est particulièrement utile pour les entreprises de développement de jeux vidéo, qui ont besoin de gérer des fichiers binaires lourds, et de prévenir les conflits de merging

Source : Diversion

Et vous ?

Quels sont les avantages et les inconvénients de Diversion par rapport à Git ?
Pensez-vous que Diversion peut remplacer Git comme le standard du contrôle de version ?
Quels sont les cas d’usage les plus adaptés à Diversion ?
Quelles sont les fonctionnalités que vous aimeriez voir ajoutées à Diversion ?
Avez-vous déjà testé Diversion ? Si oui, quel a été votre retour d’expérience ? Si non, qu’est-ce qui vous retient ?