Schon seit einiger Zeit schwirrt uns die Idee im Kopf herum, einen Blick hinter die Websites des öffentlichen Sektors zu werfen. Mit unseren Steuergeldern werden unzählige Websites des öffentlichen Sektors eingerichtet und aktualisiert. Aber welche Technologie steckt hinter diesen Websites - Open-Source-Lösungen oder proprietäre Software? Wo werden sie gehostet? Gibt es regionale Unterschiede zwischen den Bundesländern oder Trends, die wir in den Kommunen verfolgen können?
In Q4/23 warf ich diese Projektidee in den "Call for paper" des CloudFest-Hackathons ein. Das Projekt wurde angenommen, und wir reisten mit dem Zug von Berlin zum Europapark Rust, was eine achtstündige Reise ist.
Tim Heide (CEO von versionmanager.io, den wir auf der letzten FrOSCon kennengelernt haben) und Stephan Luckow haben die Position des Teamleiters übernommen.
Die diesjährige Version des CloudFest-Hackathons war die bisher größte, was die Anzahl der Teilnehmer angeht. 11 Projektleiter präsentierten ihre Ideen vor mehr als 150 Teilnehmern, um ein Team von Hackern zu finden, das drei Tage lang an dem Projekt arbeiten sollte. Wir konnten 15 Hacker für unser Projekt begeistern und es gab von Anfang an einen tollen Team-Spirit. Selbstorganisierte Menschen, die bereit waren, ihr Bestes zu geben, um einen Prototyp zu entwickeln und ihn 48 Stunden später einer Jury zu präsentieren. Um fair zu sein: wir haben 3 von ihnen nach dem ersten Tag verloren. Wir hatten keine Gelegenheit, sie zu fragen, warum sie das Team verlassen wollten.
Tag 1
Die erste Hälfte von Tag 1 diente dazu, den Umfang des Projekts zu konkretisieren. Wir erkannten ein großes Problem: Wo kann man die relevanten Domains mit Metadaten sammeln? Welche Art von Website steckt hinter der Domain und wer ist die verantwortliche Stelle?
Wir fanden einige GitHub-Repositories mit Tausenden von Domains aus dem öffentlichen Sektor. Von dort aus kamen wir zu dem Schluss, dass wikidata unsere Quelle der Wahrheit sein sollte. Einige von uns vertieften sich in die wikidata-Dokumentation zur Abfrage des API-Endpunkts und begannen mit der Programmierung eines Skripts zur Automatisierung der Abfragen.
Obwohl wir wussten, dass unser Prototyp am Ende eine Website sein sollte, beschlossen wir, eine Tool-Chain aufzubauen, die die Anforderungen an eine nachhaltige Infrastruktur erfüllt. Wir sahen uns die Apps auf unserer selbst gehosteten App-Plattform an und fanden directus als eine App, die sich im automatischen Update-Prozess unseres Sponsors Cloudron befindet.
Fun fact: Niemand am Tisch hatte Erfahrung mit der Erstellung von Headless-CMS-Projekten vorweisen können.
Fast ein Drittel von uns arbeitete in der Frontend-Entwicklung. Sie entschieden sich für React als unser Frontend-Framework. Die Leute von wikidata query arbeiteten mit einigen anderen Backend-Entwicklern zusammen, um weitere Skripte für die verschiedenen Api-Endpunkte einzurichten.
- wikidata, um die Domains mit Metadaten zu sammeln
- versionmanager, um Informationen über das CMS zu erhalten
- directus, um die Ergebnisse zu speichern.
Die Backend-Entwickler haben sie sich für Python als Hauptsprache entschieden.
Nebenbei: weil sich niemand so recht an den Titel des Projekts (Public Sector Website Funding Transparency project) erinnern konnte, haben wir uns einen eingängigeren Titel ausgedacht.
Willkommen: Follow the money
Am Ende von fast 10 Stunden Hacking hatten wir Spaß mit Pizza, Bier und Achterbahn. Wow, was für ein beeindruckender erster Tag.
Tag 2
Die Sammlung von Domains des öffentlichen Sektors zeigt uns einige Auswirkungen. Wie kann die Qualitätssicherung für mehr als 10.000 Domains durchgeführt werden? Definitiv nicht an einem Wochenende. Daher beschlossen wir, für den Prototyp nur knapp 1.000 Domains aus der Kategorie der Stadt-Websites zu analysieren.
Wir haben sie direkt von wikidata eingesammelt, ihre Metadaten erhalten (welche Stadt gehört zu welchem Bundesland), die Ergebnisse des Versionsmanagers untersucht und eine Feedback-Schleife eingerichtet, um etwa 10 kleine CMS von Unternehmen hinzuzufügen, von denen wir noch nie zuvor gehört hatten.
Gleichzeitig fügte Tim das Lighthouse-Framework zum Versionmanager hinzu. Als Ergebnis können wir nun in unserer Ergebnisliste Metriken zur Barrierefreiheit anzeigen.
Später am Tag haben wir beschlossen, die Versionen der identifizierten CMS nicht im Detail öffentlich zu zeigen. Fast 30 % der analysierten Websites laufen mit veralteter Software und sind potenziell angreifbar.
Während die Ergebnisse verfeinert und geprüft wurden, beschäftigte sich unser Front-End-Team mit Design und Benutzererfahrung. Nach einer kurzen Fragerunde hatten wir plötzlich ein Logo für das Projekt.
Herzlich willkommen:
Tag 3 - der finale Countdown
Wir mussten unsere Ergebnisse vor einer Jury präsentieren. Denken Sie daran: Ein Hackathon ist nicht zum Spaß. Es ist ein Wettbewerb. Wir hatten eine Menge Sponsoren, die die Veranstaltung unterstützten, um Ergebnisse zu erzielen. Und wir wollten sie nicht enttäuschen.
Daher nutzten wir die letzten Stunden vor dem finalen Countdown, um dem Prototyp den letzten Schliff zu geben. Ein kleines Team bereitete die Präsentation vor, während die anderen sich die Endergebnisse ansahen und Anmerkungen machten, um bessere Ergebnisse zu erzielen.
Unsere erste Schlussfolgerung aus den Ergebnissen:
- 70% aller Websites setzen auf FLOSS CMS (großartig)
- Platz 1 der FLOSS CMS geht an TYPO3
- bei fast 30% der FLOSS CMS Websites fehlen Sicherheitsupdates
Dann fanden die Abschlusspräsentationen statt
Logn story short. Von den 6 möglichen Preisen haben wir den wichtigsten gewonnen. Das Dreamteam des Herzens.
Wahnsinn! Was für ein Knaller. Danke an das Team, die Organisatoren und die Sponsoren.
Wie geht es weiter?
Wir haben einen Prototyp. Wir haben ein Repo. Wir wissen, was wir als nächstes tun wollen. Wenn ihr euch dem Projekt "Follow the money" anschließen möchten, hinterlasst einen Ping.
GitHub-Repositorium des Projekts: https://github.com/CMS-Garden/ftm
Öffentliche Website: https://www.follow-the-money.org
Konkrete Aufgaben für die nächste Zeit:
- Aufräumen des Hackathon-Prototyps
- Hinzufügen weiterer Domains
- Überprüfung und Verbesserung der Ergebnisse
- Weitere Kategorien hinzufügen (wir haben fast 20 identifiziert) und sie sichtbar machen
- Fragen stellen und die Ergebnisse analysieren, um Antworten zu geben
- Das Projekt unseren europäischen Freunden anbieten, um FLOSS länderübergreifend zu bewerben
- Der Welt von diesem Projekt erzählen