Joomla Vs. Drupal: Ein technischer Vergleich der Open-Source-CMS.

Unabhängig vom Webdesign Ihrer Internetagentur, gibt es technische Fragen!

Vor ein paar Wochen musste ich einen technischen Vergleich zwischen Joomla und Drupal schreiben. Natürlich begann meine Suche online. Überraschenderweise konnte ich keine vernünftigen technischen Bewertungen dieser beiden angesehenen Open-Source Content Management Systeme (CMS) finden.

Die meisten der verfügbaren Materialien spiegelten oberflächliche Vergleiche wider, die von Webmastern und Nicht-Entwicklern geschrieben wurden. Es gab eine Handvoll Artikel, die die Leistung anhand von Benchmarks verglichen, aber nicht tief genug, um das technische Innenleben des dem CMS zugrunde liegenden PHP-Frameworks im Detail zu bewerten.

Als Entwickler, der sowohl an Joomla als auch an Drupal gearbeitet hat, beschloss ich, dass es an der Zeit war, einen guten technischen Vergleich zwischen Joomla und Drupal zu schreiben, um den Krieg zwischen den beiden zu beenden.

Bevor wir beginnen, müssen wir einige CMS-spezifische Begriffe klären:

Benutzerfreundlichkeit vs. Komplexität

Wenn Sie online suchen, verwenden die meisten Analysten ein Spektrum, um festzustellen, welches CMS für verschiedene Spezifikationen am besten geeignet ist.

WordPress ist am einen Ende des Bereichs, am einfachsten zu bedienen und nicht für komplexe Projekte geeignet, Joomla ist in der Mitte, und Drupal ist am anderen Ende des Bereichs, der am schwersten zu bedienen und am besten für komplexe Projekte geeignet ist. Diese Kategorisierung hat etwas Wahres an sich, sollte aber nur auf einer sehr allgemeinen Ebene betrachtet werden.

Aus der Sicht eines Webmasters, der Aktualisierungen an der Website vornimmt, ist dies eine ziemlich genaue Annahme. Entwicklungstechnisch ist dies jedoch nicht unbedingt der Fall – lassen Sie uns herausfinden, warum.

Ebenso wird der Mythos, dass Drupal besser für komplexe Projekte geeignet ist als Joomla, durch die Bewertung der CMS aus der Perspektive eines Webmasters und nicht aus der Perspektive eines Programmierers verursacht. Diese Wahrnehmung ist darauf zurückzuführen, dass Drupal einen modularen Ansatz für die Gestaltung der Benutzeroberfläche und die Eingabe von Inhalten bietet. Drupal-Webseiten werden mit Hilfe von Blöcken und Ansichten erstellt.

Dies gibt einem Webmaster höchste Flexibilität beim Erstellen von Webseiten, ohne dass Programmiermodule für Drupal benötigt werden. Während Joomla ähnliche Toolboxen (Komponenten und Module) für Webmaster anbietet, ist es nicht so leistungsfähig wie Drupal für einen erfahrenen Webmaster, um schnell neue komplexe Webseiten zu erstellen.

Die Entwicklung neuer benutzerdefinierter Funktionen ist jedoch eine andere Geschichte. In der heutigen Welt, in der alles über Software gesteuert wird, reicht Flexibilität beim Verschieben von Inhalten auf Webseiten und eine modulare Benutzeroberfläche nicht aus. Wenn sich die Geschäftsanforderungen entwickeln, muss die Funktionalität innerhalb des CMS flexibel genug sein, um dies zu ermöglichen.

Technischer Vergleich von Joomla und Drupal
Sobald der Programmierer die Eingeweide des Drupal-Quellcodes öffnet, steht er vor einem Alptraum. Die Anpassung von Drupal ist nicht einfach, da es auf einem schlecht gestalteten, prozeduralen Framework basiert, während Joomla auf einem gut gestalteten, objektorientierten MVC-Framework basiert. Es implementiert auch eine Reihe von Designmustern wie Hörer, etc.

Selbst wenn Sie hochqualifizierte, (sehr teure) Drupal-Programmierer einstellen, besteht eine hohe Wahrscheinlichkeit, dass Ihr Code noch Spaghetti ähnelt, was in Zukunft viele Probleme verursachen wird, wenn Sie weitere Änderungen vornehmen wollen.

1. Datenbank

In Drupal werden Ansichten standardmäßig in der Datenbank gespeichert. Das bedeutet, dass Sie keine Versionskontrolle (wie SVN oder GIT) haben können und dass Entwickler nicht bei der Entwicklung von Views zusammenarbeiten können. Drupal Core bietet die Möglichkeit, Standardansichten im Code zu überschreiben, aber dieser Prozess beinhaltet zusätzliche Entwicklungsschritte.
Jeder neue Inhaltstyp in Drupal entspricht ein paar Datenbanktabellen. Dies bedeutet, dass sich die Datenbankstruktur im Laufe der Zeit ändert, wenn der Webmaster Inhalte erstellt und ändert. Dies ist ein Alptraum für Entwickler, die beim Erstellen von Webanwendungen Entity Relationship Diagrams (ERD) erstellen möchten. Sie können sich nie auf Ihre ERD verlassen, denn wenn Sie sich das nächste Mal die Datenbank ansehen, wäre die Anzahl der Tabellen und das Schema unterschiedlich.
In Drupal werden Protokolle in der Datenbank gespeichert. Alle modernen Systeme speichern Protokolle in Dateien. Durch die Speicherung von Protokollen in Datenbanken sind sie sehr schwer zugänglich, zu analysieren und zu profilieren. Ein Entwickler kann keine Linux-Tools (wie sed, etc.) zur Verarbeitung und Analyse von Protokollen verwenden. Der Prozess ist langsamer und benötigt viel Festplattenspeicher (viele Gigabyte) für die Speicherung der Datenbank. Dadurch wächst die Systemdatenbank unnötig und wird ineffizient. Für eine große, stark frequentierte Website ist es praktisch unmöglich, die Protokolle abzufragen und zu analysieren. Außerdem kann es die Protokollrotation und Archivierung alter Protokolle nicht unterstützen. Wer bei klarem Verstand würde Protokolle in der Datenbank speichern? Um diese Probleme zu lösen, hat Drupal syslog eingeführt.

2. Design Patterns

Erstens, Joomla ist objektorientiert, aber Drupal basiert auf alten PHP 4 prozedurale Programmierung (die dunklen Tage von php)

Drupal implementiert diese Designmuster, die alt und als schlechte Praxis bekannt. Wenn Sie mehr über die Programmierung schlechter Praktiken erfahren möchten, lesen Sie meinen vorherigen Blog-Post: Clean High Quality Code – eine Anleitung, wie Sie ein besserer Programmierer werden können.

Joomla implementiert jedoch diese Entwurfsmuster, die modern und vorbildlich sind und von den besten Frameworks wie symfony2, Zend und Enterprise Programmiersprachen wie java (einschließlich Struts und Spring) verwendet werden:

  • Objektorientiert (einschließlich Polymorphismus, Verkapselung, Vererbung, etc.)
  • MVC (Model View Control)
  • Ereignisgesteuert, Ereignisdisponent und Beobachter
  • Singleton
  • Einige der auf beiden Frameworks implementierten Designmuster wie DBAL (Database Abstraction Layer) wurden in Joomla verbessert. Joomla’s DBAL ist fast so gut wie ein ORM (Object-relational mapping). Und wenn Sie wirklich ein vollwertiges ORM verwenden möchten, lässt sich Joomla leicht in Doctrine integrieren.

Die Implementierung dieser modernen Praktiken ist auf die kontinuierliche Verbesserung zurückzuführen, die das Joomla-Framework und CMS im Laufe der Jahre erreicht haben, während Drupal stagniert hat. Es ist auch repräsentativ für die aktive Natur der globalen Joomla-Community.

3. Kernarchitektur

Joomla hat eine sehr saubere Kern-API, aber Drupal ist in hässlichem Spaghetti-Code geschrieben. Eine Analogie wäre der Vergleich der Joomla-Architektur mit einem Weihnachtsbaum und der Drupal-Architektur mit einem Buckyball.

In Joomla haben Sie eine Baumhierarchie. Der Hauptstamm ist der Joomla-Kern. Es hat Zweige (die API), an die Sie weitere Zweige (Komponenten) oder Blätter (Module oder Widgets) anhängen können. So kann eine Komponente angeschlossen werden und integriert sich so in die Sicherheits- (Access Control Levels) und Artikelverwaltungsfunktionen von Joomla. Als Zweig kann er Unterzweige haben und sogar eine Brücke zum Zweig eines anderen haben. Aber zu einem großen Teil gibt es nur minimalen Kontakt zwischen verschiedenen Bauteilzweigen.

In Drupal ist die Form weitgehend kreisförmig mit zahlreichen Punkten über die Oberfläche, die Module genannt werden. Wenn Sie eine Erweiterung bauen, können Sie sich in eines oder alle dieser Module einhängen. Diese enge Integration bedeutet, dass alles miteinander spricht. Diese Architektur ist viel weniger elegant und reduziert die Qualität des Codes von benutzerdefinierten Funktionen. Kontinuierliche und langfristige Wartung wird bei dieser Art von Struktur zu einem Problem.

Um diese Hooking-Architektur zu implementieren, verwendet Drupal call_user_func() und andere dynamische Funktionsaufruf- und Reflexionsmethoden. Das bedeutet, dass das Debuggen von Drupal mit modernen Debugger-Tools ein Albtraum ist. Wenn Sie mehr über Debugger-Tools erfahren möchten, können Sie hier nachlesen: Wie man VIM und PhpStorm mit xDebug zum Debuggen konfiguriert.

Außerdem bedeutet dies, dass Sie die Click-Through-Funktion Ihrer modernen IDE beim Programmieren nicht nutzen können. Auch wenn Sie PHPStorm oder andere moderne IDE’s verwenden, werden die Inspektions- und Autovervollständigungs-Funktionen nicht funktionieren, da sie den Rückgabetyp der dynamisch aufgerufenen Funktionen nicht kennen würden.

4. Code-Standards

PHP Specification Request (PSR) ist ein Codierungsstandard, der von den meisten modernen Unternehmensframeworks wie Symfony2 übernommen wird, um die Konsistenz der PHP-Codierung zu erhalten.

Joomla ist PSR-1-konform und bietet ein Framework für die kundenspezifische Entwicklung von PSR-0, aber der Joomla-Kern ist noch nicht PSR-0. Im Rahmen des Joomla-Frameworks wird auch eine PSR-3-Logging-Schnittstelle und ein PSR-4-Autoloader bereitgestellt. Drupal ist derzeit nicht konform zu einem PSR-Standard, wird aber in der Version 8 PSR-0 enthalten.

5. Leistung und Caching

Drupal macht im Durchschnitt 100 Datenbankabfragen pro Seitenaufruf (für einfache Seiten). Aufgrund dieser und anderer Performance-Probleme im Zusammenhang mit der Hooking-Architektur muss alles abstrahiert und stark zwischengespeichert werden, was zu weiterer Komplexität und Ressourcen(hardware)anforderungen führt. Joomla ist viel leichter und optimierter. Es hat einen viel schnelleren Kern. Joomla’s empfohlener Speicher ist 512MB während Drupal’s 2GB ist.

Die meisten Benchmarks sind sich einig, dass Joomla ohne Caching schneller und weniger ressourcenintensiv ist als Drupal. Einige Benchmarks halten Drupal jedoch für schneller, wenn das Caching eingeschaltet ist. Aber wenn Joomla Caching von Experten eingerichtet und richtig konfiguriert wird, kann es Drupal übertreffen, auch wenn das Caching eingeschaltet ist. Auch Joomla’s Caching ist viel einfacher und weniger ressourcenintensiv als Drupal, was Joomla einfacher zu bedienen, zu aktualisieren und anzupassen macht.

Während Sie Solr in Drupal haben, um Ihre Leistung für Websites mit großen Datenbanken und vielen Benutzern zu steigern, haben Sie Sphinx in Joomla, das in nativem C++-Code geschrieben ist und schneller und einfacher als Solr ist. Wir müssen Sphinx einfach nicht auf den meisten Websites installieren, da Joomla schnell und leistungsstark genug ist, um sehr große Datenbanken unter hohem Traffic verarbeiten zu können. Allerdings kann Sphinx bei Bedarf eine massive Leistungssteigerung für Joomla bieten, so dass es um ein Vielfaches schneller ist als Drupal Solr Bundle.

Alle der oben genannten sind starke Hinweise darauf, dass im Gegensatz zu den allgemeinen Glauben, Joomla ist viel besser für die Entwicklung größerer komplizierterer Websites als Drupal.

Was die Experten tun
Eine von vielen erfolgreichen berühmten Joomla-Websites ist linux.com. Leute, die bei linux.com arbeiten, sind dafür bekannt, dass sie von der Codequalität besessen sind und die besten und intelligentesten Programmierer sind. Egal wie viele Regierungs-Websites Sie zitieren können, die auf Drupal sind, die Tatsache, dass linux.com auf Joomla ist, überwiegt sie alle.

Nur ein wenig abseits des Themas, Linux Foundation, die Organisation hinter linux.com, beschäftigt Linus Torvalds (wohl einer der intelligentesten Programmierer überhaupt), die Person, die das Linux-Betriebssystem und GIT entwickelt hat.

Linus Torvalds ist eigentlich einer der letzten Vier im Geek Madness Wettbewerb im Geekwire Magazine. Und er tritt gegen Albert Einstein, Nicola Tesla und Alan Turing an. http://www.geekwire.com/2013/geek-madness-final/

Zur Verteidigung von Drupal betreibt die Linux Foundation auch einige kleinere Drupal-Websites (z.B. video.linux.com). Aber die Tatsache, dass sie Joomla für ihre Hauptfunktionalität schwere Website (linux.com) und nicht Drupal verwenden, ist für mich ein großes Pluszeichen für Joomla.

Auch ist es lohnenswert zu beachten, dass Linux-Stiftung Beitragszahler haben joomla eine 5-Sterne-Bewertung gegeben, während sie Drupal nur eine 3-Sterne-Bewertung gegeben haben.

Wenn Sie mehr Interesse haben, können Sie das Interview mit Dan Lopez, Web Architect von linux.com, lesen, warum er sich für Joomla entschieden hat.

Der Business Case

Obwohl Drupal gibt die größte Flexibilität für einen Webmaster, die Verwaltung ist sehr kompliziert und hat eine sehr steile Lernkurve. Kunden müssen einen Drupal-Experten Webmaster einstellen und allgemeine Benutzer können sich nicht einfach selbst trainieren, um Drupal zu benutzen, wie sie trainiert werden können, um Joomla zu benutzen. Im Vergleich zu Joomla, Drupal’s administrative Konsole ist wie ein Kämpfer Jet-Konsole.

Im Hinblick auf die Open-Source-Communities, die die CMS’s unterstützen, hat Joomla eine viel größere Entwickler-Community als Drupal. Dies ist ein Hinweis darauf, dass Open-Source-Entwickler es vorziehen, an Joomla zu arbeiten, anstatt ihre Köpfe auf den Tisch zu schlagen und an Drupal zu arbeiten.

Und um es noch schlimmer für Unternehmen, die sich für Drupal entscheiden, sind erfahrene Drupal-Entwickler von hoher Qualität viel schwieriger zu finden und teurer als Joomla-Entwickler. Erfahrene Entwickler arbeiten lieber an Joomla als an Drupal.

Ich bin keine Ausnahme von diesem selbst; ich habe ein paar Jobangebote mit großen Gehältern abgelehnt, weil ich nicht durch den Schmerz der Drupal-Entwicklung wieder gehen wollte.

Drupal könnte sich in Zukunft verbessern
Nach all dem ist das neue Drupal 8, das in Kürze veröffentlicht wird (es gibt noch kein offizielles Veröffentlichungsdatum), eine massive Verbesserung und viele dieser Probleme werden angegangen. Der Kern von Drupal wurde komplett neu gestaltet und entwickelt und soll viel vom Symfony2-Framework verwenden.

Bis zur Veröffentlichung von Drupal 8 lohnt es sich jedoch nicht einmal, Drupal für ein maßgeschneidertes CMS-Projekt in Betracht zu ziehen.

Sobald Drupal 8 freigegeben ist, bin ich bereit, die Drupal-Welt erneut zu besuchen und ein Projekt auf ihr zu machen, aber ich bin mir ziemlich sicher, dass Joomla zu diesem Zeitpunkt bereits noch mehr verbessert hat. Vielleicht haben wir bis dahin sogar volle Unterstützung für TDD auf Joomla (TDD oder Test Driven Development ist die beste Entwicklungsmethodik der Welt).

Fazit
Am Ende des Tages, wenn Sie immer noch Zweifel daran haben, nehmen Sie es von einem Entwickler, der Erfahrung mit Joomla und Drupal hat. Joomla ist viel besser als Drupal. Und das gilt unabhängig von der Größe und den Anforderungen der Website.

Es sei denn, Sie haben nicht-technische Gründe. Dann können Sie gut mit einer WordPress Agentur aus Lübeck fahren. :)

Content-Management für meine Firma. Joomla oder Drupal als CMS.

Das könnte auch interessant sein:

Welche Rollen spielen die Web Core Vitals für das Ranking meiner Webseite?