Das Theme von WordPress mitverwenden

Es ist eine völlig berechtigte und aus Nutzersicht logische Anforderung, dass es möglich sein sollte, das WordPress-Theme für ein integriertes bbPress mitzuverwenden. Folglich kommt ein solcher Wunsch auch immer wieder auf.

Im Moment ist es leider standardmäßig erforderlich, ein eigenes Design für bbPress zu erstellen. Da bbPress und WordPress viele Gemeinsamkeiten haben, ist das nicht besonders schwierig, aber „es saugt“ dennoch. Bei zukünftigen Design-Anpassungen sind zwei Designs zu bearbeiten, und das verdoppelt den Arbeits- und Testaufwand. Das ist keine erfreuliche Lösung, und von daher sollte ein besserer Weg möglich sein. (Ich selbst werde jedoch bei dieser Vorgehensweise bleiben, weil sie eben recht einfach ist.)

Wer keine Probleme damit, ein Plugin in einem sehr frühen Entwicklungsstadium zu verwenden, wird sich vielleicht über diese Ankündigung des Users ryanheller im offiziellen (englischsprachigen) Support-Forum von bbPress freuen, die ich hier schnell sinngemäß wiedergebe:

Ein Hallo an alle,

Ich habe ein WordPress-Plugin programmiert, das eine einfache Integration ihres WordPress-Themes, ihrer Widgets und vieler Plugins in ihr bbPress-Theme ermöglicht. Es handelt sich um eine Alpha-Veröffentlichung, und deshalb ist es wahrscheinlich noch fehlerhaft. Bitte geben sie ihre Fehlerberichte als Kommentare im folgenden Blogbeitrag:

http://pixopoint.com/theme-integrator-alpha-launch/

Dieses System setzt nicht voraus, dass sie eine „deep integration“ ihres bbPress vornehmen, und es führt daher auch nicht zu den damit verbundenen Nachteilen für die Performance. Es kopiert einfach ihr HTML-Markup, nachdem sie eine Reihe von Dingen in jedem Theme konfiguriert haben. Wenn sie nicht wissen, wie sie eine perfekte Integration ihres Themes in der altmodischen Weise durchführen (indem sie HTML und CSS zwischen den beiden Systemen kopieren), dann wird dieses neue System ihnen nicht helfen können, denn sie müssen es auch in solcher Weise einrichten. Allerdings: Nachdem es einmal aufgesetzt wurde, werden die Änderungen in ihrem WordPress-Theme automagisch in ihre bbPress-Forensite übernommen, zusammen mit Änderungen in den Plugins, Widgets etc.

Ich werde keinen kostenlosen Support dafür betreiben. Diese Form der Integration ist sehr zeitaufwändig und ich kann die Zeit nicht entbehren, um ihnen allen bei der Integration ihrer Themes zu helfen – das tut mir leid. Aber ich werde versuchen, die gemeldeten Fehler so schnell wie möglich zu bearbeiten.

Das System arbeitet mit einer Vielzahl unterschiedlicher Software zusammen, nicht nur mit bbPress. Sie können mein Support-Forum als eine Demonstration anschauen, hierbei verwende ich SMF.
http://pixopoint.com/forum/index.php?topic=1385.0

Sorry für meine schnelle und auch etwas schlampige Übersetzung, aber ich glaube, dass diese Information für viele Anwender interessant ist. Nähere Informationen zu dieser Lösung gibt es auf den verlinkten Seiten – leider zurzeit nur in Englisch.

In den nächsten Tagen werde ich mir das einmal näher anschauen, es kann aber noch ein wenig dauern.

Vorläufiges zur Zukunft von bbPress

Die geplante Zukunft von bbPress wird zurzeit unter einer sich formierenden Entwicklergruppe unter der Leitung von Matt Mullenweg diskutiert. Diese Diskussion befindet sich in einem recht frühen Stadium, und der Einblick in die Zukunft von bbPress ist sehr vorläufig. Dennoch lassen sich bereits gewisse Trends absehen, und diese sind in meinen Augen nicht nur erfreulich.

Zunächst die gute Nachricht: Es gibt eine Weiterentwicklung. Wer bbPress bereits in einem Projekt einsetzt, wird darüber froh sein – insbesondere, wenn es sich um den Einsatz eines in WordPress integrierten bbPress handelt.

Die Entwickler haben sehr wohl wahrgenommen, dass gefühlte zwei Drittel der Probleme, die im englischsprachigen Support-Forum behandelt werden, im Zusammenhang mit der WordPress-Integration stehen. Dieser Vorgang ist eben doch etwas komplexer, und viele Anwender scheinen mit den dabei immer wieder einmal auftretenden Problemen überfordert zu sein. Ferner ist die Möglichkeit einer derartigen Integration für viele Menschen der wichtigste Grund, ein bbPress einzusetzen, die anderen Eigenschaften von bbPress – insbesondere der sinnvolle und durchschaubare Minimalismus des Kernsystemes – sind dabei eher nachrangig oder gar völlig unerwünscht.

Die mittelfristige Planung für bbPress sieht so aus, dass aus der zurzeit noch eigenständigen Anwendung bbPress ein Plugin für WordPress werden soll. Das dauerhafte Support-Problem der WordPress-Integration könnte auf diese Weise an der Wurzel angegangen werden. Es ist dann auch nicht mehr erforderlich, mehrere Geheimschlüssel in der Konfiguration der beiden Anwendungen identisch zu setzen, da ein solches als Plugin laufendes bbPress Zugriff auf die WordPress-Konfiguation hätte. Der häufige Anwendungfall „WordPress mit integrierter bbPress-Forensite“ verlöre auf diese Weise vieles von seiner gegenwärtigen Komplexität, und vielleicht ließe sich sogar in gewissem Maße eine Verwendung von WordPress-Themes für ein integriertes bbPress-Forensystem ermöglichen. Auch das berüchtigte Thema der tiefen bbPress-Integration verlöre seinen gesamten Schrecken, da sämtliche Funktionen von WordPress innerhalb des Forums zur Verfügung stünden.

Eine solche Entwicklung käme sicherlich vielen heutigen Forenbetreibern entgegen.

Allerdings kommt sie, wenn sie auf die naheliegendste Weise stattfindet, auch mit einigen Nachteilen daher, die recht groß sind. Als „Bedenkenträger“ möchte ich diese Nachteile kurz andeuten, denn ich halte sie für wichtig und im Moment für zu wenig beachtet.

Es ist zurzeit noch möglich (und sogar als Regelfall vorgesehen), bbPress ohne WordPress für den Betrieb einer Forensite einzusetzen. Einer der großen Vorzüge von bbPress ist sein sparsamer Umgang mit den Ressourcen des Serverrechners bei einer gleichzeitigen großen Flexibilität in der Gestaltung und in den Einsatzmöglichkeiten. Dieser Vorzug macht sich aus Nutzersicht darin bemerkbar, dass es sich um ein schnelles Forum handelt. Das schlanke Kernsystem von bbPress ist für viele denkbare Anwendungen einer Forensoftware völlig ausreichend, es lässt sich gegebenenfalls durch Plugins erweitern. (Dass zurzeit viele für die älteren bbPress-Versionen entwickelten Plugins nicht mit der aktuellen Version lauffähig sind und dass mit _ck_ eine wichtige Plugin-Entwicklerin ausgestiegen ist, ist allerdings ein großes Problem. Es ist wohl nur selten der Fall, dass die ältere Version einer Software mehr Funktionalität zur Verfügung stellt als die aktuelle Version.)

Dieser Schlankheit des heutigen bbPress steht der beachtliche Verbrauch von Ressourcen auf dem Serverrechner beim Einsatz von WordPress gegenüber. Die aktuelle WordPress-Version lässt sich bei einigen Hostern gar nicht mehr einsetzen. Wenn ein mit einigem Inhalt gefülltes WordPress eine seiner Ansichten des Blogs ausliefert, hat der damit verbundene Serverprozess einen Speicherbedarf, der jenseits von Gut und Böse liegt, und er verursacht auch eine erhebliche Last auf dem MySQL-Datenbankserver. (Selbst ein voll aufgeblähtes, universelles CMS wie Joomla geht sparsamer mit den Ressourcen des Serverrechners um als das gegenwärtige WordPress.)

Ich will dies mit einem kleinen Beispiel illustrieren. Auf diesem Server läuft ein kleines Blog mit dem vielsagenden Namen Blah für kurze Mitteilungen mit meist relativ wenig Substanz – ich nenne es manchmal auch „mein persönliches Twitter“ – das vor allem eine „Linkschleuder“ auf schräge, politische, verschwörungstheoretische und oft auch lustige Seiten im Internet ist. Dieses Blog habe ich selbst niemals richtig ernst genommen. Ich habe es begonnen, um meine anderen Projekte von diesen kurzen Mitteilungen zu entlasten, und ich habe es vom ersten Tag an dafür vorgesehen, dass dort auch einige meiner Leser (auch solche, die gar nicht meiner Meinung sind) einen Account zum Posten erhalten können. Das gesamte Design ist für das „schnelle Wegbloggen“ beliebiger Themen geschrieben, und zur weiteren Auszeichnung der kurzen Beiträge wird exzessiv das Schlagwort-System von WordPress verwendet. Die Navigation ist bewusst etwas eigenwillig, insbesondere mache ich ausgiebig von der Möglichkeit Gebrauch, Ansichten und Feeds für Tags und Autoren bereitzustellen.

Es ist ein sichtbar „kleines“ Blog. Dieses „kleine“ Blog enthält zurzeit über viertausend meist kurze Beiträge, die teilweise erheblich kommentiert werden. Das sind nicht viele Beitäge. Interessanterweise hat dieses kleine, von mir niemals ernst genommene Blog mit dem wenig ernst klingenden Namen „Blah“ doch eine gewisse Aufmerksamkeit erhalten, und es empfängt zurzeit pro Tag durchschnittlich um die zweitausend Besucher, die im Schnitt jeder neun Ansichten (Tag-Seiten, Kommentarthreads etc.) vom Server abrufen. Das sind nicht viele Leser. Aber dennoch: In seiner Grundkonfiguration ist WordPress nicht dazu imstande, diese Last (die natürlich zu bestimmten Zeiten verstärkt auftritt) zu bewältigen, es benötigt dann bis zu fünfzig Sekunden, um eine Blogseite zu erzeugen. In der Folge sammeln sich die Prozesse des Webservers an, belegen megabyteweise Speicher und erzeugen dabei weitere Last auf dem MySQL-Server. Der virtuelle Speicher des Serverrechners reicht in Folge dieser angehäuften Prozesse nicht mehr aus und viele Besucher sind entweder mit überlangen Wartezeiten konfrontiert, oder sehen eine wenig erfreuliche Fehlermeldung des Webservers oder sogar gleich eine weiße Seite, weil der Ressourcenmangel sogar die Darstellung einer Fehlermeldung verhindert. Das ist kein tragbarer Zustand.

Im Falle eines Blogs lässt sich zum Glück Abhilfe schaffen, auch wenn diese nur eine Symptomtherapie ist und das Problem des unmäßigen Ressourcenhungers und der damit verbundenen miesen Skalierbarkeit von WordPress nicht behebt. Diese Abhilfe ist Caching. Nachdem ich über Monate hinweg sehen musste, dass WordPress immer weniger dazu geeignet ist, ein Blog zu betreien, das auch Leser hat, habe ich mich zur Installation des WordPress-Plugins WP Super Cache entschlossen, und seitdem ist das Blah-Blog wieder benutzbar und bremst nicht mehr den gesamten Serverrechner aus.

Diese Abhilfe durch Caching steht bei den ungleich dyamischeren Ansichten eines viel benutzten Forums nicht zur Verfügung. Während sich in einem Blog nur relativ selten etwas an den dargestellten Inhalten ändert, ist dies in einem Forum durch jede Antwort eines Forennutzers der Fall – und genau von dieser Interaktivität lebt ein Forum. Sollte bbPress nur noch zusammen mit einem ressourcenhungrigen WordPress laufen, denn werden die Anforderungen an den verwendeten Serverrechner gewaltig und damit für den Forenbetreiber teuer. Wenn die zusätzliche Blogfunktionalität eines solchen Systemes gar nicht gewünscht ist, wenn jemand „einfach nur ein Forum“ haben möchte, denn ist aus dem einst so schlanken, schnellen und eleganten bbPress ein Monster entstanden, das es in seinen Anforderungen locker mit großer BB-Software aufnehmen kann, ohne dass dies auch mit der Funktionsvielfalt dieser Software verbunden wäre. Ein großer Vorteil der jetzt vorliegenden Software bbPress wäre ohne Not aufgegeben worden, um einem einzigen (zugegebenermaßen oft wichtigen) Anwendungsfall zu begegnen.

Und das wäre in meinen Augen eine schlechte Entwicklung.

Vor einigen Wochen habe ich im englischsprachigen Support-Forum, dass gerade sehr von den WordPress-Entwicklern und -Fans geprägt ist, in einem langen, mit viel statistischen Angaben aus dem Betrieb dieses Serverrechners gewürzten Beitrag auf dieses Problem hingewiesen. Dieser recht sachlich formulierte Post ist zunächst nicht sichtbar geworden, und er wurde auch in den folgenden Tagen nicht von einem Moderator freigeschaltet, obwohl es zu erheblichen administrativen Tätigkeiten in diesem Thema kam. Nachdem ich das über mehrere Tage hinweg verfolgte, habe ich etwas getan, was ich in einem von mir betriebenen Forum hassen würde, wenn es ein Benutzer täte: Ich habe mir mit einer Wegwerf-Mailadresse einen Zweitaccount angelegt und habe auf die Zensur hingewiesen, um mich mit einem deutlich weniger sachlichen Abschiedswort aus dem offiziellen englischsprachigen Support-Forum zu verabschieden, und zwar für immer.

Der Stil der „Kommunikation“, der gerade in der bbPress-Entwicklung einzieht, erinnert mich überdeutlich an die Zustände bei der WordPress-Entwicklung. Ein kleiner Haufen von (oft recht ambitionierten) Entwicklern strebt so etwas wie die – Achtung! Ätzende Ironie! – Weltherrschaft durch allmächtige PHP-Skripten an und zeigt dabei eine beachtliche Gleichgültigkeit gegenüber den Wünschen und Anforderungen der Benutzer, die schlicht im Streben nach technischen Selbstzwecken für unbeachtlich erklärt werden. Wo dieser Weg im Falle von WordPress hingeführt hat, kann jeder Blogger sehen, der ein WordPress im Einsatz hat: Ein erheblicher Teil oft völlig unerwünschter Funktionalität ist in den Kern von WordPress geraten, das Kernsysten ist dabei ressourcenhungrig und schwerfällig geworden und die implementierten Funktionen sind alles in allem wenig brauchbar. (Zum Beispiel wurde WordPress 2.9 um eine Bildbearbeitung erweitert, als ob es dafür keine guten Desktop-Programme gäbe. Und der häufigste Anwendungsfall beim Aufbereiten eines Fotos für die Veröffentlichung im Internet, die Rotation des Bildes um 90 Grad, ist mit dieser Bildbearbeitung nicht möglich.) Schon bei der einfachen Sache, die das Bloggen in seinem Kern nun einmal ist, beim Verfassen eines neuen Posts, ist der WordPress-Anwender mit einer einschüchternden Fülle von Einstellmöglichkeiten konfrontiert, die einen weniger geübten Nutzer nicht gerade motiviert, und diese Funktionsfülle kommt mit einer Schwerfälligkeit daher, die es zur Qual macht, WordPress mit einem nicht mehr ganz aktuellen Computer oder einem schmalbandigen Internetzugang zu verwenden. Wenn dieser Stil demnächst prägend für die Fortentwicklung von bbPress werden sollte, wird bbPress in meinen Augen unbrauchbar, und ich glaube nicht, dass es nur mir so geht. Der mir aus dem WordPress-Umfeld allzu vertraute und tief verhasste Stil der „Kommunikation“ ist bei bbPress bereits eingezogen, einschließlich der abgehobenen Selbstgefälligkeit der auftretenden Entwickler.

Sollte die weitere Entwicklung von bbPress so verlaufen, wie es sich zurzeit leider abzeichnet, werde ich mein Engagement beenden. Es wird hier in diesem Falle auch keine aktuelleren Sprachdateien für kommende bbPress-Versionen mehr geben. Zurzeit hoffe ich noch, dass es nicht so schlimm kommt, wie es sich abzeichnet, aber diese Hoffnung ist mehr von meinen Wünschen als von beobachtbaren Tatsachen getragen und wird beinahe täglich kleiner.

Das Leben kehrt zurück…

<photomatt_sf> it’s like the unofficial WP slogan: we suck less with every release

Erfreulicherweise gibt es eine gute Nachricht über die Zukunft von bbPress zu vermelden. Das Leben kehrt ins Projekt zurück, und gestern haben sich etliche Menschen in einem Chat zusammen mit Matt Muellenweg darüber ausgetauscht, welchen Weg das Projekt in Zukunft nehmen könnte. Diese Diskussion streifte zwar viel zu viele Themen in viel zu kurzer Zeit, aber sie zeigt auch deutlich, dass ein tatkräftiger Wille vorhanden ist, die gegenwärtige Stagnation des Projektes zu beenden.

Neben vielen anderen Dingen ist die Tendenz beachtlich, bbPress stärker mit WordPress zu koppeln, vielleicht sogar zukünftig zu einem reinen WordPress-Plugin zu machen. Diese Tendenz reflektiert sicherlich die vielen Probleme und Anfragen von Anwendern, die vom verheißungsvollen Klang des Wortes „Integration“ zu bbPress gelockt wurden. Im Moment ist die bbPress-Integration eine der häufigsten Problemquellen. Ein vollständig in WordPress integriertes bbPress könnte alle WordPress-Funktionen nutzen, verfügte über Plugins und teilte das Design des jeweils gewählten WordPress-Themes – das ist eine von vielen bbPress-Anwendern gewünschte Kombination. Für jene Menschen, die „einfach nur ein Forum“ haben möchten, bedeutet dies jedoch einen deutlich größeren Resourcenverbrauch auf dem Server – WordPress steht nicht zu Unrecht im Ruf, eine „Bloatware“ zu sein. Es wird bei einem derartigen Entwurf nicht ganz einfach, die gute Performance einer bbPress-Forensite in die Zukunft zu retten.

Ein wichtiges Ergebnis ist es, dass ab sofort mit dem Aufbau einer systematischen Dokumentation auf der englischsprachigen bbPress-Site begonnen wird. Es steht zu hoffen, dass diese Dokumentation schnell einen gut nutzbaren Zustand erreicht und dass es dann nicht mehr nötig ist, die Quelltexte von bbPress zu lesen, um an die gewünschten Informationen zu gelangen. Selbstverständlich wird eine gute Dokumentation auch die Plugin-Entwicklung vereinfachen.

Der (englischsprachige) Chatlog steht auf der offiziellen bbPress-Site zur Einsicht.

Seltsamer Fehler: Login geht nicht

Ich bin heute im englischen Support-Forum auf ein sehr ungewöhnliches Problem gestoßen, das in dieser Form nicht nur bei bbPress auftreten kann, sondern auch bei anderen in PHP programmierten Webanwendungen, die ihre Konfiguration in einer PHP-Datei vorhalten. Insbesondere kann es auch bei WordPress auftreten. Es ist eines dieser Probleme, die von einem normalen Menschen nicht leicht verstanden werden, und das Verhalten der Anwendung ist verwirrend, so dass leicht ein völlig anderer Fehler vermutet wird.

Ich werde hier allerdings beschreiben, wie es sich im konkreten Fall bei einer frischen Installation von bbPress geäußert hat.

Symptom

Ein bbPress-Forum wurde neu aufgesetzt. Die Installation verlief völlig reibungslos. Da das Forum mit einem laufenden WordPress integriert werden sollte, wurden nachträglich noch die Geheimschlüssel für die Cookies auf sichere Werte gesetzt, die in bbPress und WordPress übereinstimmend eingetragen wurden.

Dabei wurde die Datei bb-config.php mit einem Editor bearbeitet, um die Werte für BB_AUTH_KEY und die anderen Werte nachträglich in die Konfiguration einzutragen, die so bearbeitete Datei wurde zum Server hochgeladen.

Das Forum schien zu funktionieren, aber es war kein Login mehr möglich.

Beim Versuch des Einloggens erschienen eine Reihe von Fehlermeldungen der „Bauweise“ Warning: Cannot modify header information - headers already sent by (output started at /xxx/xxx/xxx/forum/bb-config.php:1) in /xxx/xxx/xxx/forum/bb-includes/functions.bb-pluggable.php on line 232 (den originalen Pfad habe ich hier natürlich geändert).

Ein Login war nicht mehr möglich. Auch ein frisch registrierter Benutzer – es war immer noch möglich, eine Registrierung durchzuführen, und auch die Mail mit dem Passwort wurde versendet – konnte sich nicht einloggen.

Das Ergebnis war ein unbrauchbares Forum… immerhin, es macht keinen administrativen Aufwand mehr. ;-)

Rätselraten

Wenn man vor einem derart unverständlichen Fehler steht, vermutet man natürlich die Fehlerquelle Nummer Eins, die Integration von bbPress in WordPress. Mit dieser naheliegenden Vermutung ist das Problem auch im Support-Forum aufgetaucht, und so bin schließlich auc ich darauf gestoßen und habe mich damit ein wenig auseinandergesetzt.

Dabei ist mir nach sehr kurzem Nachdenken aufgefallen, dass es sich nicht um eines dieser Integrationsprobleme handeln kann.

Die Fehlermeldung entsteht, weil bbPress nach der Anmeldung ein Cookie zu setzen versucht, um den angemeldeten Benutzer zu identifizieren. Diese geschieht im HTTP-Header, also noch bevor ein wirklicher Inhalt an den Browser gesendet wird – und nach der Übertragung des ersten Zeichens des Inhaltes ist es nicht mehr möglich.

Mit diesem Hintergrundwissen ist klar, wie die Fehlermeldung zu verstehen ist. PHP konnte keinen HTTP-Header mehr setzen, um das Cookie mit der Identifikation des angemeldeten Benutzers zu setzen, weil es vorher zu einer Textausgabe gekommen war, und dies geschah laut Fehlermeldung in der ersten Zeile der Datei bb-config.php.

Deshalb ging ich davon aus, dass die Datei bb-config.php in der ersten Zeile einige Zeichen außerhalb des durch <?php ... ?> gekennzeichneten Bereiches mit PHP-Code enthalten muss – und hielt das Problem schon für gelöst. Um die Zeichen zu sehen, holte ich über den Browser direkt die bb-config.php ab, die nur eine weiße Seite liefern dürfte. Und in der Tat sah ich den etwas rätselhaften Text „“, der dort nicht hingehört und einfach nur gelöscht werden muss.

Nun, die Technik ist oft ein bisschen widerspenstig.

Denn die bb-config.php enthielt dort kein Zeichen. Ihr gesamter Inhalt war im Bereich <?php ... ?> eingeschlossen. Es gab einfach nichts zu löschen, wie mir der zukünfitige Forenbetreiber versicherte.

Und das erschien doch sehr seltsam und spornte meinen Ehrgeiz ein bisschen an, dieses Problem zu identifizieren. Es wurde Zeit für eine etwas genauere Untersuchung.

Genauere Untersuchung

Als erstes wollte ich diese seltsame Ausgabe unsichtbarer Zeichen nicht mehr im Browser sehen. Deshalb holte ich die bb-config.php auf meinem mit UTF-8-Zeichencodierung arbeitenden Linux-System mit wget ab, um mir diese rätselhafte Ausgabe einmal näher anschauen zu können.

Die nächste Tat war ein cat bb-config.php, um diese Datei einmal auszugeben – und ich sah nichts. Die vom Webserver empfangene Datei schien leer zu sein, aber der Browser stellte dennoch drei Zeichen dar, und die Datei hatte auch eine Dateigröße von drei Bytes. Mir war schnell klar, dass ich es hier nicht mit gewöhnlichen Zeichen zu tun hatte.

Deshalb schaute ich mir die Datei einmal mit od -x bb-config.php an, um ihren Inhalt in hexadezimaler Form lesen zu können. Das führte zur Ausgabe bbef 00bf.

Und dann erst verstand ich das Problem wirklich.

Um hier zu sehen, welche Reihenfolge von Bytes in der Datei vorliegt, muss noch berücksichtigt werden, dass auf Intel-Systemen (PCs) immer zunächst das niederwertige Byte und dann das höherwertige Byte kommt. (Informell sage ich dazu: aus den üblichen Gemeinheitsgründen.) Der Webserver hat mir die drei Bytes (hexadezimal ausgedrückt) ef bb bf gesendet, und diese müssen noch vor dem <?php in der bb-config.php gestanden haben.

Das war auch die Auflösung. Es handelt sich um die Angabe der Bytereihenfolge in einer Textdatei im Unicode-Format, in diesem Fall wird das Dateiformat als UTF-8 angegeben.

Der Editor, mit dem die bb-config.php bearbeitet wurde, hat offensichtlich in UTF-8 gespeichert und die Datei mit einem BOM begonnen. Diese Markierung bleibt natürlich fast immer unsichtbar, und so kam es zum rätselhaften Verhalten – und der zukünftige Forenbetreiber war sich nicht darüber bewusst, dass am Speicherformat eines Texteditors etwas Problematisches sein könnte…

Da kommt man aber auch nicht so leicht drauf. Es ist wirklich ein arges Problem. ;-)

Lösung des Problems

Die Editoreinstellungen zum Speichern der Dateien müssen geändert werden. Entweder muss die Speicherung der BOM abgeschaltet werden, oder aber – im Zweifelsfall und für technisch weniger erfahrene Nutzer wohl die beste Wahl – das Speicherformat muss zumindest zum Speichern der bb-config.php auf ASCII gesetzt werden.

Wie das beim einzelnen Editor geht, kann ich natürlich nicht sagen, aber zum Glück hat jedes brauchbare Programm ein Hilfesystem und eine gute Dokumentation. (Denn ohne Dokumentation ist kein Programm brauchbar.)

In diesem einen Fall ist das Problem jedenfalls gelöst und das Forum ist wieder benutzbar, und ich kann mir durchaus vorstellen, dass dieses Problem häufiger auftritt und zu großem Unverständnis und Frust führt, wenn man damit konfrontiert ist.

Was bedeutet WordPress-Integration

Wer über den Einsatz eines bbPress-Forums nachdenkt, ist sicherlich schon einmal über das Wort „WordPress-Integration“ gestolpert. Es ist ein Wort, das gewisse Erwartungen weckt; Erwartungen, dass ein Forum reibungslos innerhalb eines Blogs laufen könnte – sicherlich eine oft gewünschte Möglichkeit.

Das Wort weckt falsche Erwartungen. Es ist verhältnismäßig unglücklich gewählt und bedarf einer gewissen Klärung. Deshalb diese kleine FAQ, die hoffentlich vielen dabei helfen wird, ihre Entscheidung für oder gegen eine Integration vernünftig zu treffen.

Was ist die WordPress-Integration?

Es handelt sich um zwei Möglichkeiten, die in der Regel kombiniert werden:

  1. Die Benutzerdaten von WordPress und bbPress werden in nur einer Datenbanktabelle gespeichert. Dies geht einher mit der Abbildung von WordPress-Rollen auf Berechtigungen in bbPress.
  2. Die Anmelde-Cookies von WordPress und bbPress können geteilt werden. Wer an eine bbPress-Foren-Site angemeldet ist, ist an das zugehörige WordPress-Blog angemeldet und umgekehrt.

Darüber hinaus ist oft auch von der „deep integration“ die Rede. Hierbei werden nicht nur die Anmeldedaten geteilt, sondern auch die Funktionen des WordPress-Blogs geladen, damit sie innerhalb eines bbPress-Themes zur Verfügung stehen. Diese Konfiguration ist erheblich komplexer und für ungeübte Betreiber sehr schwierig, darüber hinaus führt sie sowohl zu einer Verlangsamung der Foren-Site als auch zu einer Verlangsamung des Blogs. Wegen der erhöhten Komplexität dieses Themas werde ich hier auf die „deep integration“ nicht weiter eingehen. Wer sie wirklich benötigt oder zu benötigen glaubt, wird aber relativ viel Information in englischer Sprache finden.

Brauche ich ein WordPress-Plugin für die Integration?

Ja. (Dank an infected für den Hinweis.)

Wenn eine Anmeldung an WordPress möglich sein soll, ist ein Plugin für WordPress erforderlich. Dieses setzt einige zusätzliche Cookies, die für bbPress erforderlich sind. Es handelt sich um das Plugin bbPress-Integration.

Übrigens: Das früher auf Seiten von bbPress erforderliche Plugin ist seit bbPress 0.9 nicht mehr erforderlich, weil diese Funktionalität in den Kern von bbPress aufgenommen wurde.

Kann ich ein integriertes bbPress innerhalb des Blogs betreiben?

Nein. (Jedenfalls nicht so einfach.)

Zwar ist es genau diese Möglichkeit, die vom Wortklang „Integration“ verheißen wird, aber sie ist eben nicht damit gemeint. Das Wort „Integration“ ist hier irreführend. Es meint nur die zwischen Blog und Foren-Site geteilte Benutzertabelle und die Möglichkeit einer gemeinsamen Anmeldung für beide Systeme. Die Systeme werden nicht im eigentlichen Sinne des Wortes integriert, sondern mehr aus Benutzersicht „zueinander kompatibel gemacht“. Das ist allerdings ein häufig wünschenswertes Merkmal.

Kann ich WordPress-Themes in einem integrierten bbPress benutzen?

Nein.

Es ist allerdings nicht schwierig, Foren-Site und Blog ähnlich oder gleich aussehen zu lassen, wenn man CSS, PHP und HTML kann. Das hier integrierte Forum bekam sein Design durch kleine Anpassungen am Standard-Theme Kakumei. Ich habe nur die Titelgestaltung geändert, einige Anpassungen im CSS vorgenommen und eine Handvoll Dateien für die Darstellung bestimmter Elemente leicht angepasst. Dieser Vorgang nahm nicht einmal eine Stunde Zeit in Anspruch, das grundlegende Design war ja schon in der Website (die übrigens ein WordPress-Blog ist) fertig.

Aus Benutzersicht entsteht der Eindruck eines integrierten Forums. Technisch sind es allerdings weiterhin zwei verschiedene Systeme, und wenn ich einmal das Design ändere, muss ich es in beiden Systemen anpassen.

Kann ich WordPress-Plugins benutzen?

Nein.

Welchen Sinn hat dann die WordPress-Integration in bbPress?

Die WordPress-Integration bildet die Benutzerdaten zweier Systeme in einer Datenbank ab. Das kann die Administration vereinfachen. Zum Beispiel lassen sich die Rollen in WordPress auf Rollen im bbPress-Forum abbilden, so dass Anwender, die Autorenrechte im Blog haben, automatisch zu Moderatoren im Forum werden. Bei Websites mit einigen Handvoll Benutzern kann durch solche Vereinfachungen der administrative Aufwand für die Benutzereinrichtung halbiert werden – und es kommt nicht zu Übertragungsfehlern bei der doppelten Eingabe der gleichen Daten.

Für den Benutzer mit Rechten im Blog und in der Foren-Site hat die Integration den Vorteil, dass Passwortänderungen erleichtert werden. Das Passwort wird nur einmal geändert und ist sofort in beiden Systemen gültig. Auch das trägt zur Vermeidung von Fehlern und damit verbundener Mehrarbeit bei, es ist außerdem ein Verhalten, wie es ein Anwender mit gutem Recht von einem modernen System erwarten kann.

Auch für das „einfache Forumsmitglied“ ergibt sich ein Vorteil. Ist der Benutzer am Forum angemeldet und will einen Beitrag im Blog kommentieren, so muss er dort nicht noch einmal seinen Nick, seine Mailadresse und seine Homepage angeben, sondern kann gleich mit dem Kommentieren beginnen. Wenn der Blogbetreiber sein WordPress so einrichtet, dass nur registrierte Benutzer kommentieren dürfen und gleichzeitig die Registrierung in WordPress abschaltet, steht die Kommentarmöglichkeit nur den registrierten Benutzern des Forums offen, was wohl manchmal so gewünscht ist.

Kurz zusammengefasst: Auch, wenn das Wort „Integration“ mehr verspricht als es hält, ist eine Website „aus einem Guss“ entstanden. In einigen Fällen mag das die zusätzliche Mühe wert sein, und in anderen nicht.

Funktioniert die Integration in WordPress-MU

Ja.

Da BuddyPress ein mit Plugins angepasstes WordPress-MU ist, sollte sie auch mit BuddyPress funktionieren. Mit beiden Systemen habe ich allerdings keine eigenen Erfahrungen sammeln können.

Was spricht gegen die Integration?

Die Installation mit WordPress-Integration ist erheblich komplexer als die einfache Installation von bbPress als eigenständig laufendes Forum. Der größte Teil der Fragen im englischsprachigen Support-Forum bezieht sich auf die Integration und die damit immer wieder einmal verbundenen Probleme.

Die WordPress-Integration kann ein Sicherheitsrisiko sein. Jeder registrierte Nutzer des Forums erhält auch minimale Rechte (Bearbeitung des Profils und Betrachtung der Startseite) im WordPress-Dashboard, und wenn eine künftige WordPress-Sicherheitslücke einen WordPress-Login erfordert, dann lässt sich diese Hürde vom Angreifer mit Leichtigkeit nehmen – er benötigt nur eine Wegwerf-Mailadresse und eine einfach durchzuführende Registrierung. Diesem Problem lässt sich nur durch weitere Maßnahmen auf Seiten der WordPress-Installation begegnen, etwa durch einen Zugriffsschutz auf das Verzeichnis wp-admin mit einer .htaccess-Datei.

Der Upgrade eines integrierten WordPress kann problematischer werden. Wenn sich in der kommenden WordPress-Version die Datenbankstruktur für die Benutzerdaten oder die Erzeugung der Anmelde-Cookies verändern sollte, ist die Integration zerstört. Die bbPress-Entwicklung vollzieht sich langsamer als die WordPress-Entwicklung, und es kann durchaus ein paar Wochen dauern, bis ein bbPress zur Verfügung steht, das zu einer neuen WordPress-Version kompatibel ist. Wenn dann auch noch ein Sicherheitsloch in der vorherigen WordPress-Version besteht und massenhaft ausgebeutet wird, hat man sich mit der Integration ein großes Problem geschaffen.

Abschließendes

In vielen Fällen ist die Integration durchaus die Mühe wert, aber wer darüber nachdenkt, sollte sich schon darüber bewusst sein, was sie leisten kann, was sie nicht leisten kann und welche langfristigen Probleme damit verbunden sein können.

WordPress 2.8.2

Nur, um zu so vielen Klagen über Rauheiten und Fehler auch mal etwas Gutes mitzuteilen: Diese Website läuft jetzt mit WordPress 2.8.2, der Upgrade war problemlos und die Integration mit bbPress funktioniert weiterhin reibungslos. Wenn das doch nur immer so wäre