TL; DR: SDKMAN CLI sera réécrit à GolangSix ans se sont écoulés depuis la sortie de la première version de SDKMAN. Dans les versions antérieures, il était connu sous le nom de GVM et était utilisé pour gérer Groovy et les outils associés. Il est rapidement devenu évident qu'il ne devait pas se limiter à l'écosystème Groovy et pouvait également être appliqué à d'autres SDK JVM. À ce stade, le GVM a été renommé SDKMAN. Bien que le nom ait changé, la technologie de base reste la même.
Tout comme GVM a dépassé son nom, SDKMAN a dépassé la technologie sur laquelle il a été construit. Malgré le fait que les services backend ont été remplacés par de meilleures alternatives, le client CLI est resté le même et est devenu notre plus grande source de déception.
Au début, nous avons choisi Bash pour créer le GVM car il couvrait toutes les exigences. Il était disponible sur tous les systèmes * nix, il a fonctionné rapidement et nous a fourni un environnement d'exécution sans aucune dépendance ou surcharge supplémentaire. Cela signifiait que le téléchargement d'une nouvelle installation était pratiquement sans effort sur presque tous les systèmes.
Malgré les avantages que Bash nous a apporté, au fil du temps, nous avons trouvé de nombreux problèmes avec ce choix:
- Les utilisateurs de Windows doivent sauter à travers les cerceaux en installant Cygwin / Git Bash
- notre logiciel ne fonctionne pas toujours bien avec des coquilles alternatives comme la coquille de poisson
- des hacks spéciaux doivent être pris en charge pour la compatibilité avec ZSH
- incompatibilité entre les principales versions de Bash (et le refus obstiné d'Apple de livrer OSX avec une version moderne de Bash en raison de problèmes de licence stupides)
- problèmes de réseau dus à l'utilisation de curl comme client http principal
- difficultés avec les tests de code Bash efficaces
Tout cela nous dit qu'il est temps de quitter Bash pour autre chose, alors ces derniers mois, j'ai commencé à étudier le Go comme alternative viable. Après avoir pesé toutes les chances, les avantages de l'implémentation CLI sur Go peuvent être résumés comme suit:
- langage compilé de manière statique pour détecter les erreurs pendant le développement
- incroyablement rapide
- n'est plus accro à un sol tremblant sous le pied
- crée des fichiers binaires compilés en mode natif pour toutes les architectures, éliminant les effets secondaires inattendus liés à la plate-forme
- prise en charge plus facile des tests d'acceptation via Godog (version de Cucumber écrite en Go)
- vous permet de repenser certains comportements de l'implémentation actuelle de SDKMAN (plus d'informations à ce sujet plus tard)
- Améliore la collaboration et la contribution de la communauté
- simple et nous permet de faire ce putain de travail (Get Shit Done)
Comprenant tout cela, j'ai décidé de créer la
première version de travail de la nouvelle
interface CLI SDKMAN . Après avoir terminé ce travail, la nouvelle version deviendra la version standard de SDKMAN. Bien sûr, cela nous permettra également de reconsidérer son fonctionnement actuel. Six ans plus tard, nous avons appris que cela fonctionne et ne fonctionne pas, et nous pouvons nous souvenir de cette connaissance dans notre brillante nouvelle version.
Ici, nous encourageons notre communauté à rejoindre et à faire partie de la communication. Nous voulons savoir quelles fonctionnalités vous aimeriez voir (ou ne voudriez pas). Pour ce faire, nous ouvrons une nouvelle salle à
Gitter . Nous vous invitons à nous rejoindre et à participer en donnant votre avis sur la nouvelle CLI. Nous utilisons toujours Cucumber pour décrire le comportement dans un langage compréhensible de la même manière qu'avec la version Bash, et nous demandons à tout le monde de participer à l'implémentation de chaque fonction. Comme précédemment, nous voulons que
ces fonctions constituent une documentation en direct.
C'est pourquoi j'ai appelé ce poste comme ça. Nous avons aimé développer la version originale de SDKMAN, mais nous avons réalisé qu'il y avait des problèmes. Nous avons maintenant la possibilité de le rendre plus fiable et de l'améliorer pour tout le monde. Nous serons heureux de toute aide sur le chemin de la mise en œuvre de la nouvelle CLI!
D'un traducteur: SDKMAN est l'un de mes gestionnaires de paquets préférés, il commence à installer JVM, Gradle et Kotlin sur une nouvelle machine. C'est pourquoi, tout récemment, chez CUBA Platform, nous avons commencé à publier notre utilitaire CUBA CLI dans SDKMAN. J'ai fait cette traduction car je suis content de voir le développement de SDKMAN et j'ai hâte de voir sa nouvelle version.