Abgeordnetenwatch.de - Relaunch Drupal 8

Non-Profit

Zusammenfassung

abgeordnetenwatch.de ist der direkte Draht von Bürger:innen zu den Abgeordneten und Kandidierenden. "Bürger:innen fragen - Politiker:innen antworten" ist der Kern des Portals.

Projektbeschreibung

abgeordnetenwatch.de selbst gibt es seit 15 Jahren, Am 01.März 2020 haben wir die neue Version, basierend auf Drupal 8, gelauncht. Bereits vorher lief das Projekt auf Drupal 7.

Projektziele und -ergebnisse

Die Hauptziele, die wir mit dem Relaunch erreichen wollten:

- eine saubere Datenstruktur: statt auf User und Nodes wie bisher zu setzen, werden die meisten Daten nun mit Custom Entity Typen umgesetzt.
- eine einfachere Menüführung, welche die Nutzer:innen einfacher zu der Hauptfunktion der Seite geleitet: Politiker:innen Fragen zu stellen
- die Integration eines Moderationstools: Fragen und Antworten werden bei uns durch ein Team moderiert, wofür bisher ein sehr altes Python-Script verwendet wurde. Das Ziel war es, den benötigten Technologie-Stack zu reduzieren und eine Fehlerquelle - die doppelte Datenhaltung und die Datensynchronisierung - zu minimieren. Dieses Moderationstool ist nun ebenfalls in Drupal 8 umgesetzt

Herausforderungen

- eine Datenstruktur zu konzeptionieren und umzusetzen, welche flexibel genug ist, verschiedene Wahlsysteme und Geschehnisse abzubilden, ohne zu viele Ausnahmen von der Regel einzubauen (Fraktionswechsel, Nachrückermandate) und damit die Pflege und Wartbarkeit zu erschweren
- die alten Daten aus dem Drupal 7 Projekt und dem alten Modtool in diese neue Datenstruktur zu migrieren
- für die verschiedenen Nutzergruppen trotz der Komlexität der Daten eine einfache Oberfläche zu bieten: für Fragesteller:innen, Politiker:innen, Moderator:innen und Mitarbeiter:innen in Datenpflege und Verwaltung

Ersteres wurde mithilfe der Entity API von Drupal 8 sehr gut erreicht. Viele Daten sind referenzierte Entities, welche die Kapselung von Daten und Funktionen ermöglicht. So können für jeden Datentyp separat Daten gepflegt werden und Besonderheiten und Ausnahmen übersichtlich in den Klassen der jeweiligen Entität definiert werden. Zudem konnte auf Hooks in diversen Modulen weitgehend verzichtet werden.

Die Migration wurde mithilfe des Migrate Moduls und eigenen Migrate Plugins umgesetzt. Im Vorfeld des Relaunches wurde diese Migration diverse Male getestet und weiterentwickelt, so dass die Migration am Tag des Relaunches sehr entspannt und fehlerfrei verlief.

Community-Beiträge

Wir haben unser Custom Module von Anfang an so konzeptioniert und programmiert, dass wir diese als Open Source auf drupal.org veröffentlichen können. Bevor wir das tun, möchten wir den Code noch etwas aufräumen und einige Funktionalitäten etwas besser programmieren, damit sie für andere Projekte konfigurierbar werden. Da wir nur ein kleines Entwicklerteam sind, stand nun zu erst der Fokus auf den erfolgreichen Abschluss des Relaunches. In Kürze werden wir die gesamte Funktionalität in separaten Modulen zur Verfügung stellen.

Warum sollte dieses Projekt die Splash Awards gewinnen?

Mit einem sehr kleinen Team (1 leitender Entwickler bei abgeordnetenwatch.de, 1 Freelancer Backend und 1 Freelancer Frontend) haben wir ein sehr komplexes Projekt auf die Beine gestellt. Wir haben gezeigt, wie man durch die Verwendung der Drupal APIs (insbesondere die Entity API) sehr komplexe und individuelle Projekte umsetzen kann, ohne in einem Wald von Spaghetti-Code und Hooks unterzugehen.