Contao-News

Wir informieren Dich hier regelmäßig zu Updates, stellen Best-Practice-Arbeiten vor und berichten über Aktuelles aus dem Contaoversum.

Composer 2.0 🎉

von Andreas Schempp – Aktuelles

Am 24. Oktober 2020, etwa zur Mittagszeit, war endlich da, worauf die PHP Community und auch die Contao Entwickler lange gewartet haben: Composer 2.0 wurde veröffentlicht!

Der Sprung auf Version 2 resultiert dabei nicht aus super Feature XY, sondern aus der Definition von Semantic Versioning: Eine neue Major-Version wird veröffentlicht, wenn nicht-rückwärtskompatible Änderungen nötig sind. Diese API-Breaks haben es in sich, denn erst sie erlaubten die nötigen Änderungen, um einige Schwächen der Version 1 auszumerzen.

Performance, Performance, Performance

In Composer 2 dreht sich alles um die Geschwindigkeit. Das grösste Ärgernis war bisher die lange Dauer und der hohe RAM-Verbrauch beim Auflösen der Paketabhängigkeiten. Dieses NP-vollständige Problem lässt sich mit keiner bekannten mathematischen Formel beschleunigen.

Das Erfüllbarkeitsproblem der Aussagenlogik ist in exponentieller Zeit in der Anzahl der Variablen entscheidbar […]. Ob es auch einen Algorithmus gibt, der SAT in Polynomialzeit löst, ist nicht bekannt.

Wikipedia

Leider können wir die Mathematik nicht neu erfinden. Doch die API-Änderungen eröffneten Möglichkeiten, diese Anzahl der Variablen zu reduzieren, sodass dieser Prozess massiv schneller ist. Auch an allen anderen Ecken und Enden wurde optimiert, beispielsweise indem Metainformationen und Pakete jetzt parallel heruntergeladen werden. Alles in allem resultiert daraus ein Performance-Gewinn von gegen 50 Prozent!

Quelle: packagist.com

Weitere technische Neuerungen sind direkt im (englischen) Blog-Post zu lesen: https://blog.packagist.com/composer-2-0-is-now-available/

Auswirkungen fĂĽr Entwickler

Für Erweiterungen bzw. Composer Pakete ergibt sich in den allermeisten Fällen keine Änderungen. Betroffen von den API-Änderungen sind Pakete vom Typ composer-plugin, die nötigen Änderungen sind aber gut dokumentiert und leicht zu ändern. Bei Contao verwenden wir zwei solcher Plugins; eines für die Managed Edition und eines für Contao 3 Erweiterungen. Beide sind bereits seit einigen Wochen für Composer 2 angepasst.

Mitwirken von Contao

Contao ist seit mehr als fünf Jahren ein Vorreiter in der Nutzung von Composer. Mit Contao 4 wurde die Paketverwaltung komplett umgestellt, sodass Contao-Entwickler vom kompletten PHP-Universum profitieren können. Dabei ist der Contao Manager die einzige bekannte grafische Benutzeroberfläche für Composer! Nicht zuletzt durften wir Jordi Boggiano und Nils Adermann – die Hauptentwickler von Composer – auch bereits an Contao Konferenzen kennenlernen.

So ist es nicht verwunderlich, dass die Contao Core-Entwickler seit längerem aktiv an der Weiterentwicklung von Composer beteiligt sind. Yanick Witschi ist nicht nur mitverantwortlich für die Performance in Composer 2.0, er hat bereits weitere Ideen wie Composer in Zukunft noch schneller werden kann; und die Zahlen sind beachtlich!

Beispiel-Installation fĂĽr Contao Managed Edition
  Composer 1 Composer 2 Yanick's Vorschlag
Memory-Verbrauch ~ 3350 MB ~ 1520 MB ~ 135 MB
Dauer 84 Sek. 28.95 Sek. 3.25 Sek.

Einsatz im Contao Manager

Composer 2 verspricht auch für Nutzer des Contao Managers grosse Vorteile. Auf vielen Hostings wird in Zukunft die Nutzung unserer Composer Resolver Cloud nicht mehr nötig sein, womit z.B. Engpässe bei Contao Updates der Vergangenheit angehören. Für die Cloud wiederum bedeutet dies, dass Updates schneller durchgeführt werden können, und bei gleichbleibenden Kosten mehr Leistung verfügbar ist.

Interne Tests mit Composer 2 im Manager sind bereits vielversprechend. Bevor der Contao Manager aber umgestellt wird, sollten möglichst viele Entwickler ihre Erweiterungen und deren Abhängigkeiten vorab mit Composer 2 testen, damit zum entsprechenden Zeitpunkt alles bereit ist. Denn nach einem Update des Managers gibt es kein zurück mehr – es kann nicht zwischen Composer 1 und Composer 2 gewählt werden!

––

An verschiedenen Stellen wurde bereits erwähnt, wie Contao und seine Entwickler unterstützt werden können. Aktuell gebührt unser Dank aber den Composer Entwicklern, und auch diese benötigen ein Einkommen, um entsprechend viel Zeit in unsere gesamtes Ökosystem investieren zu können. Ein Abonnement bei Packagist.com bietet sich für alle Entwickler und Agenturen an, welche private und kommerzielle Pakete anbieten und gleichzeitig die Entwicklung von Composer unterstützen wollen. Alternativ lässt sich die Arbeit an Composer auch über GitHub sponsern.

Alle News anzeigen

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 3 und 5?