Mit Drupal 8 wird alles anders. Ein Paradigmenwechsel steht auch in der Art und Weise bevor, wie wir in Zukunft Drupal-Projekte entwickeln: Mit Composer in a Drupal World stellt Johannes Haseitl (derhasi) vor, welche Rolle Composer dabei spielen wird. Composer ist ein Dependency Manager, der schon jetzt fester Bestandteil vieler PHP-Projekte ist und bestimmte - versionierte - Komponenten aus verschiedenen Quellen bündelt und bereitstellt, wie es bspw. npm oder bower für die node-Welt sind.

Gleichzeitig ist dieser Schachzug ein klares Bekenntnis für die allgemeine PHP-Community und für die Abkündigung des bisherigen Drupalismus, das Rad immer wieder selbst neu zu erfinden. Composer ist jetzt schon fester Bestandteil von Drupal 8 und stellt "intern" Symfony-Komponenten bereit. Was für Drupal 7 "drush dl" und "drush make" war, kann demnächst mit Composer erledigt werden. Darüber hinaus können mit Hilfe Composers komplexere Workflows implementiert werden, so etwa das automatische Einspielen von Patches als fester Bestandteil eines Deployments, und sogar Javascript-Komponenten integriert werden (womit potentiell npm und bower für Projekte obsolet werden könnten). Es gibt sowohl für Drupal 7 als auch für Drupal 8 schon Vorlagen für einen erfolgreichen Start mit Composer für Drupal.

Mit "Headless Drupal" wurde sich hier und hier und auch an dieser Stelle schon hinreichend auseinandergesetzt. Fakt ist, der Bedarf an systemagnostischer Interaktion verschiedener Systeme steigt. Mateu Aguiló Bosch (e0ipso) zeigt mit Expose Drupal with RESTful einige Best Practices für Projekte, die REST einsetzen. Als essentieller Teil der Entwicklung einer Headless-Applikationstruktur soll die Definition der Schnittstelle (API) zu Beginn eines Projekts erfolgen und die weitere Projektentwicklung gewissermaßen formen. Dabei ist es wichtig, technologischen Bias außen vor zu lassen und z.B. ganz bewusst ohne Drupal-Terminologie und -Architektur zu konzeptionieren, d.h. nicht an "entity" vom typ "node" mit einer "node id" zu denken sondern in abstrahierten Kategorien. Einen sehr guten Leitfaden hierfür stellt [schema.org] bereit.

Um größtmögliche Flexbilität zu gewährleisten ist es außerdem notwendig, das API zu versionieren, um ggf. Applikationen erweitern zu können, ohne bestehende Funktionalität und Kommunikation zu beeinträchtigen. Das RESTful-Modul für Drupal 7 ist eine von drei Möglichkeiten, REST in Drupal 7 zu implementieren und verfolgt strikt das Credo der technologischen Unvoreingenommenheit seiner interagierenden Systeme. Drupal 8 bringt schon rudimentäre REST-Funktionalität in Core mit, allerdings lässt sich diese Funktionalität nur im Code konfigurieren und verwendet keinerlei Abstraktion, so dass der 8.x-Release von RESTful mit Spannung erwartet wird.

Wer schon einmal mit dem Deployment von Drupal-Projekten in Berühung kam, der weiß: Konfiguration wird bis inklusive Drupal 7 in der Datenbank gespeichert, was zuweilen das Management und die Kohärenz von verschiedenen Entwicklungs-, Test-, Staging- und Produktivinstanzen einer Webseite zu einem Albtraum machen kann. Aus diesem Grund gab es bisher [Features], und auch deswegen wird jetzt alles besser, wie Fabian Bircher (bircher) in seiner Session Configuration Management in Drupal 8 zeigt. In Drupal 8 gibt es ein config-Verzeichnis, in dem Konfiguration in yml-Dateien exportiert und importiert werden kann.

Die Vorteile dieses Code-basierten Ansatzes liegen auf der Hand: Konfigurationänderungen können entweder im UI vorgenommen und exportiert werden oder direkt im Code vorgenommen werden und per yml-Dateien auf die jeweiligen Instanzen übertragen & dort importiert werden. Site-Building kann weiterhin so betrieben werden wie bisher, und es entfällt außerdem die Notwendigkeit, manuell und explizit "Features" zu basteln, denn wirklich alles ist bereits im Code vorhanden. Wer will, kann darüber hinaus einzelnen Modulen oder auch Install profiles bestimmte Konfiguration anhängen, um eine kleinteiligere Konfigurationsverwaltung zu ermöglichen.

Zeitgleich zu Fabians Vortrag präsentierte im Nebenraum Sascha Grossenbacher (berdir) seine Drupal 8 Contributed Modules overview, die ich leider verpasst habe. Nichtsdestotrotz möchte ich auf die in seiner Präsentation genannte Liste Drupal 8 Module Status hinweisen, die sicherlich sehr hilfreich für die Planung & Konzeption von anstehenden Drupal-8-Projekten ist.

In der Closing Session konnten verlorengegangene Elektronik und Kleidungsstücke von Ihren glücklichen Besitzern in Empfang genommen werden und das Organisationsteam stellte sich vor und präsentierte interessante Statistiken zur Veranstaltung (bspw. die Ausgabe von insgesamt 1551 Mahlzeiten). Außerdem konnten bis zur Closing Session um 18.00 Uhr die Anzahl der Drupal 8 Critical Bugs auf 36 reduziert werden und zum Abschluss der Veranstaltung gab es noch ein weiteres "Live-Commit" vor versammelter Mannschaft durch Alex Pott (alexpott).

Das Organisationsteam stellt sich vor

Die Drupal Dev Days 2015 in Montpellier waren mit 300 Teilnehmern restlos ausgebucht. Sowohl die Größe als auch die Auswahl der Sessions richtete sich sowohl an Anfänger als auch fortgeschrittene Drupal- und/oder PHP-Entwickler, während die "Profis" in den verschiedenen Sprint-Räumen bis an ihre Grenzen gefordert wurden. Ich kann die Dev Days vorbehaltslos für alle Interessierten empfehlen, ganz egal wie und wo die individuelle Expertise liegt. Die Stimmung war absolut positiv und es macht mehr und mehr den Eindruck, dass Drupal 8 in absehbarer Zeit fertig wird.