Seit unserer ersten Vorankündigung zur nächsten Version von pragmaMx ist einige Zeit vergangen. Wir möchten Euch deshalb über den aktuellen Stand der Entwicklung informieren und gleichzeitig einen Einblick geben, warum sich die Veröffentlichung der neuen Version etwas länger hinziehen wird als ursprünglich erwartet. Bereits zu Beginn der Arbeiten war klar, dass die Anpassung von pragmaMx an aktuelle PHP-Versionen ein wichtiger Bestandteil der nächsten Entwicklung sein würde. Im Verlauf der Arbeiten hat sich jedoch gezeigt, dass dieser Bereich deutlich umfangreicher ist als zunächst angenommen. Insbesondere die Anpassung an PHP 8.3 und die nachfolgenden PHP-Versionen betrifft nicht nur einzelne Stellen im System. Verschiedene interne Komponenten und ältere Programmstrukturen müssen grundlegend überprüft, angepasst und teilweise neu aufgebaut werden. Damit möchten wir bewusst nicht den schnellen Weg gehen, einzelne Fehlermeldungen oder Warnungen lediglich zu beseitigen. Unser Ziel ist vielmehr, die betroffenen Bereiche sauber und nachhaltig zu überarbeiten und damit eine belastbare Grundlage für die weitere Entwicklung von pragmaMx zu schaffen.
Die technische Modernisierung nimmt mehr Raum ein als erwartet
pragmaMx blickt auf eine lange Entwicklungsgeschichte zurück. Das ist einerseits eine Stärke, denn viele Funktionen und Komponenten haben sich über Jahre bewährt. Andererseits finden sich im System naturgemäß auch ältere Programmstrukturen, die aus einer Zeit stammen, in der PHP noch deutlich anders funktionierte als heute. Mit jeder neuen PHP-Version werden bestimmte Funktionen verändert, abgeschaltet oder verhalten sich anders als früher. Was über viele Jahre problemlos funktioniert hat, kann dadurch plötzlich Warnungen, Fehler oder unerwartete Ergebnisse verursachen. Die Anpassung an PHP 8.3 ff. hat deshalb deutlich gemacht, dass wir an einigen Stellen tiefer in die internen Strukturen von pragmaMx eingreifen müssen.
Dabei geht es insbesondere um:
-
die Anpassung älterer PHP-Strukturen an aktuelle Sprachstandards,
-
die Überarbeitung interner Klassen und Hilfsfunktionen,
-
die Beseitigung veralteter oder nicht mehr sinnvoller Programmstrukturen,
-
die weitere Bereinigung historischer „Nuke“-Codebestandteile,
-
die Überprüfung interner Scripts und deren Zusammenspiel,
-
die Verbesserung von Sicherheit und Stabilität,
-
sowie die Vorbereitung auf zukünftige PHP-Versionen.
Warum wir uns für eine gründlichere Überarbeitung entschieden haben
Natürlich wäre es möglich, einzelne Probleme gezielt zu beheben und die Version anschließend möglichst schnell zu veröffentlichen. Das entspricht allerdings nicht unserem Anspruch an pragmaMx.Wenn sich bei der Anpassung einer Komponente zeigt, dass die zugrunde liegende Struktur selbst überarbeitet werden sollte, wollen wir diese Gelegenheit nutzen. Dadurch entsteht zwar kurzfristig zusätzlicher Entwicklungsaufwand, langfristig profitieren davon aber sowohl Anwender als auch Entwickler.
Eine saubere interne Struktur bedeutet:
-
weniger Altlasten,
-
bessere Wartbarkeit,
-
einfachere Weiterentwicklung,
-
bessere Kompatibilität mit zukünftigen PHP-Versionen,
-
weniger Fehlerquellen,
-
und eine bessere Grundlage für neue Funktionen.
Die aktuelle Entwicklungsphase ist deshalb nicht nur eine Kompatibilitätsanpassung an PHP 8.3 ff., sondern gleichzeitig ein weiterer Schritt bei der technischen Modernisierung von pragmaMx.
Bereits umgesetzte und weiterentwickelte Funktionen
Trotz des zusätzlichen Aufwands bei der technischen Überarbeitung wurden bereits zahlreiche neue Funktionen und Verbesserungen umgesetzt.
Konfigurierbares Search-Modul
Das Search-Modul wurde umfassend erweitert und ist nun konfigurierbar. Einstellungen können direkt über den Administrationsbereich vorgenommen werden. Dadurch lässt sich das Suchverhalten besser an die Anforderungen der jeweiligen Website anpassen, ohne dafür direkt in den Programmcode eingreifen zu müssen.
Konfigurierbares TOP-Modul
Auch das TOP-Modul wurde um einen eigenen Konfigurationsbereich erweitert. Damit können verschiedene Einstellungen des Moduls komfortabler angepasst werden. Die bisher fest vorgegebenen Abläufe werden dadurch flexibler und besser an unterschiedliche Website-Konzepte anpassbar.
Detection-System – mehr Transparenz für einen wichtigen Schutzmechanismus
Ein besonderer Schwerpunkt liegt weiterhin auf der Weiterentwicklung des Detection-Systems. Das Detection-System arbeitet bereits seit vielen Jahren weitgehend im Hintergrund. Viele Administratoren haben deshalb möglicherweise gar nicht wahrgenommen, wie wichtig diese Komponente für die Sicherheit von pragmaMx ist. Tatsächlich bildet Detection eines der zentralen Systeme zur Erkennung und Abwehr verdächtiger Zugriffe und Angriffsmuster. Gerade vor dem Hintergrund zunehmend automatisierter Angriffe auf Websites gewinnt dieser Bereich weiter an Bedeutung. Die bewährten Kernelemente der Abwehr bleiben erhalten. Gleichzeitig wurde das System erweitert:
-
Das Detection-System erhält einen eigenen Administrationsbereich.
-
Erkannte Ereignisse können dadurch transparenter nachvollzogen werden.
-
Die Administration und Kontrolle des Systems wird verbessert.
-
Eine Schnittstelle zum Bann-System wurde geschaffen.
-
Erkannte Angriffe können dadurch gezielter mit Sperrmaßnahmen verbunden werden.
Damit wird Detection von einem bisher weitgehend unsichtbaren Schutzmechanismus zu einem besser nachvollziehbaren und administrierbaren Bestandteil des pragmaMx-Sicherheitssystems.
Neues Plugin: HashTagLink
Mit HashTagLink wurde außerdem ein neues Plugin entwickelt. Das Plugin erkennt Hashtags in Inhalten und kann diese automatisch verlinken. Dadurch lassen sich thematisch zusammengehörige Inhalte besser miteinander verbinden. Gerade für News, Artikel und Community-Inhalte ergeben sich dadurch interessante Möglichkeiten für die interne Vernetzung von Beiträgen.
Captcha-System grundlegend überarbeitet
Auch der Bereich Captcha wurde umfangreicher überarbeitet. Neben der Anpassung der bestehenden Captcha-Klassen wurde der Administrationsbereich für Captcha grundsätzlich neu aufgebaut. Neu ist insbesondere die Möglichkeit, aus mehreren Captcha-Systemen auszuwählen. Damit wird die Captcha-Funktion flexibler und gleichzeitig für zukünftige Erweiterungen vorbereitet.
Weitere Änderungen und Verbesserungen
Neben den größeren Entwicklungsbereichen wurden zahlreiche weitere Anpassungen vorgenommen.
Dazu gehören unter anderem:
-
Überarbeitung der Validation,
-
Entfernung der bisherigen Abhängigkeit von HTML Tidy,
-
Verbesserungen im Debug-Bereich,
-
weitere Sicherheitsoptimierungen,
-
Anpassungen interner Klassen,
-
optische Kennzeichnung von Verlinkungen im Encyclopädie-Modul,
-
Aktualisierung und Bereinigung von Sprachdateien.
Auch zahlreiche kleinere Fehler wurden zwischenzeitlich behoben.
Dazu gehören beispielsweise:
-
Fehler bei der HTML-Ausgabe des Search-Moduls,
-
der Fehler im Zusammenhang mit unserialize in der Book-Klasse,
-
Verbesserungen an der Sicherheit der Mail-Klasse,
-
sowie verschiedene kleinere Fehler und Inkonsistenzen in unterschiedlichen Systembereichen.
PHP 8.3 und darüber hinaus
Die Anpassung an aktuelle PHP-Versionen bleibt derzeit einer der wichtigsten Punkte der Entwicklung. Ursprünglich war davon ausgegangen worden, dass sich die notwendigen Anpassungen an PHP 8.3 und 8.4 weitgehend innerhalb der bestehenden Strukturen umsetzen lassen. Die praktische Entwicklung hat jedoch gezeigt, dass dies an mehreren Stellen nicht ausreichend ist. Einige interne Scripts und Klassen benötigen eine grundsätzliche Überarbeitung, damit sie nicht nur unter einer bestimmten PHP-Version funktionieren, sondern auch langfristig mit der Entwicklung von PHP Schritt halten können. Genau deshalb nehmen wir uns für diese Arbeiten die notwendige Zeit.
Unser Ziel ist nicht:
„pragmaMx funktioniert irgendwie mit PHP 8.3.“
Unser Ziel ist:
„pragmaMx ist technisch so aufgestellt, dass die nächsten PHP-Versionen nicht jedes Mal zu einem grundlegenden Problem werden.“
Das ist ein wesentlich höherer Anspruch – und entsprechend größer ist auch der notwendige Entwicklungsaufwand.
Weiterer Abschied von historischem Nuke-Code
Parallel zur PHP-Anpassung wird pragmaMx weiter von historischen Nuke-Codebestandteilen bereinigt. pragmaMx hat seine Wurzeln in diesem Umfeld, hat sich aber längst zu einem eigenständigen System weiterentwickelt. Einige dieser historischen Strukturen sind inzwischen technisch überholt und erschweren die weitere Entwicklung. Die Bereinigung erfolgt dabei mit Augenmaß. Bewährte Funktionen und Strukturen sollen erhalten bleiben, während nicht mehr benötigte oder technisch überholte Bestandteile nach und nach entfernt oder ersetzt werden. Damit entsteht Schritt für Schritt eine klarere, modernere und besser wartbare Codebasis.
PHP 5 gehört endgültig der Vergangenheit an
Eine wichtige Konsequenz der technischen Modernisierung ist auch die klare Abgrenzung zu sehr alten PHP-Versionen. PHP 5 wird von der kommenden pragmaMx-Version nicht mehr unterstützt. Als Mindestvoraussetzung wird künftig PHP 7 benötigt. Wir wissen, dass damit ältere Hosting-Umgebungen ausgeschlossen werden. Diese Entscheidung ist jedoch notwendig, wenn pragmaMx technisch weiterentwickelt und an aktuelle Sicherheits- und Entwicklungsstandards angepasst werden soll. Gleichzeitig empfehlen wir ausdrücklich, eine aktuelle und vom Hostinganbieter unterstützte PHP-Version einzusetzen. Die Mindestanforderung bedeutet nicht, dass PHP 7 die bevorzugte Entwicklungsumgebung für pragmaMx darstellt. Sie definiert lediglich die untere Grenze der unterstützten PHP-Versionen.
Warum sich die Veröffentlichung verschiebt
Die zusätzlichen Arbeiten bedeuten letztlich: Wir brauchen mehr Zeit. Wir möchten Euch lieber eine Version zur Verfügung stellen, die technisch sauber überarbeitet und ausreichend getestet wurde, als eine Version möglichst schnell zu veröffentlichen und anschließend zahlreiche Korrekturen nachreichen zu müssen. Gerade bei Änderungen an zentralen Systemkomponenten können kleine Veränderungen weitreichende Auswirkungen haben. Deshalb müssen die überarbeiteten Bereiche nicht nur einzeln funktionieren, sondern auch im Zusammenspiel mit den vorhandenen Modulen, Plugins und dem restlichen System geprüft werden. Das bedeutet zusätzliche Entwicklungs- und Testarbeit.
Unser aktueller Kurs
Die Richtung ist dabei klar:
Modernisieren – bereinigen – absichern – testen – weiterentwickeln.
Die nächste pragmaMx-Version soll nicht nur neue Funktionen mitbringen. Sie soll gleichzeitig eine bessere technische Grundlage für die kommenden Entwicklungsschritte schaffen. Die Arbeiten an PHP-Kompatibilität, internen Scripts, Sicherheitssystemen und der Bereinigung historischer Codebestandteile sind deshalb ein wichtiger Teil dieser Weiterentwicklung.
Ausblick
Auch wenn die ursprünglich geplante Veröffentlichung dadurch mehr Zeit benötigt, sehen wir diese Entwicklung sehr positiv. Mit jeder überarbeiteten Komponente wird pragmaMx ein Stück moderner, übersichtlicher und zukunftsfähiger. Gleichzeitig bleiben die bewährten Grundprinzipien des Systems erhalten: Flexibilität, Erweiterbarkeit und die Möglichkeit, pragmaMx an die individuellen Anforderungen einer Website anzupassen. Wir werden Euch über die weitere Entwicklung und den Stand der Arbeiten informieren. Vielen Dank für Eure Geduld und Euer Verständnis – und natürlich für Euer Interesse an pragmaMx.
Euer pragmaMx-Team