Die Kosten der Deep Integration

Wer ernsthaft über eine deep integration von WordPress und bbPress nachdenkt, sollte besser noch einmal nachdenken. Sicher, die deep integration kostet kein Geld, aber sie verursacht eine immense Serverlast und wirkt sich nachteilig auf die Performanz einer so realisierten Website aus.

Es ist nicht nur so, dass bei jedem Aufruf der Foren der gesamte „WordPress-Apparat“ mitgeladen wird, es werden dabei auch Datenbankabfragen ausgeführt. Was das in der Praxis bedeutet, kann in einem sehr ausführlichen Beitrag im englischsprachigen bbPress-Forum nachgelesen werden. Hier nur ein ganz kurzer Eindruck:

  • WordPress 3.0 mit etlichen Plugins: 27 Datenbankabfragen für eine Seitendarstellung
  • bbPress 1.0.2 mit etlichen Plugins: 29 Datenbankabfragen für eine Seitendarstellung
  • Die deep integration dieses bbPress 1.0.2 in WordPress 3.0: 56 Datenbankabfragen für eine Seitendarstellung

(Hinter „mit etlichen Plugins“ verbirgt sich, dass es weit über die Standardinstallation hinausgeht.)

Der erhöhte Speicherbedarf für den Webserver ist hierbei noch nicht einmal berücksichtigt, er führt zu einer weiteren Erhöhung der Last.

Eine Website mit wenigen Besuchern wird bei einer deep integration relativ langsam, eine Website mit einer nennenswerten Anzahl Besuchern wird zäh und kann sogar zu sichtbaren Fehlfunktionen neigen, wenn der virtuelle Speicher nicht ausreicht. Dabei ist es nicht möglich, für bbPress-Foren Caching einzusetzen – zum einen, weil es dafür zurzeit noch kein Plugin gibt, zum anderen ist es aber bei den häufig wechselnden Ansichten eines aktiv benutzten Forum auch gar nicht sinnvoll.

Deshalb: Wer über deep integration nachdenkt, sollte noch einmal nachdenken, ob sich die gewünschten Anforderungen in einer weniger belastenden Weise erfüllen lassen oder ob sinnvolle Abstriche daran gemacht werden können. Eine langsame und zu Fehlfunktionen neigende Website ist eines der wirksamsten Mittel, Nutzer und Leser fernzuhalten – und das wird niemals gewünscht sein. In der Regel ist es relativ einfach, das verwendete WordPress-Theme für bbPress „nachzubauen“. Der Lohn für diesen Aufwand liegt in einem schlanken und schnellen Forum, dass auch größeren Lastspitzen gewachsen ist, ohne dabei langsam zu werden.

Wenn diese Vorgehensweise nicht ausreicht, muss an die hinreichende Ausstattung des Serverrechners (mit RAM, Rechenleistung etc.) gedacht werden, auf dem die Website mit einer deep integration laufen soll. Ein normaler virtual server wird hierzu nahezu niemals geeignet sein. An dieser Stelle verursacht die deep integration dann doch monetäre Kosten. Auch sollte der MySQL von jemanden optimiert werden, der sich wirklich damit auskennt – und das Ergebnis dieser Optimierung sollte im Betrieb beobachtet und gegenenfalls nachgebessert werden. Diese Kosten und Mühen kann man sich ersparen, wenn man es schafft, die deep integration zu meiden.

Mögliche Probleme mit WordPress 3.0

Einige Anwender der gegenwärtigen bbPress-Version 1.0.2 haben Probleme mit dem zweiten Release-Kandidaten von WordPress 3.0 und einer geteilten Nutzerdatenbank zwischen Blog und Foren. Diese Probleme äußern sich darin, dass eine Benutzerregistrierung im Forum nicht mehr möglich ist, während die Registrierung im Blog funktioniert. Allerdings wird den im WordPress-Blog registrierten Benutzer in bbPress die Rolle „inaktiv“ zugewiesen, so dass das Forum für diese Benutzer nicht benutzbar ist. Deshalb ist diese Form der Registrierung nicht als provisorische Lösung zu empfehlen, da sie unter Umständen erhebliche administrative Nacharbeit bedeutet.

Das Problem äußert sich darin, dass bei der (korrekten) Registrierung die Meldung angezeigt wird, dass die Angabe einer E-Mail-Adresse erforderlich ist. Es wird berichtet, dass unter nicht reproduzierbaren Umständen gelegentlich auch eine Registrierung gelingt. Es sieht aus, als würde beim Registrierungsvorgang die Mailadresse verloren gehen.

Die Ursachen dieses Problemes sind zurzeit unklar. Die Benutzerdatenbank in WordPress 3.0 ist gegenüber der gegenwärtigen Version 2.9.2 unverändert. In einigen Fällen tritt dieses Problem auf, in anderen nicht.

Auf dem Hintergrund dieser Probleme empfehle ich jeden Nutzer eines „integrierten“ bbPress, vor dem kommenden Upgrade auf WordPress 3.0 auf dem verwendeten Server (es kann sich durchaus um ein obskures Problem mit der PHP-Version, der verwendeten MySQL oder ähnlichen Komponenten handeln) eine Testinstallation durchzuführen und genau zu untersuchen, ob alle Funktionen in gewünschter Weise arbeiten. Dabei sollten auch einige Benutzerregisterungen durchgeführt werden, um zu überprüfen, ob diese korrekt sind und ob die Mail mit dem Passwort auch an die angegebene Mailadresse gesendet wird. Solche Fehler werden im Forumsbetrieb kaum auffallen, wenn sie nicht von betroffenen Benutzern nach einer gescheiterten Registrierung mitgeteilt werden. Daher ist es umso wichtiger, hier Sicherheit zu erlangen.

Generell empfehle ich, mit dem Upgrade auf WordPress 3.0 zu warten, bis der Upgrade entweder durch ein Sicherheitsproblem von WordPress 2.9.x erzwungen wird oder bis der problemlose Betrieb aller Komponenten der Website gesichert ist. Sollte hier ein Problem in bbPress vorliegen, so wird es hoffentlich schnell behoben. Auch sollte nicht vergessen werden, dass es sich beim WordPress, das zu diesen Problemen führt, noch um einen Release-Kandidaten handelt und keineswegs um eine „richtige“ Release – es können also durchaus noch kleine Fehler darin stecken, die in den nächsten Tagen behoben werden. Generell ist vom Betrieb einer „richtigen“ Website auf einem „richtigen“ Server mit einem Release-Kandidaten oder gar einer Beta-Version abzuraten.

Ein kleiner Hinweis

Ich habe die Alpha-Version eines WordPress-Plugins zum Einbetten anderer Sites in das verwendete WordPress-Design zwar nie getestet, denke aber, dass es dennoch für viele interessant sein könnte, dass der Entwickler inzwischen eine Beta-Version mit vielen Verbesserungen veröffentlicht hat.

Alles weitere gibt es in englischer Sprache bei pixopoint.com.

bbPress und WordPress 3.0beta

Ich habe gerade meinen ersten und eher oberflächlichen Test mit der frisch veröffentlichen WordPress 3.0beta gemacht, ob die bbPress-Integration funktioniert – allerdings nicht die „deep integration“, sondern nur die geteilten Cookies und die gemeinsame Benutzerdatenbank.

Anders, als ich zunächst befürchtete, verläuft die Installation von bbPress 1.0.2 integriert mit WordPress 3.0beta völlig reibungslos und auf meinem Testsystem funktioniert alles reibungslos.

Zumindest das ist einmal eine gute Nachricht für Menschen, die eine integrierte bbPress-Forensite zusammen mit ihrem WordPress-Blog betreiben, denn es ist davon auszugehen, dass diese Kompatibilität auch für die Release von WordPress 3.0 bestehen bleibt.

Zur Zukunft von bbPress

Seit einiger Zeit zeichnet sich ab, wie die Zukunft von bbPress aussehen wird. Hier eine kurze Zusammenfassung (wäre es Software, so stünde „alpha“ daran), wie es weitergeht:

  • Demnächst wird eine bbPress-Version 1.1 veröffentlicht werden. Dies wird ein bbPress sein, das dem jetzigen Entwicklungsstand entspricht. Eine WordPress-Installation ist zum Betrieb einer bbPress-Forensite mit dieser Version voraussichtlich nicht erforderlich. Der Zeitpunkt der Veröffentlichung ist zurzeit unklar.
  • Mittelfristig wird bbPress zu einem WordPress-Plugin umgestaltet werden. Der Zeitpunkt, zu dem diese Version fertiggestellt wird, ist zurzeit unklar.

Diese Zusammenfassung ist vor allem deshalb mit starken Unsicherheiten behaftet, weil die gegenwärtigen Entwickler sich nur in Form von Andeutungen äußern. Der mittlerweile eingerissene kommunikative Stil der bbPress-Entwickler entspricht dem, was ich schon längere Zeit von WordPress – auch unter der Leitung von Matt Mullenweg entwickelt – gewohnt bin: Die Gemeinschaft der Anwender wird mit den Ergebnissen konfrontiert und kann zusehen, wie sie mit dem Produkt klar kommt. Die Verachtung der Anwender geht so weit, dass substanzielle kritische Stellungnahmen (also keine Pöbeleien) im offiziellen Forum von bbPress zensiert werden.

Persönliche Erklärung zu diesen Aussichten

Die Umgestaltung von bbPress in ein WordPress-Plugin wird für viele Anwender, die ein im Blog integriertes Forum wünschen, eine Erleichterung sein.

Mein Engagement für bbPress – es beschränkt sich im Moment ja sehr darauf, bbPress „deutsch sprechen“ zu lassen – wird allerdings beendet sein, wenn bbPress nur noch als WordPress-Plugin verfügbar ist. Ich habe bbPress immer für das geschätzt, was es zurzeit noch ist: Ein einfaches, schnelles und flexibles Forum, das nur geringe Anforderungen an den Serverrechner stellt und das eine Beschränkung auf die Kernfunktionalität eines Webforums als ein Feature erachtet.

Die Einbettung dieser Funktion in ein Blogsystem WordPress, das schon im normalen Blogbetrieb eine erhebliche Serverlast verursacht und das durch zunehmend sinnlosere Funktionalität immer aufgeblähter und ressourcenhungriger wird, halte ich für einen Fehler. Typische Workaround, mit denen die Schwächen der gegenwärtigen WordPress-Versionen umgangen werden – vor allem handelt es sich dabei um Caching – sind mit den viel dynamischeren Ansichten eines Webforums nicht sinnvoll einzusetzen. Eine mit einem fest in WordPress eingebetteten bbPress betriebene Foren-Site wird hohe Anforderungen an den Serverrechner stellen; der Betrieb wird damit teuer. Die alte Idee eines minimalen, schnellen Forums, das über eine Plugin-Schnittstelle an spezielle Wünsche angepasst werden kann, ist in einem solchen Produkt völlig verloren gegangen. bbPress ist mit einer derartigen Entwicklung zerstört, und es erinnert nur noch mit seinem Namen an das, was es einmal war.

Da ich aufgrund meiner Lebensumstände nicht dazu in der Lage bin, einen Fork der jetzigen Version von bbPress zu tragen und die darin erforderliche Qualität sicher zu stellen, bleibt mir nur noch der Abschied.

Eine demnächst erscheinende Version 1.1 wird, so sie als eigenständige Foren-Lösung verwendbar ist, natürlich noch eine Eindeutschung von mir erhalten.

bbPress ist kein Plugin

Offenbar führt die Anpreisung von bbPress, dass es mit WordPress „integriert“ werden könne, immer wieder zu Missverständnissen, die dann zu gewissen Fragen im offiziellen bbPress-Forum führen. Deshalb möchte ich es an dieser Stelle einmal ganz deutlich ausdrücken:

bbPress ist kein WordPress-Plugin.

Es handelt sich bei bbPress um eine eigenständige Internet-Anwendung. Mit bbPress kann eine Foren-Site betrieben werden, und zwar zurzeit auch ohne die zusätzliche Installation eines WordPress-Blogs.  Wer eine schlanke, leicht zu durchschauende und einfach zu administrierende Forums-Software sucht, die einen gewissen Minimalismus in ihren Funktionen mit modernen Techniken wie Auszeichnung der Beiträge durch Schlagwörter und RSS-Feeds für jede nur denkbare Ansicht sucht, der wird mit bbPress zurzeit sehr glücklich werden. In vielen Fällen ist dieser Kern genau die gewünschte Funktionalität. Doch dieser Kern lässt sich auch durch Plugins erweitern, wenn auch zurzeit die Plugin-Entwicklung etwas darniederliegt.

Die so genannte „Integration“ bedeutet nicht, dass bbPress als Plugin in WordPress betrieben wird. Es bleibt in jedem Fall eine eigenständige Anwendung. (So wie es aussieht, wird sich das in kommenden Versionen wohl ändern.) Die Integration bedeutet vielmehr, dass bbPress…

  • …seine Benutzerdatenbank mit der Benutzerdatenbank von WordPress teilen kann, so dass viele administrative Aufgaben erleichtert werden.
  • …für eine solche, geteilte Benutzerdatenbank eine Abbildung der WordPress-Rollen auf die Rollen in bbPress ermöglicht, was wiederum eine oft gewünschte Vereinfachung administrativer Tätigkeiten ist, wenn etwa ein Autor im Blog zum Moderator im Forum werden soll.
  • …den Anmeldecookie zusammen mit WordPress verwalten kann, so dass sich ein Benutzer nur an eines der beiden Systeme anmelden muss. Diese Funktion erfordert allerdings ein spezielles Plugin für WordPress, da bbPress noch weitere Informationen in den Cookies benötigt, die WordPress in seinem Kernsystem nicht „kennt“.

Das kann sehr praktisch sein, wenn bbPress zusammen mit WordPress eingesetzt werden soll und solche Features erwünscht sind. Es kann einem viel Kopfzerbrechen bei der nahtlosen Integration des Forums ersparen.

Aber bbPress ist kein WordPress-Plugin.

bbPress muss eigens installiert werden, in ganz ähnlicher Weise wie WordPress. Die Vorgehensweise bei der Integration ist zurzeit nicht trivial und wohl die häufigste Fehlerquelle, die im offiziellen Support-Forum aufscheint. Die manchmal gewünschte, so genannte „deep integration“ ist auch für den geübten Nutzer mit Fachkenntnissen ein bisschen knifflig und sollte unbedingt vermieden werden – tatsächlich war bbPress nie dafür gedacht, innerhalb von WordPress zu laufen, und deshalb ist die „deep integration“ auch mit signifikanten Schwächen in der Ausführungsgeschwindigkeit und in der Sparsamkeit im Umgang mit Ressourcen des Webservers verbunden. Bei der normalen Integration kann nicht das Theme von WordPress verwendet werden, sondern das Design muss gegebenenfalls als bbPress-Theme „nachempfunden“ werden, was aber für einen geübten Theme-Bastler, dem die WordPress-Konzepte schon vertraut sind, kein großes Problem darstellt. Tatsächlich sind sich WordPress und bbPress sehr ähnlich.

Was die WordPress-Integration bedeutet, habe ich schon hier geschrieben, ich will es nicht alles wiederholen.

Doch diese eine Aussage muss noch in aller Deutlichkeit ergänzt werden: bbPress ist kein WordPress-Plugin, sondern eine eigenständige Anwendung. Die Integration in WordPress ist deutlich komplexer als die Installation und Konfiguration eines WordPress-Plugins. Wer keine Erfahrung hat, wird schnell entmutigt sein; und auch mit einer gewissen Erfahrung erfordert der Vorgang, dass man „ein bisschen“ in vorwiegend englischsprachigen Anleitungen* liest. Die Mühe kann sich dennoch lohnen.

Das nur als Warnung an jeden, der nach oberflächlichem Lesen glaubt, dass es sehr einfach ginge. Was einfach geht, ist der Betrieb einer integrierten bbPress-Forensite. Die Einrichtung ist ein Vorgang mit etlichen Fallstricken. Wer ein wenig Englisch kann, bekommt in einem entsprechenden Thread im Support-Forum einen Eindruck von den Schwierigkeiten, die damit verbunden sein können – und derartige Threads gibt es etliche. Zu allem Überfluss bezieht sich das darin gesammelte Erfahrungswissen auf verschiedene Versionen von bbPress und WordPress, und es ist leider nicht immer hinreichend deutlich gesagt, auf welche Versionen es sich bezieht. Nur so viel sei hier zur Ermutigung gesagt: Nahezu alle Probleme lassen sich lösen, so lange es nicht um eine „deep integration“ geht.

*Ich hatte ursprünglich vor, eine Anleitung für die WordPress-Integration in deutscher Sprache zu verfassen, habe aber angesichts der derzeitig laufenden Diskussion um eine andere Herangehensweise im bbPress-Kern – man spricht sogar davon, bbPress in einer späteren Version zum WordPress-Plugin zu machen – davon Abstand genommen. Vielleicht wird es in den kommenden Monaten etwas einfacher, ein integriertes bbPress zu betreiben. In jedem Fall wird sich der gegenwärtige Vorgang ändern, da er zuviel Support-Aufwand verursacht.