Wie sich das Grundgesetz in 70 Jahren verändert hat

Unsere Verfassung feiert runden Geburtstag – wie stark der Text seit 1949 umgeschrieben wurde, habe ich in einem Projekt recherchiert.

Rund 70 000 Zeichen hatte das Grundgesetz im Jahr 1949. Heute sind es deutlich mehr, denn in insgesamt 63 Änderungen wurde viel gestrichen und vor allem hinzugefügt.

In der SZ haben wir zum Verfassungsjubiläum eine Sonderbeilage gemacht. Darin war auch eine Seite voller Grafiken. Unsere Idee dafür: Können wir zeigen, wie sehr sich das Gesetz von heute und das Gesetz von damals unterscheiden?

Ein CCC-Projekt will das Grundgesetz versionieren

Ein bisschen Glück hatten wir in diesem Fall, denn die Daten waren schon zum großen Teil da. Ein Projekt des chaospott in Essen hat vor einigen Jahren versucht, das Grundgesetz versionierbar zu machen – also jede Änderung im Text nachvollziehbar zu speichern. Ähnlich wie Computercode (aus der Richtung kommen die chaospott-Leute auch).

Für das Projekt haben sie extra die Software DocPatch geschrieben (hier auf Github). Die sorgt dafür, dass aus den einzelnen Dateien, die jede Änderung im Text beschreiben (sogenannte Patches) am Ende wieder ein kompletter Text wird – und sogar in verschiedenen Ausgabeformaten ausgegeben werden kann (zum Beispiel in PDF, Word, Markdown, Plaintext).

Mit dem Versionskontrolltool quilt tracken die Leute vom chaospott jede Änderung, die eine neue Version des Grundgesetzes enthält. Und das kann auf einmal gleich mehrere Artikel betreffen. Sie spielen quasi jede Version einmal durch, damit quilt weiß, was es für eine bestimmte Version verändern muss.

Auf einem Githubrepository werden dann alle Versionen Patches gespeichert, die geben an, was vom ursprünglichen Text verändert werden muss, damit der jeweilige Text rauskommt. Der Vorteil: DocPatch kann ganz einfach auch andere Versionen als die aktuelle ausgeben.

So sieht ein solcher Patch aus:

Die Zeilen mit + und - geben jeweils an, welcher Text hinzugefügt oder entfernt werden soll. Der Ausschnitt bezieht sich auf 013.md – also Artikel 13. md ist der Dateiname für Markdown-Dateien. Die lassen sich sehr einfach in andere Dateiformate umwandeln.

Die Daten waren da – und dann?

Wir hatten also eine gute Datengrundlage für die jeweiligen Versionen des Grundgesetzes – aber wie konnten wir zwei Versionen vergleichen? Dafür habe ich die Software wdiff genutzt.

Anders als die Patches, die versuchen, möglichst große Bereiche zu finden, die sich unterscheiden, vergleicht wdiff auf einer Wort-zu-Wort-Basis. Ist ein Wort, oder nur ein Buchstabe anders, wird die Änderung ausgegeben. Der Vorteil: wdiff gibt den kompletten Text aus, markiert aber, was eingefügt und was gelöscht wurde. Hier am Beispiel einer kleinen Änderung in Artikel 1 Abs. 3:

In R mussten wir also nur noch für jeden Artikel die Zeichen zwischen [--] und {++} zählen – und kamen so auf die Gesetzesteile, die verändert wurden.

Der R-Code für diese Zählung sieht kompliziert aus. Aber hauptsächlich, weil man mit sogenanntem RegEx (Regular Expressions) die Texte zwischen den Klammern extrahieren muss. nchar() berechnet die Zahl der einzelnen Zeichen. Und aus denen kann man hinterher ganz einfach einen Anteil berechnen.

Das klingt eigentlich ganz einfach. Trotzdem hat das Projekt mehrere Wochen gedauert. Denn zuerst wollte ich jeweils den kompletten Grundgesetztext vergleichen. Das hat überhaupt nicht funktioniert, weil wdiff immer ein Problem damit hatte, wenn neue Artikel eingefügt wurden (also alles mit Kleinbuchstaben: 16a, etc.). Die Lösung war relativ einfach: Immer nur einzelne Artikel vergleichen. In quilt lassen sich diese neuen Artikel auch anlegen, sie werden aber bei der Ausgabe von früheren Versionen des Grundgesetzes nicht mit angezeigt, wenn sie damals noch nicht drinstanden. Ziemlich cooles Tool.

Das Ergebnis fand in der Zeitung auf einer Grafikseite statt – und kann sich sehen lassen, finde ich: