Das „Making of kreXX“
- Datum:
Wie einige Leute vielleicht wissen, stellt BRAINWORXX im Rahmen von Open-Source Software den PHP Debugger kreXX der Entwicklergemeinde zur Verfügung. Kurz gesagt ist kreXX ein Analysewerkzeug, welches interne Strukturen von PHP Objekten und Arrays graphisch darstellt und somit Entwicklern bei Ihrer täglichen Arbeit hilft. Da der Download des Debuggers mittlerweile die 10.000’er Marke überschritten hat, wird es Zeit einen Blick auf die Entstehung von kreXX zu werfen.
Im Grunde fing alles im Frühjahr 2010 an, als wir ein umfangreiches Magento Projekt auf dem Tisch hatten. Ich selber hatte anfangs wenig Ahnung von dem Shop-System und Debug Ausgaben aus den Klassen zu bekommen, erwies sich als schwierig. Gefühlte 1.000 Seiten Vardump lesen zu müssen ist, wie ich rausgefunden hatte, wenig effektiv. Ich hab mich damals nach Alternativen umgesehen und bin dann auf den graphischen Debugger „Krumo“ gestoßen. Dieser hat eine HTML Ausgabe und ist wesentlich übersichtlicher als ein Vardump.
Die Daten, welche Krumo geliefert hat, waren das krasse Gegenteil der Vardump-Ausgabe. Krumo hat mangels öffentlicher Properties in Magento lediglich den Klassennamen ausgegeben – auch nicht wirklich zielführend. Die Idee eines graphischen Debuggers gefiel allen sehr gut, allein schon wegen der Übersichtlichkeit.
Da der Quellcode von Krumo wie in allen Open Source Produkten zur Verfügung stand, wurde er einfach von uns erweitert. Die meisten Magento-Klassen verfügen über eine eigene Debug-Funktion (was ich anfangs aber nicht wusste), deren Ausgabe wurde einfach zu Krumo umgeleitet. Im Laufe der Jahre kamen andere Ergänzungen hinzu, die erweiterte Krumo Version kam dabei auch in TYPO3 oder Drupal zum Einsatz.
Im Sommer 2014 haben wir dann die Entscheidung getroffen die erweiterten Krumo version der Open-Source Gemeinde zur Verfügung zu stellen. Damit wurde eine wesentlich intensivere Weiterentwicklung angestoßen, als sie bisher stattgefunden hat. Ein Name war auch schnell gefunden: kreXX (was so viel bedeutet wie „Krumo Extended“).
Für die Hosting-Plattform haben wir uns anfangs für Sourceforge entschieden. Nach mehreren Wochen intensiver Arbeit war der Quellcode soweit aufgeräumt, das er der Öffentlichkeit präsentiert werden konnte. Als nächstes wurden Extensions für die 3 Hauptsysteme geschrieben die wir einsetzen, namentlich Magento, TYPO3 und Drupal. Leider hat die Veröffentlichung der Drupal Extension nicht geklappt, da es dort bereits mehrere andere Debugger gibt. Das Hauptmerkmal von kreXX ist immer noch die graphische Oberfläche. Deswegen war die erste große Funktion, die wir eingebaut haben, die Möglichkeit aus verschiedenen Benutzeroberflächen auswählen zu können. Gemeinsam mit unseren talentierten Designern wurde ein neues, noch übersichtlicheres Aussehen von kreXX entworfen und umgesetzt.
Diese neue Benutzeroberfläche trägt den Namen „Hans“ und der kam folgendermaßen zu Stande:
Tobi: Das Design sieht echt gut aus. Wie nennst Du es denn?
Nicklas: Ich? Gar nicht.
Tobi: Aber es muss doch einen Namen haben!
Nicklas: Hat es nicht.
Tobi: Irgendwie muss ich es aber benennen, immerhin haben wir noch das alte drin, und man kann umschalten.
Nicklas: Dann benenn es doch irgendwie.
Tobi: Ich? Aber Du hast es doch entworfen. Gib mir einfach einen Namen.
Nicklas: Hans
Tobi: . . . „Hans“? Wirklich?
Nicklas: Du wolltest einen Namen, und ich nenne es „Hans“.
In der Entwicklung ist die schwierigste Aufgabe oft genug die Benennung von Bestandteilen. Es gibt inzwischen natürlich eine weitere Benutzeroberfläche, mit dem etwas ernsthafteren Namen „Smoky-Grey“.
Im Laufe der Zeit wurde der anfängliche Funktionsumfang massiv erweitert. Der nächste große Meilenstein war dann im Sommer 2016. Ein fast kompletter Umbau der internen Struktur, sowie der Umzug zu Github. Eine genaue Liste aller Features und Funktionen kann hier gefunden werden. Mit der Version 2.x ist kreXX ein beliebter Debugger, der von vielen Entwicklern im Bereich TYPO3 und Magento eingesetzt wird.
Linkliste:
Github:
www.github.com/brainworxx/kreXX
www.github.com/brainworxx/kreXX-TYPO3-Extension
www.github.com/brainworxx/kreXX-Magento-1-Extension
Dokumentation
www.docs.typo3.org/typo3cms/extensions/includekrexx/
www.github.com/brainworxx/kreXX/wiki