Mit Augenmaß

Versionen mit VersionEye tracken
Kommentare

In der modernen Softwareentwicklung kommen viele Bibliotheken, d. h. wiederverwendbare Softwaremodule, zum Einsatz. Zu jeder Bibliothek erscheinen regelmäßig neue Versionen (Bugfixes und neue Funktionen). In großen Projekten fällt es da schwer, den Überblick zu behalten, welche Bibliotheken outdatet sind und welche nicht. VersionEye schafft hier Abhilfe und hilft außerdem, Komplexität sichtbar zu machen.

PHP Magazin

Der Artikel „Mit Augenmaß“ von Robert Reiz ist erstmalig erschienen im PHP Magazin 2.2013

In der modernen Softwareentwicklung ist der Einsatz von Open-Source-Bibliotheken zum Standard geworden. Eine Bibliothek ist ein Stück wiederverwendbare Software mit einem Application Programming Interface (API). Durch wiederverwendbare Softwaremodule kann die Entwicklungsgeschwindigkeit deutlich beschleunigt werden. Entwickler, die ein elementares Problem gelöst haben, wie z. B. den Zugriff auf eine Datenbank, veröffentlichen ihre Lösung im Internet und stellen ihre Lösung anderen Entwicklern zur Verfügung. Die Autoren einer Bibliothek werden „Committer“ genannt. Diese Bibliotheken unterliegen einem ständigen Wandel. Sobald sie von anderen Entwicklern eingesetzt werden, häufen sich in der Regel die Bug Reports und die Anfragen für neue Funktionalität. Das ist ein ganz normaler Vorgang. Eine Bibliothek wird mit der Zeit „reifer“ und besser. Gute Bibliotheken leben vom Feedback der Community. Das Committer-Team arbeitet somit ständig an Bugfixes und neuen Features. Das führt dazu, dass in regelmäßigen Abständen neue Versionen von der Bibliothek veröffentlicht werden. Jede neue Version kann Bugfixes, neue Funktionalität und Änderungen am API enthalten. Für Entwickler ist es wichtig, diese Änderungen mitzubekommen. Vor allem für die Bibliotheken, die sie bei sich im Projekt einsetzen. Wer will schon freiwillig auf wichtige Bugfixes und neue Features verzichten? Umso mehr Bibliotheken im Projekt zum Einsatz kommen, umso mehr Aufwand bedeutet es neue Versionen manuell zu tracken. VersionEye setzt genau hier an und verschafft Abhilfe.

Packet Manager

Wie bekommt man die Open-Source-Bibliotheken in das Projekt hinein? Sicher, man kann nach den Bibliotheken googeln, dann via Browser herunterladen und bei sich ins Projekt einbinden. Jedoch ist das die „Old School“-Variante. In der modernen Softwareentwicklung werden Packet Manager eingesetzt, um die Bibliotheken herunterzuladen und in das Projekt einzubinden. Die Idee hinter jedem Packet Manager ist, dass im Internet ein Repository existiert, auf dem zentral alle Bibliotheken zu einer Programmiersprache verwaltet werden. Der Packet Manager ist die Schnittstelle zwischen dem Entwickler und dem zentralen Repository. Der Entwickler teilt dem Packet Manager in einer Textdatei mit, welche Bibliotheken er gerne hätte. Der Packet Manager wendet sich daraufhin völlig autonom an das zentrale Repository, lädt die Bibliotheken runter und bindet sie in das Projekt ein.

Aber das ist nicht alles. Packet Manager lösen ein weiteres großes Problem in der Softwareentwicklung. Ein großes Problem von Entwicklern sind rekursive Abhängigkeiten. Eine Bibliothek kann selbst Abhängigkeiten zu anderen Bibliotheken besitzen. Und diese Abhängigkeiten können wieder weitere Abhängigkeiten haben. Packet Manager lösen solche Abhängigkeiten rekursiv auf, laden alle rekursiven Abhängigkeiten ebenfalls herunter und binden sie ebenfalls in das Projekt mit ein.

Composer und Packagist

Bekannte Packet Manager sind Maven aus der Java-Welt und Bundler aus der Ruby-Welt. Auch die junge Node.js-Community hat mit npm einen sehr guten Packet Manager. In der PHP-Community gibt es seit Kurzem den neuen Packet Manager Composer [1]. Das dazugehörige zentrale Repository ist Packagist [2]. Zurzeit liegen über 3.600 Projekte auf packagist.org, und es werden täglich mehr. Der Packet Manager Composer funktioniert ähnlich wie npm aus der Node.js-Community. Die Open-Source-Bibliotheken, die man bei sich im Projekt einsetzen will, werden in einer JSON-Datei, composer.json, definiert. Hier ein kleines Beispiel:

{ "require": {
    "vendor/package": "1.3.2",
    "vendor/package2": "1.*",
    "vendor/package3": ">=2.0.3"
  }
}

Composer wendet sich an Packagist, löst alle Abhängigkeiten auf, lädt die Bibliotheken runter und bindet alles in das Projekt ein.


Themen der folgenden Seiten:

  • Packagist und VersionEye
  • Versionen tracken
  • Komplexität erkennen
  • Twitter und GitHub
  • Moderne Softwareentwicklung
  • Ausblick
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -