Direkt zum Inhalt
Ivan Vidusenko
Ein neuer Beitrag zur Drupal-Community: Localized Configuration

Vorsicht "angestaubt"!

Dieser Artikel ist bereits etwas in die Jahre gekommen und enthält möglicherweise Informationen, die nicht mehr dem aktuellen Stand des Themas entsprechen.

Open Source in Drupal: “Contrib” und dessen Vorzüge

Open Source erlaubt es, jedem Entwickler volle Einsicht auf den Code der Plattform zu geben. Als Entwickler hat das massive Vorzüge: Alle in der Community verwenden dieselben Werkzeuge, sind also auch mit den gleichen alltäglichen Problemen in Berührung. Warum also selbst jede Kleinigkeit behandeln, wenn es auf der großen weiten Welt garantiert jemanden gibt, der das gleiche Thema bereits abgewickelt hat?

Das sind die Vorzüge der großen “Contrib”-Landschaft (Contributed, d.h. “beigetragen”) von Drupal. Will man sich als andere Nutzer auf der Seite ausgeben können, um Inhalte aus den Augen des Endnutzers zu sehen? Das Modul “Masquerade” fügt diese Funktion hinzu. Will man den Mailserver des Kunden zum Mailversand hinzuschalten? Dann macht man das lieber mit dem Modul “SMTP”, anstatt selbst Entwicklung in die eigene Lösung zu investieren.

Bedient man sich hingegen einer proprietären Software, so stehen viele Barrieren im Wege. So wird man als Entwickler z. B. wesentlich seltener fündig, wenn man nach Lösungen für seine alltäglichen Probleme sucht. Lösungen sind oftmals nur von den Mitarbeitern der Firma, beispielsweise über eine Support-Email, zu erhalten. Das kostet alles Zeit und Aufwand, wo man sonst mit einer Google-Suche den Ideenreichtum und Erfahrungsschatz von Open Source Software nutzen könnte.

Wenn man jedoch für all diese Vorzüge nicht zahlen muss, so entsteht zumindest ein Gefühl der Verantwortung und Treue den Menschen gegenüber, deren Wissen und Fähigkeit einem solche Vorteile ermöglicht haben. Man kann das französische Sprichwort “Noblesse oblige” anwenden; mit Privilegien kommt Verantwortung. Wenn man so viel erhält, sollte man auch zurückgeben, und an dem geteilten Schatz des Wissens und der Technologie seine eigene Prägung hinterlassen, sodass Andere genauso am eigenen Verständnis des Systems gewinnen können. Das ist ein ganz grundlegender Zug der Menschlichkeit.

Localized Configuration

Als Digitalagentur zielt arocom darauf ab, die modulare Natur und den Entwickler-Fokus von Drupal voll auszunutzen, um einzigartige Lösungen zu schaffen, anstatt ihn in ein vorgefertigtes Standardformat mit kleinen Anpassungen zu zwingen. Jeder Webseitenbetreiber hat eigene Vorstellungen davon, wie Inhalte auf seiner Seite strukturiert und verwaltet sein sollten, und was für Informationen an welcher Stelle erscheinen. Und auch innerhalb eines Betreibers gibt es verschiedene Teams, Abteilungen und Stakeholder, die nicht immer die selben Ansichten und Wünsche teilen.

Aus diesem Grund ist uns wichtig, dass der Kunde selbst Hand anlegen kann und nach Bedarf eigene Einstellungen an verschiedenen Aspekten ihrer Webseite tätigen kann. Ändert sich z.B. die URL zum Facebook-Auftritt, so sollte der Kunde schnell selbst die Änderung vornehmen können, anstatt über die Agentur gehen zu müssen.

Darum ist es nicht überraschend, dass sich über die Jahre hinweg ein Konzept in unserer Firma kristallisiert hat, wie man solche Einstellungen optimal an einer zentralen Stelle verwaltet. Ziel war es eine zugängliche UI zur Verfügung zu stellen, welche Einstellungen einer Seite global aber auch pro Sprache für unsere Kunden zugänglich macht.

Das Modul “Localized Configuration” bietet eine zentrale Oberfläche für Einstellungen an der Webseite. Es ist ein Framework für Entwickler, die ihre eigenen Features schreiben und diese ohne Mühe zentral & sprach-spezifisch verwalten können wollen.

Dabei müssen die Entwickler selbst nur ein eigenes Plugin mit den gewünschten Formularelementen schreiben. Localized Configuration bewerkstelligt die Darstellung der Formulare in einer zentralen Oberfläche, und bietet komfortable Optionen, diese Werte im Code abzufragen und für andere Funktionalitäten zu nutzen.

Das namensgebende Feature sind dabei die “Language Overrides”. So kann es - neben dem globalen Standard, der eingestellt ist - auch Abweichungen pro Sprache geben, falls z.B. ein eingestellter Satz übersetzt werden muss. Verwendet man das Drupal-System von “Sprachen” jedoch eher als Ersatz für “Multisite”, kann man z.B. auch für bestimmte Seiten ganze Features an- oder ausschalten, und Verhalten bestimmter Module erheblich ändern.

Bei unseren Kundenprojekten findet dieses Modul auf vielen Webseiten Verwendung. Die Overrides und der “lokalisierte” Aspekt des Moduls ist optional, und die Oberfläche kann auch allein als zentrale Sammelstelle für Einstellungen einer einzelnen Seite dienen. 

Der Pfad zur Contribution

Ein Modul aus einer internen Verwendung herauszulösen und für die Allgemeinheit bereitzustellen, erforderte einige Arbeit auf vielen Ebenen, wie in dem Konzept, der Technologie und auch der Organisation.

Die Oberfläche von “Localized Configuration”, wie aktuell bei arocom.de in Verwendung.

So wurde klar, dass das Veröffentlichen des Moduls die Verantwortung und den Prozess der Firma in seiner Entwicklung stark verschiebt. Nach einer Veröffentlichung muss die Entwicklung auf der öffentlich sichtbaren Plattform geschehen. Features, die allein unsere Firma betreffen, müssen herausgelöst und separat intern implementiert werden. Änderungen an der Struktur des Moduls müssen mit dem allgemeinen Wohl der Community im Auge vorgenommen werden. Und anstatt “mal eben” intern Fixes einspielen zu können, geht der Update-Prozess nun über die Standards von www.drupal.org, der Veröffentlichungsplattform für die Community. Alle Nutzer werden über jedes Update informiert, und Kommentare und Nachrichten, bei denen man bislang das Verständnis der Kollegen vorausgesetzt hat, müssen nun für die Öffentlichkeit verfasst und gewissenhaft gepflegt werden.

Bei einer Contribution sollte man darauf achten, dass der Code von Anderen nachvollziehbar ist, und für Entwickler Möglichkeiten bietet, das Verhalten anzupassen.

Bestimmte Lösungsansätze, die unseren Anwendungsfällen innerhalb der Firma hundertprozentig entsprechen, sind nicht von allen Nutzern zu erwarten, so wurden also einige Verhaltensweisen (z.B. das Filtern von Sprachen nach bestimmten Mustern der Sprachcodes) optional und im Backend einstellbar gemacht.

Daraufhin folgte der tatsächliche Prozess der Contribution auf der Community-Webseite www.drupal.org. Die Plattform ist selbstverständlich kuratiert und auf Qualität ausgelegt; es gibt viele Richtlinien, Tutorials, Anweisungen und Tipps, wie man sein Projekt möglichst optimal veröffentlicht und behandelt. Es gab viel zu lesen und viel zu optimieren, bevor die Projektseite einen angemessenen Reifegrad erhalten hat. Und als neuer Nutzer auf der Plattform muss man sich erst durch einen Validierungsprozess kämpfen, der die eigene Expertise und das Verständnis des “Drupal way of life” bestätigt, sodass die eigens verfassten Module nicht mehr als potenzielle Sicherheitsrisiken gekennzeichnet werden.

Eine ausgereifte Dokumentation erhöht die Chancen, dass der Beitrag bei anderen Entwicklern Anwendung findet.

Nun ist das Modul live, und man kann hoffen, dass es von der globalen Community für nützlich befunden wird. Finden sich viele Nutzer, so gewinnt auch der ursprüngliche Entwickler an der Contribution; es können nun Beiträge von Entwicklern auf der ganzen Welt erfolgen, die den Code des Moduls erweitern und verbessern, gar neue Features hinzufügen. Ist so ein Projekt erstmal in der großen weiten Welt, kann es ein Eigenleben entwickeln, welches zu allerlei Fortschritten führen kann.

Fazit

Die Contribution von Code an die weite Drupal-Community ist kein besonders einfacher Prozess, jedoch zutiefst befriedigend und nicht nur mit Vorzügen für die Anderen, sondern auch für den Entwickler und seine eigenen Kunden verbunden.

In diesem Schritt hat arocom nun eines unserer zentralen Module aus der internen Landschaft herausgelöst und für die Öffentlichkeit verfügbar gemacht:

Localized Configuration

Wir hoffen auf reges Interesse und freuen uns auf Feedback.