Naming Matters: 4 Tools, die keine CDEs sind

  • Veröffentlicht

Der CDE-Markt ist so etwas wie der Wilde Westen. Viele neue Produkte schießen aus dem Boden und duellieren sich um die Sichtbarkeit am Markt. Selbst Anbieter, die schon lange auf dem Markt sind, bauen ihre Produkte um oder haben erst kürzlich stabile Versionen von Cloud Development Environments veröffentlicht.

Das stellt uns vor ein kleines Rätsel. Die CDE-Kategorie ist wie dieser eine Freund, der darauf besteht, geheimnisvoll und undefiniert zu sein… und damit mehr Verwirrung stiftet als ein Kreuzworträtsel in einer Fremdsprache. Denn einige Unternehmen werfen mit dem Begriff “CDE” um sich wie mit Konfetti bei einer Parade. So werden zum Beispiel auch Cloud-IDEs oft als CDEs bezeichnet. Das ist terminologisch falsch!

Aber auch Dev Containers, Devfile, Nix und Devbox von Jetpack werden mit CDEs gleichgesetzt. Sie sind so etwas wie die coolen Kids in der Klasse der Entwicklungstools und schaffen es oft in die klassischen „Top-CDE-Tools“-Listen und Blogbeiträge.

Aber unserer bescheidenen Meinung nach ist das nicht richtig. Diese Tools sind keine CDEs. (Nicht falsch verstehen: Sie können gute Lösungen für Entwicklungsteams sein, die keine „vollwertige“ CDE benötigen).

Und warum? Wir richten uns nach dieser Definition: CDEs ermöglichen es Entwicklerinnen und Entwicklern, ihre Arbeit in einem Cloud-Workspace zu erledigen. Dort werden alle benötigten Tools bereitgestellt.

In diesem Beitrag und mit dieser Definition im Hinterkopf beschreiben wir, warum Dev Containers, Devfile, Nix und Devbox von Jetpack KEINE CDEs sind.

#1 Dev Containers

Dev Containers ist ein teilweise quelloffener Standard zur Beschreibung von containerisierten Entwicklungsumgebungen. Es unterscheidet sich von anderen Produkten dadurch, dass es sich nicht um eine Plattform handelt, die das Deployment und die Verwaltung mehrerer CDEs ermöglicht, sondern um ein kleines Tool, das aus einer Befehlszeilenschnittstelle (CLI) besteht. Entwickler können damit einen Container lokal deployen. Die Konfiguration des Containers erfolgt über eine devcontainer.json Konfigurationsdatei.

Da das Dev-Container-Projekt keine Tools für die Ausführung von Dev-Containern in der Cloud oder für die Remote-Verbindung zu Dev-Containern enthält, ist es keine eigenständige CDE. Das ist auch nicht das Ziel des Dev Containers-Projekts: Es zielt in erster Linie darauf ab, einen Standard für die Definition von containerisierten Entwicklungsumgebungen zu definieren.

Mehr Informationen: https://containers.dev/

#2 Devfiles

Devfile ist ein Open-Source-Standard für die Definition von containerisierten Entwicklungsumgebungen. Ähnlich wie der Devcontainers-Standard ist er selbst keine CDE-Lösung, sondern ein Standard, den viele CDE-Produkte für die Konfiguration von CDEs verwenden.

Mehr Informationen: https://devfile.io/
Dokumente: https://devfile.io/docs/

#3 Nix-Paketmanager

Wie der Name schon sagt, ist Nix ein Paketmanager und kein CDE-Tool. Ein Paketmanager ermöglicht die Definition von mehreren Libraries in einem Paket, welches alle Abhängigkeiten für eine Anwendung enthält. Es ist auch möglich, Entwicklungsumgebungen als ein solches Paket zu definieren. Nix stellt dies hier vor: https://nixos.org/#asciinema-demo-example_3.

Der USP von Nix ist, dass es isolierte Pakete erstellt. Das bedeutet, dass jedes Paket alles enthält, was es braucht. Und, dass die Definition eines Pakets die explizite Angabe aller Abhängigkeiten in der benötigten Version erfordert. Dadurch ist es möglich, dass verschiedene Pakete verschiedene Versionen der gleichen Bibliothek verwenden, wodurch Abhängigkeitskonflikte vermieden werden.

Da Abhängigkeitskonflikte oft ein großes Problem sind, wenn man an verschiedenen Versionen der Software arbeitet (die unterschiedliche Versionen von Abhängigkeiten benötigen), kann man dies lösen, indem man Nix-Pakete für die verschiedenen Versionen erstellt.

Da Nix jedoch ein Paketmanager ist, bietet es keine Plattform zur Verwaltung von CDEs oder eine Infrastruktur, auf der diese ausgeführt werden können. Daher ist Nix auch kein CDE.

Mehr Informationen: https://nixos.org/
Dokumente: https://nix.dev/

#4 Devbox von Jetpack

Devbox basiert auf dem Nix-Paketmanager und stellt isolierte Nix-Pakete für Entwicklungsumgebungen zur Verfügung.

Durch die Erstellung von CDEs als Pakete unterscheidet sich der Grad der Isolierung von dem eines Containers oder einer VM: ein isoliertes Paket enthält alle Abhängigkeiten, die das Paket zur Ausführung benötigt, teilt aber das Betriebssystem mit dem Rest der Umgebung. Durch die Isolierung der Pakete ermöglicht Nix die Beseitigung von Abhängigkeitskonflikten.

Die Konfiguration der Devbox-Umgebungen erfolgt durch die Anpassung vorhandener Devbox-Vorlagen über ein CLI. Die Konfiguration wird in einer devbox.json gespeichert, die in das Quellcode-Repository übertragen werden soll, wo andere Entwickler_innen dann dieselbe Devbox mit derselben Konfiguration deployen können. Das Hinzufügen von benutzerdefinierten Skripten, z.B. fürs Deployen der eigenen Software ist ebenfalls möglich. 

CDEs als Pakete sind eine interessante Idee: Sie machen es sehr einfach, die Pakete zu verteilen. Entwickler_innen installieren einfach ein Paket (basierend auf einer Konfigurationsdatei, die sie aus dem Quellcode-Repository erhalten) mit einem Paketmanager.

Devbox befasst sich aber nur mit dem Problem der Abhängigkeitskonflikte – was der Nix-Paketmanager für sie erledigt. Jetpack stellt Vorlagen für Entwicklungsumgebungen bereit, die mit dem Nix-Paketmanager verwendet werden können. Es stellt keine Tools für die Remote-Entwicklung zur Verfügung und kann daher nicht als CDE bezeichnet werden.

Es handelt sich nicht um eine Cloud- oder Remote-Entwicklungsumgebung. Entwickler_innen installieren die CDE-Pakete lokal. Das bedeutet, dass die Entwickler_innen mit der Rechenleistung, die sie lokal zur Verfügung haben, nicht weiterkommen. Die Pakete könnten allerdings überall installiert werden. Die Verwaltung und Verbindung zu der CDE ist aber dann das Problem der Entwickler_innen.

Mehr Informationen: https://www.jetpack.io/devbox
Dokumente: https://www.jetpack.io/devbox/docs/

Zusammenfassung

Zahlreichen neue Cloud Development Environments-Produkte schießen aus dem Boden. Der Begriff „CDE“ wird lose umhergeworfen, was zusätzlich verwirrt. Vor allem Dev Containers, Devfiles, Nix und Devbox von Jetpack werden oft fälschlicherweise als CDEs bezeichnet. Diese Tools mögen zwar ihre Nische haben, aber passen nicht in die CDE-Kategorie. Was ist Ihre Meinung dazu? Teilen Sie diesen Beitrag in den sozialen Medien und markieren Sie uns, um sich an der Diskussion zu beteiligen.

Jetzt den Cloudomation-Newsletter abonnieren

Werden Sie Cloudomation-Insider. Immer am Ende des Monats neue News zum Thema „Remote Development Environments“ und „DevOps“ erhalten. 




    Johannes Ebner

    Marketing Manager