Complex importers with Drupal 7

When you want to get complex content into Drupal there is really only one valid choice, Migrate. Feeds works fine for simple things but any amount of complexity quickly calls upon Migrate, unless you want to write every aspect of your migration by hand; and you shouldn’t.

The example migrations are a good start alongside the Migrate documentation to understand the fundamentals. What we’ll discuss here is the non-obvious stuff. (mehr …)

Drupal auf dem 10-Meter-Brett

Die drei Tage voller Sessions der Drupalcon 2013 sind gestern in Prag zu Ende gegangen. Was für uns bleibt ist gespannte Vorfreude auf nächstes Jahr und Ungeduld alle neu gelernten Tricks und Methoden in der Praxis auszuprobieren.

Die Konferenz selbst zeichnete sich wie üblich durch eine breite Vielfalt an Talks von Frontend bis CMS-Kern über Business zu Support aus. Insbesondere die technischen Talks befassten sich in der Mehrheit mit dem noch nicht veröffentlichten Release Drupal 8.

jump1
Bild: Creative Commons BY von Therme Loipersdorf

Das Brett

Drupal 8? Wer noch nichts von der kommenden Version gehört hat dürfte überrascht sein was alles im achten Release des Drupal-Kerns drinsteckt: Grosse Teile wurden durch Komponenten aus anderen Systemen ersetzt, so dass viele Komponenten nun auf dem PHP-Framework Symfony2 aufsetzen. Weitere integrierte Fremdtechnologien sind die Templating-Abstraktion mit Twig, PHPUnit, BackboneJS und YAML, um die wichtigsten zu nennen.

Der technologische Wandel, das Sprungbrett, ist definitiv der grösste Abstand, den es bisher zwischen zwei Versionen gab und es teilt die Community in gewisser Weise. Es verwundert nicht, dass innerhalb dieses Klimas auch ein Fork zum Stand vor Symfony geschah. Zumindest an der Drupalcon war die Atmosphäre wie wir sie erlebten diesem Wandel grösstenteils positiv gegenübergestellt. Es fehlte nicht an Talks, die versuchten bisher in Drupal nicht verwendete Methoden und Strategien der Softwareentwicklung näherzubringen.

Gründer Dries sagte in seiner Keynote, dass Drupal 8 kommt „when it’s ready“ und das soll Frühjahr 2014 sein. Das macht etwas ungeduldig, weil produktiver Einsatz dann frühestens im Sommer möglich sein wird, wenn genügend Contrib-Module nachgezogen haben, was im einfacheren Sprung auf Drupal 7 auch eine signifikante Zeit dauerte.

drupalcon_grouphoto
Bild: Creative Commons BY-SA von Michael Schmid

Der Sprung

Gelingt der Sprung mit Fokus auf Objektorientierung, Erhalt von Flexibilität und die Behebung struktureller technischer Mängel auf dem Grossteil der Codebasis der Community (und nicht nur im Kern) dürfte Drupal ein gänzlich anderes Projekt sein als noch vor wenigen Jahren, aber ein umso spannenderes aus Techniksicht wie auch in der Breite der Einsatzgebiete für den Kunden.

Was wir sehen durften, was Drupal 8 jetzt kann, wie Probleme im Page-Caching, der Mehrsprachigkeit, der Konfiguration und vielen weiteren Aspekten gelöst sind, wird Drupal einen klaren Schritt attraktiver zum Enterprise-Einsatz und hebt sich umso mehr von anderen Content-Management-Lösungen im PHP-Bereich ab. Die Lücke zu etablierten kommerziellen Produkten wird im Kernbereich Content kleiner.

Nur das mit dem ganzen Singen auf der Drupalcon werden wir wohl nie verstehen.

DrupalCon Munich 2012 Rückblick

Drei Tage Konferenz sind verdammt schnell rumgegangen und Marc und ich sind auf dem Weg zurück nach St.Gallen. Nach dem interessanten ersten Tag ging es Mittwoch und Donnerstag mit eine Vielzahl diverser technischer Vorträge weiter, jeweils eingeleitet durch interessante Keynotes von Anke Domscheit-Berg (Open-Data-Aktivistin) und Fabien Potencier (Symfony-Leadentwickler).

Was noch zu erwähnen ist sind die BOFs (a.k.a. Birds of a Feather), informelle Zusammenkünfte von Teilnehmern zu unterschiedlichsten Themen. Diese Treffen können aufgrund der Dialogmöglichkeit oft viel wertvoller sein als die Sessions (welche so oder so aufgezeichnet werden). So war es für uns zum Beispiel spannend herauszufinden wie andere Agenturen den Übersetzungsworkflow lösen oder wie man eine TYPO3-zu-Drupal-Migration technisch möglich macht.

Ausserdem ist noch interessant, dass auf der Drupalcon Munich ein Business-Track zur Verfügung stand und sich mit Themen wie Schätzungen, Zusammenarbeit mit Grossunternehmen und verwandten Themen beschäftigte. Diese Sessions zeigten wie stark wachsend Drupal aktuell ist und dass Drupal immer stärker für Enterprise-Kunden attraktiv wird. Das sah man allgemein auch an der Zusammenstellung der Sponsoren, wo man beispielsweise Microsoft kaum vermuten würde.

Im Closing Plenary wurde schliesslich verraten, dass nächsten August die Konferenz in Prag sein wird. Das werden wir uns nicht entgehen lassen und wir sind aufgrund der tollen Community motiviert nächstes Mal auch für die Initiative Sprints zu bleiben um dabei zu helfen Drupal besser zu machen.

DrupalCon Munich 2012

Der erste offizielle Konferenztag der DrupalCon neigt sich dem Ende und eins ist klar: hier dabei zu sein ist für jeden Drupal-Entwickler (und Consultant der Drupalprojekte betreut) Gold wert. Neben den Sessions ist die Interaktion mit der Community dabei eine tolle Gelegenheit und #drupalcon/#drupalconmunich zu beobachten ist dabei ein guter Startpunkt. Man muss hierbei definitiv das Organisationsteam erwähnen für die gut erreichbare Location, Verfügbarkeit von Strom und WLAN (mit nur wenigen Einbrüchen) sowie die erstklassige Verpflegung.

Keynote

Nach dem etwas skurrilen bayrischen Warm-Up inkl. Jodler und Bierausschank um 08 Uhr zeigte Dries eine generelle Übersicht zu sichtbaren Neuerungen in Drupal 8 (was etwa August 2013 erscheint); der Einfluss von Symfony findet sich daher in dedizierten Sessions.

Er zeigte uns Funktionen die insbesondere für Redakteure einen ähnlichen Sprung darstellen wie von Drupal 6 auf 7 out-of-the-box. Es soll komfortables In-Line-Editing im Frontend geben, die Node-Editieransicht wurde erneut aufgeräumt und es soll eine Viewport Preview geben, die dem Editor erlaubt direkt ein Preview der Inhalte auf Mobile und Tablet zu sehen. Generell soll im Rahmen der Spark-Initiative Mobile verbessert werden und dies sieht man bereits an den ersten Screenshots des Admin-Backends. Das Publikum war vom Konfigurationsexport in YAML für Deploymentworkflows beeindruckt, es bleibt abzuwarten ob das eine weitere Komponente ist die es zu pflegen gilt oder ob dies mit Features harmonisiert werden kann.

Sessions

Was wir innerhalb der Sessions sahen kann nur einen Bruchteil der heutigen Talks darstellen, da bis zu 8 Tracks parallel staffinden. Glücklicherweise gibt es generell Recordings, so dass man im Nachhinein noch die Talks sehen kann, gegen die man sich entschied. Die Auswahl ist anhand der Beschreibung auch nicht immer leicht, da oft die Einstufung Novice/Intermediate/Advanced sehr unterschiedlich zum Thema gewichtet ist.

Die Sessions die wir sahen waren jedoch generell kompetent und interessant. Auch an Sessions wo für uns generell keine grundlegend neuen Techniken gezeigt wurden wie bei Caching, Security und Debugging war es trotzdem sehr hilfreich einen Expertenüberblick und eine Expertenbewertung zu erhalten, um besser einschätzen zu können in welchen Bereichen es sich lohnt Energie zu investieren und sich zu verbessern. Wir haben aber auch interessante und für uns neue Ansätze entdeckt wie Functional Programming in PHP. Kurzum, wir freuen uns auf Tag 2 und Tag 3.

Komplexe Deployments mit Drupal

Ein Stichwort das man immer wieder hört wenn es um Drupal geht ist «Community». Das liegt einerseits am zugrundeliegenden Kern, welcher mit Rechte- und Nutzerverwaltung, Tagging sowie Kommentarintegration von Haus aus viel mitbringt, was man für Auftritte mit Community-Fokus benötigt. Es liegt auch an den zahlreichen Modulen der Drupal-Community, welche die jeweiligen interaktiven Individualfunktionen bereitstellen. Spannend wird es nun, wenn neue Funktionen im laufenden Betrieb dazukommen.

Ausgangslage

Drupal pflegt sehr viel seiner Konfiguration in der Datenbank. Dies bedeutet prinzipiell, dass man entweder Dateien und Datenbank bei grösseren Funktionsänderungen komplett ersetzt oder die Datenbank erhält und alle Änderungen im Backend händisch auf der Live-Instanz nachträgt. Das händische Nachtragen ist bei grösseren Änderungen keine realistische Lösung, selbst wenn die Fenster für Downtime gross genug sind, allein schon aufgrund der Fehleranfälligkeit. Bei einer Seite mit viel User Generated Content scheidet das Ersetzen der Datenbank fast immer aus, wenn man nicht SQL-Tabellen per Hand zusammenführen möchte.

Features

Das Modul Features hat sich dabei in unserer Projekterfahrung als unverzichtbar erwiesen, um solche Deployments mit Drupal zu lösen. Ganz allgemein nimmt es Datenstrukturen wie Inhaltstypen, Felder, Menüs aber auch allgemeine Konfigurationen wie Berechtigungen aus der Datenbank und gibt diese in Form eines Moduls aus. Somit sind diese portabel und können durch das Aktivieren des erstellten Moduls deployed werden  (siehe auch Bundling site settings using Features). Die Versionierung hilft zudem dabei Veränderungen des Features einzustufen (z.B. direkte Übersteuerung gegenüber einer Überprüfung). Features zeigt dabei auch den jeweiligen Unterschied der Datenbank zur Codebasis in einem einfach zu bedienenden Frontend, was das Sichten von Abweichungen erleichtert.

Kurzum, es schafft Vertrauen, dass Einstellungen und Datenstrukturen so sind wie definiert, ohne dass man auf jedem System jede Administrationsseite individuell kontrollieren muss. Änderungen werden sofort sichtbar und können entweder durch erneuten Export in den Code integriert werden oder bei einem Anwenderfehler auch problemlos wieder rückgängig gemacht werden.

Es unterstützt aber auch bei der Entwicklung, da es die unabhängige Entwicklung von Funktionen ermöglicht, ohne dass auf dem gleichen Entwicklungssystem gearbeitet werden muss oder eine Datenbank geteilt werden muss. In Verknüpfung mit Gits intelligentem Fast-Forward-Merging lässt sich so ein sauberes und nachvollziehbares Commit- und Merge-Protokoll erreichen, welches funktionalen Code inklusive der benötigten Konfigurationsparameter enthält.

Content?

Wo die Drupalwelt hinter gewissen Enterprise-Systemen weiterhin zurückbleibt ist die Portabilität von Inhalten. Mit den oben beschriebenen Möglichkeiten lässt sich die Struktur von Inhalten ideal transferieren, der jeweilige Inhalt ist aber nicht ohne grössere Umstände von einer Instanz auf die andere gebracht, ohne dass die Datenbank ersetzt wird. Es verbleiben einem hierbei folgende stabile Möglichkeiten (mit denen wir gute Erfahrungen gemacht haben):

  • Export und Import von einzelnen Nodes: Besonders hilfreich bei komplexen Inhalten, wie einem Webform-Formular, das nicht mehrfach erfasst werden soll. Die Ausgabe des Exporters lässt sich wiederum auch in das VCS überführen und sichert somit die Transparenz der aktuellen Fassung.
  • Export und Import von Taxonomien: Der Transfer von Taxonomien mit Hilfe von Taxonomy CSV sollte für die meisten Szenarien ausreichen. Übersetzungen in Verbindung mit Hierarchie können etwas Handarbeit benötigen.
  • Einlesen von strukturieren Inhalten: Mit Feeds lassen sich Quellen wie CVS und XML mit moderaten Aufwand einmalig oder automatisch in Drupal als Inhalte einlesen, welche danach wie andere Inhalte weiterverwendet werden können. Wenn Inhalte in solchen Formaten zur Verfügung gestellt werden können, ist dies eine ideale Alternative zur Beschäftigung eines Content-Migration-Teams.

 

Drupal 7 Release

Endlich ist es soweit, Drupal 7 ist „fertig„. Nach dem Ausprobieren der Release Candidates wollte man schon gar nicht mehr zurück auf Drupal 6 und nun kann man die neuen Funktionen und Verbesserung auch guten Gewissens nutzen.

Es lassen sich allein schon über die technischen Verbesserungen der Kernfunktion zahlreiche Blog-Posts füllen aber das was einem Administrator in den ersten Minuten auffällt ist, dass Usability ernst genommen wurde.

2889-d7-pageadd-thumb-500x443-2888.png

Der Screenshot zeigt das Erstellen einer Seite im neuen Overlay-Backend und man merkt deutlich, dass die Prinzipien des D7UX-Projekts einem die Arbeit erleichtern und die Funktionen ansprechend aussehen lassen. Es sind besonders die kleinen Details wie ein ansprechender Abbrechen Button oder passendere Menünamen, welche die Arbeit für den Redakteur oder Administrator angenehmer machen. Kein Vergleich zu dem in die Jahre gekommenen Garland.

Wer das Open Source CMS Drupal bereits kennt der weiss, dass der Drupal Core, welcher nun in Version 7.0 vorliegt, nicht für eine Drupal-Umsetzung genügt. Es ist das Ökosystem von hunderten, ausgereiften Modulen, welches Drupal so vielseitig macht und die berechtigte Frage ist: Muss ich auf alles was nicht Core ist warten?

Die Antwort ist glücklicherweise meist nicht, denn das D7CX-Gelöbnis hat die Mehrheit der Entwickler von Top-Modulen überzeugt, stabile Versionen Ihrer Module zum Drupal-7-Release fertigzustellen. Sicherlich werden viele kleinere Module auch noch einige Zeit benötigen bis eine stabile Version verfügbar ist. In den meisten Fällen kann man aber jetzt mit Drupal 7 starten.