Wordpress hat schlimmen Code, andere aber auch

07 09 2009

Wer ernsthaft beruflich oder auf hohem Niveau in seiner Freizeit mit PHP arbeitet und älter als 15 ist, dem stehen wahrscheinlich beim Blick in den Quellcode von Wordpress die Haare zu Berge. Code is art ist ein wunderschöner Wordpress-Slogan, der in dem Kontext aber wirklich mehr als unangebracht ist. Schlimmer als der zusammengezimmerte Kern von Wordpress, der aktuell mal wieder mit einem notdürftigen Flicken gegen den grassierenden Wordpress-Wurm repariert wurde, sind aber die meisten PlugIns. Viele sind offenbar von blutigsten PHP-Anfängern schnell und ergebnisorientiert runterprogrammiert worden, was von Wordpress ja geradezu provoziert wird und was auch großen Anteil an der Beliebtheit des Systems trägt. Jeder ahnungslose Anwender kann mit ein paar Zeilen PHP-Code schnell das erreichen, was er gerade braucht. Das erinnert mich an meine Anfänge mit PHP im Jahr 2001 mit dem damals herausragenden phpBB 1.4. Hier war im Grunde alles hartkodiert und wenn einem irgendwas nicht gefiel, hackte man irgendwie im Quellcode herum. Ein Templatesystem wurde erst mit Version 2 eingeführt und auch hier hackte man noch alle möglichen MODs in das System, was ein Update praktisch unmöglich machte. Folge waren haarsträubende Sicherheitslücken, die nicht gestopft wurden. Wordpress vermeidet dieses Modding immerhin mit einem sehr flexiblen PlugIn-System, der Zugang für Dilettanten und Anfänger wurde dadurch aber noch einfacher. Das Ergebnis sehen wir zur Zeit, Gerrit van Aaken hat das schon zusammengefasst: Bei Wordpress hilft nur ein schmerzhafter Neuanfang, so wie TYPO3 das momentan auch vollzieht und wie phpBB das auch schon zwei mal hinter sich hat.

Nun will ich nicht so viel auf Wordpress rumhacken, wenn ich es selber gar nicht benutze. Im Grunde ist das System großartig, wenn man die miese Codebasis ignoriert. Ich will auf etwas ganz anderes hinaus, nämlich die Codequalität von Serendipity-PlugIns. Wann immer ich ein Seitenleisten-PlugIn installiert habe, musste ich dessen Code bearbeiten, weil die HTML-Ausgabe standardmäßig schlimm aussah oder gar fehlerhaft war. Das PlugIn-System von S9Y ist auf den ersten Blick recht kompliziert, was totale Dilettanten vom PlugIn schreiben abhält; das ist schon mal gut. Trotzdem ist die Codequalität der PlugIns oft eher mäßig. Fast überall wird zum Beispiel der HTML-Code mit echo direkt da ausgegeben, wo er anfällt, natürlich mit irgendwelchem HTML-Code drumherum, den der Autor gerade für angemessen hielt. Kein Wunder also, dass der Output nicht immer angemessen ausfällt. Ich habe vor einiger Zeit ein eigenes Seitenleisten-PlugIn für Twitter geschrieben, weil das alte u.a. genau dieses Problem zeigte. Ein Kernfeature meines PlugIns war der Einsatz einer Templating-Engine. Die zu implementieren war PHP-seitig ein Kinderspiel für jeden halbwegs erfahrenen PHP-Programmierer. Die Frage ist nun, warum zur Hölle von den paar offiziell verfügbaren PlugIns noch fast keines so ein Templating-System mitbringt? Es täte S9Y wirklich immens gut, wenn sich mal jemand hinsetzen würde und ein paar der PlugIns auf den aktuellen Stand bringen würde. Also zumindest eine Templating-Engine einbauen und die Ausgabe entsprechend anpassen, aber auch manch andere Routine könnte mal überarbeitet werden. Gegenüber Wordpress ist das Jammern auf hohem Niveau, aber auch S9Y ist merklich in die Jahre gekommen, vor allem seine PlugIns.

Wenn ich sowas lese, pflege ich zu antworten, derjenige soll nicht jammern, sondern selber anpacken. Das gilt auch für mich, sicher. Allerdings habe ich immens schlechte Erfahrungen mit meinem Twitter-PlugIn gemacht. Das einzige konstruktive Feedback kam vom unglaublich engagierten Chefprogrammierer selber, der mir meinen ursprünglich geplanten Arbeitsaufwand mit Änderungswünschen um das Mehrfache aufgeblasen hat. Am Ende war das neue PlugIn wirklich großartig geworden, ich bin richtig stolz darauf. Die ganzen angeforderten Änderungen kreisten alle um funktionale Anpassungen an das alte PlugIn, so dass mein neues PlugIn alle Funktionen des alten hatte, nur eben diesmal in gut. Dann kam das Problem: Es gab kein Feedback von Dritten und stattdessen hat mir ein ätzender Troll auch noch ans Bein gepisst und einen extra Thread im Forum aufgemacht, um mich als Schnösel zu dissen (weil ich PHP4 Nutzer, die PHP4 Kompatibilität einfordern, als Ewiggestrige bezeichnet habe und er sich davon angesprochen fühlte). Ich habe mein Engagement für S9Y daraufhin nach ein paar Tagen Diskussion eingestellt, denn für kostenlose und gute Programmierarbeit möchte ich echt alles andere haben als von irgendwelchen undankbaren Typen beschimpft zu werden. Mein PlugIn ist übrigens nie im Repository erschienen und stattdessen gibt es ein funktional wirklich krasses anderes PlugIn; hoffentlich ist wenigstens meine Arbeit da eingeflossen und war nicht völlig umsonst. Wie auch immer: Ich werde keine Arbeit mehr zu S9Y beitragen; wenn ich etwas neu baue, reiche ich das im Forum ein und wenn sich niemand drum kümmert, soll mir das egal sein.



Trackbacks


Keine Trackbacks

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)
08 09 2009
#1 Daim (Antwort)

Du meinst warscheinlich sogar mein Twitter Plugin was wirklich einfach per echo das ausgegeben hat was gerade da war. Ich will die ganze Sache auch nicht verteidigen aber nachdem ich das Buch von S9Y gelesen habe würde ich das Plugin auch ganz anders schreiben. Zudem hast du vollkommen recht, kaum hatte ich mein Plugin mit PHP5 Abhängigkeit eingestellt kamen die ersten Stimmen aus dem PHP4 Lager. Ich würde spätestens jetzt seitdem PHP 5.3 raus ist auch diese Diskussionen nicht mehr führen. Wenn sie PHP4 nutzen wollen können Sie ja den Code erweitern. S9Y mag in die Jahre gekommen sein, aber ich habe bis jetzt von keinen großen Sicherheitslücken gehört. Einige User wollen/wollten sogar S9Y auf PHP5 portieren doch damals hat der Chefentwickler noch keinen Sinn darin erkennen können. Also bitte bitte lass dein Plugin veröffentlichen (Besser zwei Plugins als keins).
08 09 2009
#1.1 Gregor Nathanael Meyer (Antwort)

Moin Daim,

konkret habe ich das History-PlugIn gemeint, das ich gestern installiert habe und schon wieder den Code anfassen musste, weil der in dem Fall sogar einen Fehler hatte (hat ein einsames Anführungszeichen zu viel ausgegeben).

Aber ich meinte auch Dein Twitter-PlugIn, das einige Kernschwachpunkte hatte: Konnte nur mit Twitter umgehen, gab hartkodierten HTML Code aus, den ich nicht gebrauchen konnte (weil er in meinem Theme noch schlimmer aussah, als der jetzige Zustand) und hatte eine JavaScript Variante, die sich vom Output her völlig von der PHP-Variante unterschied. Deswegen habe ich das komplett neu geschrieben. Aber Du hast recht, wirklich dilletantisch programmierte PkugIns habe ich bei S9Y auch noch nicht gesehen, nur eben recht viel unflexible Oldschool-Lösungen. Die meisten PlugIns und Themes haben eben schon ein paar Jahre auf dem Buckel.

Mein erweitertes Twitter-PlugIn findest Du im S9Y-Forum (auf Seite 3 ist der aktuelle Stand). Einerseits wegen der vielen reingesteckten Arbeit etwas schade, dass es nie im Spartacus gelandet ist, andererseits ist das aktuelle Twitter-PlugIn deutlich mächtiger und kümmert sich um weit mehr als nur die Ausgabe in der Sidebar.
12 10 2009
#2 Garbago Ernöl Vronzbach (Antwort)

Also ich kann das aus der Praxis bestätigen: die Code-Basis von WP und T3 sind immer noch grausamer Bullshit. Noch schlimmer ist, dass es trotzdem alle benutzen - insbesondere aus ökologischen Aspekten ist das eine Katastrophe - wenn man z.B. all die overbloateten (Hammer-Wort!) Typo3-Installationen mal gegen ein schlankes Framework ersetzen würde, könnten wir wahrscheinlich sofort alle AKWs abschalten. Auch, wenn die Rechner schneller werden - es ist unerträglich, was für ein absurdes Ausmass an Energieverschwendung stattfindet, weil Inhalte, die selten oder sogar nie geändert werden, immer wieder und wieder dynamisch generiert werden. Nein, komplexe Caching-Algorithmen sind kein gutes Argument. Fakt ist - die meisten Websites brauchen überhaupt keine dynamische Inhaltsgenerierung, auch ein Blog braucht sowas nicht. Und eine Mysql Datenbank schon gar nicht - wieviel Updates / Sekunde hat denn so ein Blog?
Die extreme Energieverschwendung, die dadurch entsteht, wird leider völlig unterschätzt - das macht eine Menge aus, wenn weltweit Millionen von rechnern in aufwendig gekühlten Rechenzentren völlig unsinnige Arbeit leisten.
Ich bin froh, dass sich endlich Leute auch wieder mit sowas wie "Effizienz" auseinandersetzen, nicht nur, weil es "cool" und "hacker-style" ist, möglichst wenig rechenoperationen zu verbrennen, sondern weil es ein aktiver Beitrag zum Umweltschutz ist. Wir wollen auf das Netz nicht verzichten, aber wir wollen es verdammt nochmal nicht zum Preis der vernichtung unseres Planeten. ich bin daher froh, dass auch Dozenten und andere Lehrmenschen diese wichtige Botschaft empfangen haben und möglicherweise auch weiterreichen.

Kommentar schreiben


Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
BBCode-Formatierung erlaubt