Yarn - der JavaScript Dependency Manager ist jetzt Open Source

21. Oktober 2016

Veröffentlicht in:

Webentwicklung

Yarn schlägt npm in der Performance

In der JavaScript Programmierung werden immer wieder zusätzliche Code-Teile und -Pakete hinzugefügt um eigenen Code zu erweitern. Bislang stand dafür fast ausschließlich npm (Node.js) oder Bower als Paketverwaltung zur Verfügung. Mit Yarn wurde jetzt eine zuverlässige Alternative geschaffen, die zudem eine deutlich höhere Performance und weitere besondere Features verspricht. Technisch gesehen ist Yarn ein npm Paket und erweitert bzw. optimiert dessen Funktionalitäten in der Paketverwaltung. Der große Vorteil, die mittlerweile über 300.000 freie Pakete aus dem npm Repository können ohne weitere Umstellung von Yarn verwendet werden. Besonders ist weiterhin: Yarn wurde federführend von Facebook und Google entwickelt und jetzt mit einer Open Source Lizenz für die weltweite Entwickler-Gemeinschaft veröffentlicht. Das Feedback zu Yarn ist bislang durchweg positiv: zahlreiche Unternehmen und eigenständige Entwickler sind begeistert von den neuen Möglichkeiten, die Yarn für die Paketverwaltung in JavaScript bereit hält.

Facebook, Google und andere stehen hinter Yarn

Die beiden Konzerne haben sich zusammengeschlossen und die Entwicklung von Yarn gemeinsam vorangetrieben. Facebook hat in einem offiziellen Statement dafür eine Vielzahl von Gründen angeführt, die das Unternehmen zur Entwicklung eines neuen Paketmanagers veranlasst hat. Entscheidendes Kriterium war demnach, das npm für seine reibungslose Funktion auf eine permanente Internetverbindung angewiesen war. In den abgeschotteten virtuellen Systemen und Sandboxes, die Facebook für die Entwicklung seiner JavaScript-Anwendungen verwendet, ist diese jedoch nicht immer vorhanden. Yarn ermöglicht es nun, Abhängigkeiten auch offline aufzulösen und Pakete zu installieren, wenn auf diese bereits zu einem früheren Zeitpunkt zugegriffen wurde. Auch bei Performance und der Sicherheit stießen die Entwickler der Unternehmen in der Vergangenheit immer wieder auf Probleme. Gemeinsam mit Google, Tilde und Exponent entschloss sich Facebook also eine zuverlässige und komfortable Alternative für das bisher fast ausschließlich gebrauchte npm zu entwickeln. So entstand Yarn, das nun als Open-Source Software zur Verfügung steht. Von der Open-Source Lizenz und der stetigen Weiterentwicklung durch die Community werden Entwickler und auch Facebook & Co in Zukunft gleichermaßen profitieren.

Open Source Manager für die Kommandozeile

Wer ein aufwendiges, grafisches Interface sucht, wird von Yarn sicher erst einmal enttäuscht sein. Anders als beispielsweise npm-gui steht für Yarn bislang noch keine Oberfläche mit Drag'n Drop oder Bedienung per Mouse zur Verfügung, sondern lediglich eine Version für die Kommandozeile. Die Installation ist relativ einfach über npm möglich und erfolgt über den Befehl "npm install -global Yarn". Alternativ stehen auch Skripte für Terminals mit Bash oder Pakete für Debian, Ubuntu, CentOS und Arch Linux und ein Windows Installer zum Download bereit. Einmal installiert, greift man über die Kommandozeile direkt auf Yarn zu. Die Syntax lehnt sich dabei dicht an die von npm an, so dass der Umstieg leicht und intuitiv vollzogen werden kann. Wie bei npm können Pakete und Dependecies installiert, initiiert und entfernt oder Updates auf eine neue Version vorgenommen werden.

Yarn bietet deutlich bessere Performance durch parallele Operationen

Ein entscheidender Vorteil gegenüber npm verspricht Yarn mit einer spürbar höhere Verarbeitungsgeschwindigkeit. Erreicht wird diese durch eine Parallelisierung der Prozesse, um so die Nutzung der Ressourcen zu optimieren und die gesamte Rechenperformance einer Umgebung zu verwenden. Erste Benchmarks mit Yarn und npm haben in der Tat eine beeindruckende Steigerung der Geschwindigkeit ergeben. In einzelnen Durchläufen erreicht Yarn dabei eine bis zu fünfmal schnellere Verarbeitung einer Installation mit mehrfachen Abhängigkeiten und liegt im Durchschnitt deutlich unter einem Viertel der von npm benötigten Zeit. Gleichzeitig steigt allerdings die Auslastung der CPU um etwa das Doppelte an.

Höhere Stabilität und leichtere Fehleranalyse durch Lockfiles

Im Gegensatz zu npm legt Yarn einen hohen Wert auf die Einheitlichkeit von Umgebungen innerhalb eines Teams. Es erreicht diese durch das Anlegen eines Lockfiles, mit dem sichergestellt wird, dass jedes Mitglied einer Gruppe von Entwicklern mit exakt denselben Versionen der Pakete arbeitet. Fehler und Bugs werden dadurch leichter reproduzierbar und können auf unterschiedlichen Versionen getestet werden. Eine aufwendige Suche nach Fehlfunktionen, die nur auf bestimmten Rechnern auftreten, entfällt somit.

Yarn bringt neues Design für höhere Flexibilität

Das vollständig andere Programmdesign ist einer der Gründe, warum die Entwickler von Yarn nicht an der Weiterentwicklung von npm teilgenommen, sondern einen eigenständigen Package Manager entwickelt haben. Die verantwortlichen Entwickler geben unter anderem an, unabhängig voneinander an einer Implementierung der gewünschten Funktionen gearbeitet zu haben. Sie seien jedoch an dem Konzept von npm gescheitert, das ein inkrementelles Hinzufügen von neuen Funktionen nicht erlaubt hätte und damit einem verbesserten Verhalten schlicht im Weg stand. Um diese Features zu ermöglichen, müsse sehr tief in das Kernprogramm eingegriffen werden. Darunter fallen beispielsweise die Art, in der Datenverbindungen und Downloads verarbeitet werden oder auch die Installationsroutine selbst. Projekte mit Yarn sind vollständig kompatibel zu npm Projekten - der neue Manager greift bislang über einen Proxy Server auf die gleichen Repositories zu.

Höhere Sicherheit und Offline Installationen

Für die Speicherung von Paketen verwendet Yarn, ähnlich wie bei manchen Linux-Distributionen, einen globalen Cache, in dem Downloads lokal gespeichert werden. Es ist deshalb im Gegensatz zu npm auch ohne Netzwerk in der Lage, Installationen durchzuführen und Abhängigkeiten aufzulösen. Vollständig neu ist die Option, npm Packages in einem externen Archiv zu speichern sowie von diesem zu installieren oder sie zu einem Projekt hinzuzufügen. Dadurch müssen die entsprechenden Code-Teile nicht neu installiert werden und stehen unabhängig von den Repositories zur Verfügung. Probleme wie die fehlenden Micromodule, die im März 2016 eine Kompilierung zahlreicher Programme mittels npm verhinderten, können so effektiv ausgeschlossen werden. Auch die Migration wird deutlich erleichtert und ist mit Yarn nun auch offline möglich.

Die künftigen Perspektiven von Yarn

Der neue Paket-Manager Yarn versteht sich ausdrücklich als eine Erweiterung von npm und keinen vollständigen Ersatz oder gar eine direkte Konkurrenz. Er greift nicht zuletzt auch selbst auf die npm Repositories zurück, um neue Pakete zu laden. Von dessen Entwicklerteam wurde Yarn in seinem offiziellen Blog wiederum ausdrücklich begrüßt. Eine nicht ganz unwesentliche Einschränkung ist bislang noch, dass Yarn nur mit öffentlichen Paketen zusammenarbeitet. Da sich der Client (noch) nicht wie der offizielle npm-Client auf den Server authentifiziert, ist ein Zugriff auf private und kostenpflichtige Pakete bislang noch nicht möglich. Yarn selbst sagt dazu, dass es sich diesem Problem bewusst ist und an einer Lösung arbeitet. Gleichzeitig gibt es sich optimistisch, dass viele Entwickler auf die eigene Software umsteigen werden. Besonders bei großen Projekten böten sich viele Vorteile wie die deutlich schnellere Verarbeitung, höhere Integrität und Flexibilität sowie eine einfache Versionskontrolle.

In einem nächsten Schritt wird aktuell gerade daran gearbeitet, Yarn in den Exponent Developer zu integrieren. Sollte dies wie gewünscht funktionieren, könnte das Programm auch ohne aufwendige Anpassungen für bereits bestehende Projekte verwendet werden. Das würde die Verbreitung mit Sicherheit noch weiter beschleunigen und die Popularität noch einmal deutlich erhöhen. Allerdings ist die Resonanz auch jetzt schon sehr hoch, denn sowohl für kleine als auch für große Projekte bietet Yarn einige Vorteil. Die Unterstützung durch große Konzerne wie Facebook und Google sind außerdem ein Garant für langfristige Finanzierung und die Open-Source Lösung sichert die permanente Weiterentwicklung. Yarn wird sich vermutlich recht schnell als eine ernst zu nehmende, weit verbreitete Alternative zu npm durchsetzen können.

Können wir weiterhelfen?

Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!

Kostenloses Erstgespräch