Zur technischen Umsetzung von LiquidFeedback 

news :: 2010
by Jan Behrens on January 06, 2010 Only available in German

Die LiquidFeedback Implementation gliedert sich in zwei Teile: Den LiquidFeedback Kern (Core) und das LiquidFeedback Frontend. Die Speicherstruktur aller Daten sowie die Stimmenauszählung unter Berücksichtigung vorhandener Delegationen und das Überführen der Themen und Initiativen in die verschiedenen Antragsstadien ist Teil des Kerns. Die gesamte Bedienoberfläche einschließlich Benutzerauthentifizierung ist Teil des Frontends.

Da grafische Benutzeroberflächen oftmals von vielen Softwarebibliotheken bzw. einem Framework abhängig sind, und diese Abhängigkeiten potentielle Fehlerquellen darstellen, haben wir uns als Entwickler dafür entschieden die Kernfunktionen möglichst unabhängig und plattformübergreifend zu implementieren. Wir glauben, dass uns dies durch die Wahl von PostgreSQL als technische Plattform für den LiquidFeedback Kern gelungen ist. PostgreSQL ist nicht nur eine äußerst verbreitete OpenSource-Datenbank, sondern bietet darüber hinaus umfangreiche Möglichkeiten prozedurale Abläufe mittels Funktionen und Triggern direkt auf dem Datenbankserver auszuführen. Die hierfür in PostgreSQL enthaltene Programmiersprache PL/pgSQL ist angelehnt an die Sprache PL/SQL der bekannten Datenbank Oracle, und trotz einiger “Pitfalls” bei vorhandenen Erfahrungen mit SQL vergleichsweise leicht zu erlernen. Die derzeitige Version des Kernes umfasst weniger als 3000 Zeilen Programmcode.

Die Implementierung der Kernfunktionen in PostgreSQL bietet einen weiteren Vorteil: Es ist möglich in praktisch jeder Sprache Frontends, Schnittstellen oder andere Dienstprogramme zu entwickeln. Es gibt keine Bindung an eine konkrete Sprache oder ein konkretes Framework, da ein Zugriff auf eine SQL-Datenbank in praktisch jeder Sprache möglich ist.

Das LiquidFeedback-Frontend ist in der Programmiersprache Lua geschrieben, die vor allem im Computerspielebereich eine hohe Verbreitung als Scriptsprache hat (siehe Wikipedia). Im gleichen Team, mit dem ich LiquidFeedback programmiert habe, erarbeiteten wir vor einiger Zeit motiviert durch die Erfahrungen mit Ruby on Rails ein eigenes auf Lua basierendes Web-Applikations-Framework, welches wir WebMCP nannten. Dieses steht genau wie LiquidFeedback der Öffentlichkeit unter einer MIT-Lizenz zur Verfügung. Auf Basis dieses Frameworks entstand innerhalb weniger Wochen die erste LiquidFeedback Bedienoberfläche.

Die Wahl der Programmiersprache für das Frontend ist zugegebenermaßen etwas außergewöhnlich - sie ermöglichte uns aber im Zusammenspiel mit dem Web-Entwicklungs-Framework ein hocheffizientes Arbeiten, so dass wir schon nach wenigen Wochen ein zum Kern passendes Frontend präsentieren konnten. Da, wie oben erläutert, fast aus allen Programmiersprachen heraus ein Zugriff auf PostgreSQL möglich ist, kann jeder, der alternative Bedienoberflächen, APIs oder Auswertungsprogramme schreiben möchte, eine Programmiersprache der eigenen Wahl verwenden.

Zukünftige LiquidFeedback-Erweiterungen anderer Entwickler verlinken wir gerne auf unserer Projektseite. Damit Änderungen in die offizielle Codebasis aufgenommen werden können, benötigen wir allerdings, wie bei größeren OpenSource-Projekten üblich, eine schriftliche Erklärung, dass wir die beigetragenen Programmzeilen der Öffentlichkeit zur Verfügung stellen dürfen. Dies ist nötig, damit zu einem späteren Zeitpunkt kein Urheber den Nutzern der Software das Verwenden untersagen kann.

LiquidFeedback wurde von einem Team entwickelt, dessen Mitglieder sich persönlich kennen und gut miteinander zusammenarbeiten können. Anders wäre eine solche Entwicklung gar nicht in so kurzer Zeit möglich gewesen. Unter allen beteiligten Entwicklern herrschte Konsens darüber, dass eine Software wie LiquidFeedback unbedingt unter einer freien Lizenz wie der MIT-Lizenz veröffentlicht werden muss, damit es prinzipiell jedem freisteht, die Software anzupassen oder weiterzuentwickeln, ohne hierbei einen rechtlichen Graubereich betreten zu müssen. Als Entwickler arbeiten wir grundsätzlich frei und unabhängig, und wir werden selbst entscheiden, welche Anregungen oder konkreten Patches wir in die Software aufnehmen. Nicht nur die Piratenpartei, sondern auch andere Organisationen, sollen von LiquidFeedback profitieren können. Durch die Wahl der Lizenz steht es jeder Partei oder Organisation frei, selbst Anpassungen an der Software vorzunehmen.