Druplicon in einer Kollage mit Zahnrädern
07.07.2023

Drupal: Modular Power

Das Modulkonzept Drupals und das Contribution-Prinzip der Drupal-Community √ľbersichtlich zusammengefasst und erkl√§rt.

Was Plugins f√ľr WordPress sind, sind f√ľr Drupal Module: funktionale Erweiterungen des Basis-Systems, die Betreibern mitunter viel teure Eigenentwicklung einsparen k√∂nnen. Im vorliegenden Artikel gehen wir auf das Modulkonzept Drupals im Detail ein. Wir beleuchten, welche unterschiedlichen Sorten von Drupal-Modulen es gibt, betrachten die Vor- und manche Nachteile des Modulkonzepts und schauen uns an, wie das Community-Contribution Prinzip Drupals funktioniert.

"There is a module for that"

So ziemlich jedem, der mit Drupal schon zu tun gehabt hat, d√ľrfte dieser Satz bereits √ľber den Weg gelaufen sein. Er ist die Chiffre f√ľr eine der besonderen St√§rken, die Drupal auszeichnen. Denn nicht nur steht der Satz stellvertretend daf√ľr, wie vielseitig Drupal in unterschiedlichsten Business Use Cases einsetzbar ist.

Er zeigt auch, dass bereits f√ľr eine Vielzahl von Problemstellungen oder nachgefragten Funktionen, die ein potenzieller Betreiber Drupals l√∂sen bzw. umsetzen lassen m√∂chte, L√∂sungen existieren. Mit anderen Worten: das fragliche Problem hat schon vorher jemand gehabt, √ľber ein generisches Modul gel√∂st und dieses wiederum der Drupal-Community zur Nutzung und weiteren Entwicklung zur Verf√ľgung gestellt.

Was ist ein Drupal-Modul und wie funktioniert es?

Ein Drupal-Modul ist ein nach einem festgelegten Standard entwickeltes Datei-Set. Es besteht meist aus einer unterschiedlichen Zahl von PHP-, JavaScript-, CSS- und weiteren Plaintext-Konfigurations-Dateien. In seiner Gesamtheit erg√§nzt oder erweitert dieses Datei-Set den Kern-Drupals um neue Funktionen. Dabei sind der Fantasie, um welche Funktionen es sich dabei handeln kann, keine Grenzen gesetzt ‚Äď diese liegen allenfalls in den Bereichen "time and budget".

Diese gro√üe Vielseitigkeit, die das Modulkonzept Drupals bietet, ist mit ein Grund, wieso das System oft als "Web-Application-Framework" bezeichnet wird, und nicht "nur" als "Content-Management-System". Content-Management ist somit nur *ein* Aspekt, der sich √ľber Drupal darstellen l√§sst. Aber auch das ganze funktionslogische "Drumherum" ist mit Drupal abbildbar: seien es komplexe Freigabeprozesse, Unternehmens-Workflows, Produkt-Taxonomien, Berechtigungsschemata, Nutzer- und Rollenmanagement, die Steuerung von oder die Ansteuerung durch beliebige Drittsysteme - die Liste lie√üe sich beliebig lange fortsetzen.

Module werden in Drupal installiert, indem ihre Dateien im Ordner "modules" im Drupal-Verzeichnisbaum hinterlegt werden. Dies kann theoretisch auch händisch passieren, wird bei versionierten Projekten aber in der Regel mittels "Composer" erledigt.

Die interne Modul-Verwaltung liest dann aus der standardisierten Info-Datei eines Moduls dessen Basis-Informationen wie Name, Beschreibung und Versionsnummer aus und zeigt es der Modul-Liste an. Ebenso ist in dieser Liste dann ersichtlich, ob das Modul gerade aktiviert oder deaktiviert ist. Aktivieren l√§sst es sich auf mehrere Arten: entweder automatisiert bei der Installation √ľber ein Script, oder auch manuell in der Modul-Liste √ľber eine Checkbox. Analog l√§sst sich ein Modul auch wieder deaktivieren und deinstallieren, sofern auf dieses Modul gerade keine Abh√§ngigkeiten bestehen.

Was sind Modul-Abhängigkeiten?

Module können in Drupal so entwickelt werden, dass sie den Funktionsumfang anderer Module voraussetzen, um selbst funktionieren zu können. Auch hier gilt wieder der Effizienzgedanke: Was da ist und funktioniert, sollte nach Möglichkeit wiederverwendet oder darauf aufgebaut werden, sodass das Rad nicht immer wieder neu erfunden werden muss.

Das bedeutet aber auch: ist ein Modul A in einem Drupal-Setup vorhanden und aktiviert, von dessen Funktionsumfang ein weiteres installiertes und aktives Modul B abh√§ngt, kann Modul A nicht ohne Weiteres deaktiviert werden. Zuerst m√ľsste dies beim abh√§ngigen Modul B geschehen.

Ein weiterer Aspekt, der bei Modulabh√§ngigkeiten ("Dependencies") mitunter zu Problemen f√ľhren kann, sind Inkompatibilit√§ten nach Funktions√§nderungen. Gibt es bei Modul A beispielsweise in einer neuen Version eine √Ąnderung in den bereitgestellten Funktionen, die von Modul B so nicht erwartet wird, kann dies zu einem Kompatibilt√§tsproblem und somit zu Fehlern im Projekt f√ľhren, sofern das Problem nicht durch eine neue Version oder einen Patch f√ľr Modul B behoben wird.

Dies ist im Übrigen eines der häufigsten Szenarien im Lebenszyklus eines Drupal-Projekts bei denen im Rahmen der reinen Wartung und Instandhaltung Probleme auftreten können. Dies tritt insbesondere dann auf, wenn Module zum Einsatz kommen, die nicht so häufig verbreitet sind oder selten neue Versionen bekommen.

Modul-Abhängigkeiten bringen somit auch Nachteile mit sich. Im Großen und Ganzen wiegen hier jedoch die Vorteile - nämlich die Wiederverwendungsmöglichkeit bereits vorhandener Lösungen - erheblich schwerer.

Welche Arten von Modulen gibt es?

Core-Module

Auch der Drupal-Kern selbst ist bereits modular aufgebaut. Das hei√üt, auch das Funktions-Set, welches Drupal nach einer Standard-Installation bietet, wird √ľber Module bereitgestellt. Diese Module nennt man "Core"-Module. Sie werden auf drupal.org zentral verwaltet, betreut und weiterentwickelt. Jedoch ist ihre Zahl nicht unver√§nderlich.

Seit der neuen, mit Drupal 8 eingef√ľhrten evolution√§ren Entwicklungsstrategie, werden immer wieder neue Module in den Drupal-Kern aufgenommen, um den Funktionsumfang von Drupal Core zu optimieren. Veraltete, kaum oder nicht mehr genutzte Module wiederum k√∂nnen aus dem Core im Rahmen eines Minor- oder Major-Release auch wieder herausgenommen werden.

Ver√§nderungen an Core-Modulen durch den Seitenbetreiber sind technisch zwar m√∂glich, aber unbedingt zu vermeiden - es sei denn, dies geschieht durch einen gem√§√ü der Drupal-Entwicklungsrichtlinien geschriebenen Patch, der ggf. auch an die Community zur√ľckgegeben wird. Denn nur wenn die Core-Module unangetastet bleiben, bleibt eine Drupal-Installation update-f√§hig und wartbar.

Eine √úbersicht der aktuell in Core befindlichen Module befindet sich hier.

Contrib-Module

Ein Contrib(ution)-Modul ist, wie der verk√ľrzte englische Name schon sagt, ein Modul, welches ein Beitrag (contribution) aus der Community zum Funktionsumfang von Drupal ist. In vielen F√§llen entstehen solche Module initial im Rahmen von Drupal-Projekten, bei denen sich

  • ein einzelner Drupal-Entwickelnder
  • der umsetzende Dienstleister
  • oder der Betreiber des Drupal-Projekts

entscheidet, aus einer bestimmten Problemstellung heraus den L√∂sungsansatz als generisches Modul zu abstrahieren, dieses der Community bereitzustellen und entweder dessen Betreuung und Weiterentwicklung als sogenannter "Maintainer" selbst √ľbernimmt oder nach Gleichgesinnten sucht, die sich an der Betreuung beteiligen ("Co-Maintainer").

Löst das Modul ein häufig vorkommendes Problem, ist es wahrscheinlich,

  • dass sich weitere Mitglieder aus der Drupal-Community an dessen Weiterentwicklung beteiligen
  • Dritte dessen Weiterentwicklung finanziell unterst√ľtzen (z.B. durch Sponsoring)
  • oder die Bereitstellung von eigenen Entwickler-Kapazit√§ten f√ľr Verbesserungen und Bugfixing anbieten.

Der Contribution-Ansatz, eigene Arbeitsergebnisse der Allgemeinheit zur Verf√ľgung zu stellen, kann sich also in vielerlei Hinsicht auszahlen - und steht ganz im Zeichen des Open-Source-Gedanken:

  • Modul-Maintainer k√∂nnen Co-Maintainer finden, die ihnen helfen und Entwicklungsarbeit abnehmen
  • Betreiber von Drupal-Projekten, f√ľr deren Projekte das Modul ein Problem l√∂st, m√ľssen nicht von null beginnen, sondern profitieren von der bereits geleisteten Entwicklungsarbeit, was sowohl eine Zeit- als auch Geldersparnis bedeuten kann
  • entscheiden sich diese anderen Betreiber, in Abstimmung mit dem Maintainer, das fragliche Modul funktional aufzur√ľsten, zu verbessern oder sicherheitstechnisch weiter zu h√§rten, gewinnt auch die urspr√ľngliche ver√∂ffentlichende Person des Moduls, da sie nun ihrerseits von der investierten Arbeit anderer Community-Teilnehmer profitieren kann
  • entscheiden sich andere Betreiber, f√ľr das Modul Plugins zu schreiben oder zus√§tzliche abh√§ngige Module zu entwickeln, die in Kombination mit diesem funktionieren, steht allen Beteiligten ebenfalls ein potenziell viel gr√∂√üerer Nutzwert zu Verf√ľgung, als wenn jede Partei isoliert ihre eigene L√∂sung verfolgt h√§tte

Aufgrund dieser vielen Vorteile ist das Contrib-Modul erwartungsgem√§√ü ein sehr h√§ufiger Modul-Typ. Die Suchmaske f√ľr Contrib-Module auf drupal.org nennt hier inzwischen √ľber 50.000 verf√ľgbare Module.

Besonders beliebte und mitunter seit Jahren verf√ľgbare Module sind beispielsweise:


Schon immer war es außerdem so, dass besonders populäre und weitverbreitete Contrib-Module irgendwann auch zu einem Core-Modul werden konnten. Bekannte Beispiele sind etwa Views, welches ab Drupal 8.0 in den Core aufgenommen wurde oder Media, welches ab Drupal 8.4 in Core wanderte.

Setzt ein Bestandsprojekt ein Contrib-Modul ein, welches zu dessen Betriebszeit in Core wandert, kann mitunter eine kleinere Migration im Rahmen der Wartung und Weiterentwicklung notwendig werden. Hierbei muss die Funktionslogik in diesem Fall vom "alten" Contrib-Modul auf das "neue" Core-Modul umgestellt werden muss. Insbesondere bei komplexen und funktionsmächtigten Modulen, wie es bei Media der Fall war, kann eine solche "interne" Migration durchaus aufwändiger werden.

Custom Module

Unter einem "Custom Modul" versteht man ein nach den allgemeinen Entwicklungsrichtlinien geschriebenes Drupal-Modul, welches aber in der Regel nur in einem konkreten Kundenprojekt zum Einsatz kommt und somit nicht veröffentlicht wird.

Mit Custom-Modulen lassen sich insbesondere Business-Logiken und Geschäftsprozesse gekapselt in einem Drupal-Projekt abbilden, die sehr kundenspezifisch sind und deren Abstraktion in ein generisches Modul entweder nicht sinnvoll oder nicht wirtschaftlich ist.

Im konkreten Kundenprojekt fungieren diese Module aber genauso wie "veröffentlichte" Module: sie lassen sich installieren, aktivieren, ggf. konfigurieren und können durch den Seitenbetreiber oder seine/n Dienstleister weiterentwickelt werden.

Nicht selten beginnt ein neues Contrib-Modul sein Leben auch als ein solches Custom-Modul: wenn also etwa die Entscheidung getroffen wird, den kundenspezifischen Use Case zu generalisieren und daraus eine abstrakte Problemstellung mit einem generischen L√∂sungsansatz zu definieren bzw. implementieren. In diesem Fall - und entsprechend vorhandenes Budget vorausgesetzt - kann ein Custom-Modul ein Rewrite erfahren und daraus ein neues Contrib-Modul entstehen, was auf drupal.org ver√∂ffentlicht wird und das Funktionsangebot f√ľr Drupal wieder um ein kleines St√ľck erweitert.

Themes

√Ąhnlich wie Module sind Themes ebenfalls ein Bundle aus verschiedenen Dateien: Konfigurationsangaben in Plaintext, PHP, HTML, CSS, JavaScript und ggf. Grafiken. W√§hrend Module jedoch in der Regel Funktionalit√§t bereitstellen, k√ľmmern sich Themes um Darstellung.

Vereinfacht gesagt sind sie die Oberfl√§che daf√ľr, was Drupal an funktionalen und inhaltlichen Elementen bereitstellt und legen fest, wie diese in einem Webbrowser letztlich angezeigt werden. Erst √ľber diese von den Themes bereitgestellte ("gerenderte") Oberfl√§che wird es also m√∂glich, Daten aus Drupal zu konsumieren, dorthin zu √ľbergeben oder anderweitig mit dem System zu interagieren.

Im Gegensatz zu manch anderen Systemen, wie beispielsweise Typo3, erzwingt Drupal keine harte Trennung zwischen einer bestimmten administrativen Oberfl√§che ("Backend"), √ľber die das Projekt verwaltet wird, und der eigentlichen Endbenutzer-Oberfl√§che ("Frontend").

Es ist also ohne Weiteres m√∂glich, Frontend und Backend √ľber dieselbe Benutzeroberfl√§che zu verwalten. Aufgrund des Umstandes, dass jedoch viele Bedienelemente, die f√ľr die Administration einer webbasierten Software erforderlich sind, selten oder nie in Frontend-Kontexten gebraucht werden, existieren f√ľr Drupal aber auch spezielle "Backend", oder auch "Administration"-Themes". Diese sind f√ľr die bequeme und √ľbersichtliche Website-Administration optimiert - etwa das neu f√ľr Drupal 10 mit aufgenommene Standard-Administrations-Theme Claro.

Das Drupal-Contribution-System

Im Verlauf des Artikels wurde bereits mehrfach angerissen, dass im Drupal-Ecosystem die "Contribution" - also der Beitrag bzw. die Beiträge Einzelner, einer Gruppe, eines Unternehmens oder einer Institution - die entscheidende Triebfeder ist, die das Drupal-Projekt in seiner Gesamtheit voranbringt.

Ohne dieses kontinuierliche Commitment zahlloser Unterst√ľtzer k√∂nnte Drupal nicht das sein, was es ist:

  • ein ausgesprochen vielseitiges und funktionsm√§chtiges Content-Management-System und Web-Applikation-Framework
  • mit hohen Qualit√§tsstandards, einer geregelten Update- und Upgrade-Policy
  • technisch kontinuierlich erneuert und somit stets auf der H√∂he der Zeit
  • und das alles f√ľr jeden frei verf√ľgbar, nutzbar, erweiterbar, da es quelloffene Open-Source-Software ist


Wer kann contributen?

Jeder. Man muss dazu kein Entwickler sein, denn es gibt auch genug nicht-entwicklerspezifische Themen, zu denen man beitragen kann. Folgende sogenannte "contribution areas" werden hierbei von der Drupal-Community genannt:

  • Accessibility
  • Community building
  • Contributed modules, themes, and distributions
  • Contributor guide
  • Documentation
  • Drupal core
  • Drupal.org websites
  • Event planning
  • Knowledge sharing
  • Marketing
  • Mentoring
  • Support
  • Translation
  • Usability
     

Quelle: drupal.org

Man muss auch keine nat√ľrliche Person sein, denn auch Unternehmen und Institutionen k√∂nnen Contributions beitragen: etwa, indem

  • sie ihren Mitarbeitenden gestatten, Drupal-Contributions aus den oben genannten Bereichen w√§hrend der Arbeitszeit vorzunehmen
  • sie Contributions durch Dritte, f√ľr die genannten Bereiche finanziell unterst√ľtzen oder daf√ľr als Sponsor fungieren
  • die Betreuung und Weiterentwicklung z.B. eines Contrib-Moduls √ľbernehmen und finanzieren


Contribution Credits

F√ľr Contributions gibt es seit 2015 Credits. Sie fungieren gewisserma√üen als "Belohnung" bzw. als Indikator daf√ľr, dass eine Person oder ein Unternehmen eine Contribution f√ľr Drupal vorgenommen hat (hier als Beispiel unsere eigene Credit-Page).

Dieses System kann somit als ein Gradmesser f√ľr das Engagement in der Community dienen. F√ľr besonders stark engagierte Unternehmen kann es zudem einen Werbeeffekt darstellen, wenn beispielsweise

  • Kunden darauf Wert legen, dass ein Dienstleister bei Einsatz einer Open-Source-Software "nicht nur nimmt, sondern auch (zur√ľck-)gibt" oder
  • potenzielle neue Mitarbeitende darauf achten, dass der m√∂gliche k√ľnftige Arbeitgeber auch Zeit und gestalterischen Raum anbietet, etwas in der Open-Source-Community beitragen zu k√∂nnen

Aber auch Kunden als Drupal-Betreiber selbst k√∂nnen Credits einsammeln. Hierzu ben√∂tigen sie ebenfalls einen Account auf drupal.org. Im Rahmen ihres eigenen Projekts k√∂nnen sie Aufw√§nde ihres Dienstleisters finanzieren, aus denen Contributions wie z.¬†B. Bugfixes, Lokalisierung, Dokumentation u.¬†v.¬†m. entstehen. Denn dann kann der Dienstleister diese Contribution auch seinem Kunden gutschreiben lassen, wodurch der Kunde wiederum √∂ffentlich zeigen kann, dass er ebenfalls einen Beitrag zur Verbesserung und Weiterentwicklung Drupals leistet. Wir freuen uns beispielsweise, dass unser Kunde Wertgarantie seit Kurzem ebenfalls Pr√§senz auf drupal.org zeigt und schon ein paar Credits f√ľr die im Rahmen seines Projekts erfolgten Contributions erhalten hat.

Fazit

Module sind ein besonders wichtiger und mächtiger Baustein in der Entwicklungs-Philosophie Drupals, um funktionale Erweiterungen nach einem definierten Prinzip bereitstellen zu können. Sie tragen damit wesentlich zur großen Flexibilität bei, die Drupal sowohl als Content-Management-Plattform, aber auch als Web-Applikation-Framework bietet.

Die Bereitstellung und der Unterhalt ("Maintenance") von Contrib-Modulen ist ein wichtiger Beitrag zur St√§rkung von Drupal als Gesamtprodukt und eine tragende S√§ule f√ľr seinen anhaltenden Erfolg. Jedoch bedeutet diese Maintenance Arbeit und erzeugt auch Kosten, die gedeckt sein wollen.

Deswegen ist es so wichtig, dass Betreiber von Drupal-Projekten auch die Bereitschaft zeigen, etwas an die Drupal-Community zur√ľckzugeben. Das hierf√ľr geschaffene Contribution-Modell bietet vielf√§ltige M√∂glichkeiten, sich f√ľr Drupal oder seine Community zu engagieren.

"Come for the software. Stay for the community".
So lautet ein weiterer viel zitierter Satz, wenn es um Drupal geht. Nur wenn möglichst viele Betreiber dieses Motto beherzigen und auch aktiv leben, haben Open-Source-Projekte wie Drupal eine sichere Zukunft.

Daher ist es an uns allen, daf√ľr zu sorgen, dass dies so bleibt.


Bildnachweis

Zahnräder auf Titelbild von Vecteezy