SDKMAN - Tot, es lebe SDKMAN


TL; DR: SDKMAN CLI wird in Golang neu geschrieben

Sechs Jahre sind vergangen, seit wir die erste Version von SDKMAN veröffentlicht haben. In früheren Versionen war es als GVM bekannt und wurde zum Verwalten von Groovy und verwandten Tools verwendet. Es stellte sich schnell heraus, dass es nicht auf das Groovy-Ökosystem beschränkt sein sollte und auch auf andere JVM-SDKs angewendet werden kann. Zu diesem Zeitpunkt wurde die GVM in SDKMAN umbenannt. Obwohl sich der Name geändert hat, bleibt die Kerntechnologie dieselbe.

So wie GVM einst seinen Namen übertroffen hat, hat SDKMAN die Technologie, auf der es aufgebaut war, übertroffen. Trotz der Tatsache, dass Backend-Services durch bessere Alternativen ersetzt wurden, ist der CLI-Client derselbe geblieben und zu unserer größten Enttäuschungsquelle geworden.

Am Anfang haben wir Bash ausgewählt, um die GVM zu erstellen, da sie alle Anforderungen abdeckt. Es war auf allen * nix-Systemen verfügbar, funktionierte schnell und bot uns eine Laufzeitumgebung ohne zusätzliche Abhängigkeiten oder zusätzlichen Aufwand. Dies bedeutete, dass das Herunterladen einer neuen Installation auf fast jedem System praktisch mühelos war.

Trotz der Vorteile, die Bash uns im Laufe der Zeit gebracht hat, haben wir bei dieser Wahl viele Probleme festgestellt:

  • Windows-Benutzer müssen durch die Installation von Cygwin / Git Bash durch die Rahmen springen
  • Unsere Software funktioniert nicht immer gut mit alternativen Schalen wie Fischschalen
  • Für die Kompatibilität mit ZSH müssen spezielle Hacks unterstützt werden
  • Inkompatibilität zwischen Hauptversionen von Bash (und Apples hartnäckige Weigerung, OSX mit einer modernen Version von Bash zu versenden, aufgrund alberner Lizenzprobleme)
  • Netzwerkprobleme aufgrund der Verwendung von Curl als Haupt-http-Client
  • Schwierigkeiten beim effektiven Testen von Bash-Code

All dies sagt uns, dass es Zeit ist, Bash zugunsten von etwas anderem zu verlassen, und so begann ich in den letzten Monaten, Go als praktikable Alternative zu studieren. Nach Abwägung der Gewinnchancen können die Vorteile der CLI-Implementierung auf Go wie folgt zusammengefasst werden:

  • statisch typisierte kompilierte Sprache zur Erkennung von Fehlern während der Entwicklung
  • unglaublich schnell
  • nicht mehr süchtig nach wackeligen Böden unter den Füßen
  • Erstellt nativ kompilierte Binärdateien für alle Architekturen und eliminiert unerwartete plattformbedingte Nebenwirkungen
  • einfachere Unterstützung für Akzeptanztests durch Godog (Version von Cucumber in Go geschrieben)
  • ermöglicht es Ihnen, das Verhalten der aktuellen SDKMAN-Implementierung zu überdenken (dazu später mehr)
  • Verbessert die Zusammenarbeit und den Community-Input
  • einfach und lässt uns einfach diesen verdammten Job machen (Get Shit Done)

Nachdem ich das alles verstanden hatte, beschloss ich, die erste funktionierende Version der neuen SDKMAN CLI-Schnittstelle zu erstellen . Nach Abschluss dieser Arbeit wird die neue Version zur Standardversion von SDKMAN. Auf diese Weise können wir natürlich auch überdenken, wie es derzeit funktioniert. Sechs Jahre später haben wir gelernt, dass es funktioniert und nicht funktioniert, und wir können dieses Wissen in unserer brillanten neuen Version in Erinnerung rufen.

Hier ermutigen wir unsere Community, sich anzuschließen und Teil der Kommunikation zu werden. Wir möchten wissen, welche Funktionen Sie sehen möchten (oder nicht möchten). Dazu eröffnen wir einen neuen Raum in Gitter . Wir laden Sie ein, sich anzumelden und teilzunehmen, indem Sie Feedback zur neuen CLI geben. Wir verwenden Cucumber weiterhin, um das Verhalten in einer verständlichen Sprache auf dieselbe Weise wie bei der Bash-Version zu beschreiben, und wir bitten alle, an der Implementierung jeder Funktion teilzunehmen. Nach wie vor möchten wir, dass diese Funktionen eine Live-Dokumentation bilden.

Deshalb habe ich diesen Beitrag so genannt. Wir haben gerne die Originalversion von SDKMAN entwickelt, aber wir haben festgestellt, dass es Probleme gibt. Jetzt haben wir die Möglichkeit, es zuverlässiger zu machen und für alle zu verbessern. Wir freuen uns über jede Hilfe auf dem Weg zur Implementierung der neuen CLI!

Von einem Übersetzer: SDKMAN ist einer meiner Lieblingspaketmanager. Es beginnt mit der Installation von JVM, Gradle und Kotlin auf einem neuen Computer. Aus diesem Grund haben wir bei CUBA Platform erst kürzlich damit begonnen, unser CUBA CLI- Dienstprogramm in SDKMAN zu veröffentlichen. Ich habe diese Übersetzung gemacht, weil ich mich über die Entwicklung von SDKMAN freue und mich auf die neue Version freue.

Source: https://habr.com/ru/post/de424157/


All Articles