# 1 Inside: Detektor für Software-Versionen

Foto: Markus Spiske, Unsplash

Foto: Markus Spiske, Unsplash

Um Mitarbeiter*innen einen Überblick über alle aktuell laufenden und supporteten Projekte zu geben, wurde bereits im Jahr 2016 intern der „Versionsdetektor“ entwickelt. Seine Aufgabe ist es, die Versionen aller im Projekt verwendeten Komponenten auszulesen und sie im Detektor-Backend darzustellen. Durch den Einsatz des Tools sehen die Verantwortlichen auf einen Blick, welche Projekte aktualisiert werden müssen, dadurch sinkt der Wartungsaufwand und unsere Arbeit wird effizienter.

Grundsätzlich besteht der Detektor selbst aus zwei Komponenten, die im Rahmen dieses Artikels vorgestellt werden: den Detektor an sich, sowie dem Backend inklusive dem dort implementierten Collector. Aufgrund dessen, dass dieses Tool in letzter Zeit wegen Usability-Problemen etwas in den Hintergrund geriet, wurde ich nun darum gebeten eine gründliche Überarbeitung des Tools vorzunehmen und das Ergebnis schließlich in diesem Artikel zu präsentieren.

Versionsdetektor

Grundsätzlich unterstützt der Detektor neben den drei Content-Management-Systemen „TYPO3“, „WordPress“ und dem eigenen „namRED“-CMS auch die zwei Shop-Systeme „Oxid 4“ und „Gambio“. Der Fokus der Überarbeitung lag dabei auf den beiden erstgenannten Content-Management-Systemen TYPO3 und WordPress, da sie die Hauptsysteme stellen, die aktuell von der ifabrik für Projekte verwendet werden.

Für die Verwendung des Detektors muss dieser initial im jeweiligen Projekt hinterlegt werden. Beim Abruf des Detektors über das Detektor-Backend wird zuerst festgestellt, um welchen Projekttyp es sich handelt. Daraufhin wird eine Klasse aufgerufen, welche die Daten für den jeweiligen Typ abfragt und in einer Collection sammelt.

Zu den Daten, die gesammelt werden, zählen bei TYPO3 Projekten, die TYPO3-Version, die verwendete PHP-Version und eine Liste aller Extensions samt ihrer im Projekt verwendeten Version. Bei WordPress Projekten werden neben der WordPress-Version und der PHP-Version auch die Versionen aller hinterlegten Themes, Plugins und Frameworks herausgesucht. Sowohl bei TYPO3 als auch bei WordPress wird zuerst versucht über den Composer an die wichtigsten Daten zu gelangen. Sollte dieser Versuch fehlschlagen, so werden die Informationen direkt aus dem Projekt extrahiert.

Bei TYPO3 Projekten gelingt das, indem die Core-Version aus der LocalConfiguration.php und die Extensions aus der ext_emconf.php ausgelesen werden. In WordPress-Projekten wird die Core-Version innerhalb der version.php gefunden und die benötigten Daten für die Plugins können aus der pluginname.php, die sich im Verzeichnis des jeweiligen Plugins befindet, ausgelesen werden. Auf die Theme-Daten kann über die style.css, die sich im Theme Verzeichnis befindet, zugegriffen werden.

Auf die nun in einer Collection gesammelten Daten eines Projektes greift das Backend des Versionsdetektors nun zu und stellt es dar.

Backend des Versionsdetektors

Um die Daten der Collection darstellen zu können, muss das Projekt zuerst dem Backend vertraut gemacht werden. Dazu bietet es die Option ein neues Projekt hinzuzufügen. Dabei muss beachtet werden, dass der Pfad zum Detektor korrekt angegeben ist, damit das Backend auch auf ihn zugreifen kann. Ist dies geschehen, übernimmt der Cronjob die tägliche Aktualisierung der Daten durch das Aufrufen des Detektors.

Um eine übersichtliche Darstellung aller Projekte zu gewährleisten, werden die Projekte mit farblichen Panels dargestellt. Ersichtlich ist zunächst nur der Name des Projektes, der Link und die Core-Version. Durch Aufklappen der Panels werden alle weiteren Ressourcen, deren Versionen und sonstige Informationen angezeigt. Die farbliche Kennzeichnung in Rot, Gelb oder Blau der Panels ist dabei abhängig von der aktuellen Core-Version des Projektes. Rot werden Projekte hinterlegt, deren Version kleiner ist als die des letzten Security-Updates oder deren LTS nicht mehr unterstützt wird. Gelb werden Projekte gekennzeichnet, die zwar der aktuellen Version ihrer LTS entsprechen, diese LTS aber nicht die neuste ist und blau sind alle Projekte, die sich auf der aktuellen LTS mit der aktuellen Version befinden. Abgeglichen werden die Daten bei TYPO3 Projekten mit den aktuellen Daten, die aus der TYPO3-API (Link: https://get.typo3.org/v1/api/doc) ausgelesen werden können. Da es von WordPress keine vernünftige API zum Abruf der aktuellen Versionen gibt und sich WordPress im begrenzten Rahmen selbstständig aktualisiert, werden diese Daten händisch im Detektor-Backend gepflegt.

Um das Handling des Detektor-Backends zu verbessern, wurde zudem ein Filtersystem entwickelt, welches Betrachter*innen eine schnelle Suche nach bestimmten Projekten ermöglicht. Gefiltert werden kann nach folgenden Kriterien: Name der Ressource, Name des Projektes, Versionsstatus – also rot, gelb oder blau, dem Typ des Projektes und schlussendlich der Sprache der Ressource.

Ich hoffe, mit diesem Artikel konnte ein kleiner Einblick in dieses spannende und vor allem hilfreiche Tool gegeben werden. Denn es hält, was es verspricht: weniger Wartungsaufwand und mehr Effizienz in unserem Arbeitsalltag.
Marco ifabrik