Projekt
LiquidFeedback in drei Minuten
LiquidFeedback ist ein Online-System in das jeder Anträge einstellen kann, mit dem Ziel, diese Anträge von einer Mehrheit beschließen zu lassen. Anträge werden eingebracht, in dem man eine Initiative gründet, die entweder für sich allein stehend ein neues Thema eröffnet, oder eine Konkurrenz zu Initiativen eines bestehenden Themas darstellt.
Damit Anträge für die Abstimmung zugelassen werden, müssen die Initiativen Unterstützerstimmen sammeln. Weil nicht jeder Antrag gleich perfekt ist, bietet das System die Möglichkeit, dass jeder seine potentielle Unterstützung einer Initiative unter Angabe der notwendigen Änderungen am Antragsentwurf mitteilt. Es steht den Initiatoren frei solche Änderungsvorschläge in ihr Konzept einzuarbeiten oder die Änderungswünsche zu ignorieren. Wer ignoriert wird kann natürlich jederzeit eine eigene Initiative gründen.
Themen und damit auch die dazugehörigen Initiativen durchlaufen folgenden Stadien:
- Neu
- in Diskussion
- Eingefroren
- Abstimmung
- Abgeschlossen
Jede Initiative die sich nicht zu einem bestehenden Thema einordnet, erzeugt zunächst ein neues Thema im Status “Neu”. Während ein Thema im Status “Neu” ist, muss innerhalb einer vorgegebenen Frist mindestens eine Initiative einen bestimmten Prozentsatz an potentiellen Unterstützern hinter sich versammeln, damit das Thema in den Zustand “in Diskussion” übergeht und weiter bearbeitet werden kann.
Solange ein Thema “Neu” oder “in Diskussion” ist, dürfen Initiatoren ihre Antragsentwürfe jederzeit ändern, und so versuchen ihre Unterstützerzahlen zu verbessern. Nach Beendigung der Diskussionsphase geht das Thema in den Zustand “Eingefroren” über.
Ist ein Thema eingefroren so dürfen die Initiatoren die von ihnen eingebrachten Anträge nicht mehr modifizieren. Es besteht jedoch während dieser Phase noch die Möglichkeit, die eigene Unterstützung einer Initiative zu entziehen oder Alternativanträge einzubringen, falls ein Initiator gegen Abschluss der Diskussionsphase eine unvertretbare Änderung in seinem Antragsentwurf gemacht hat.
Eine vorgegebene Zeit nach dem Einfrieren des Themas beginnt die “Abstimmung”. Nur jene Anträge werden übernommen, deren Initiativen einen bestimmten Prozentsatz an Unterstützern vorweisen können. Nun kann jeder, der sich eine Meinung zu dem Thema und den dazugehörigen Anträgen gemacht hat, Für- oder Gegenstimmen für diese Anträge abgeben. Es ist weiterhin möglich Anträge in eine Präferenzreihenfolge zu bringen.
Während der Abstimmung werden die abgegebenen Stimmen nicht veröffentlicht, um taktisches Wählen zu verhindern (so wie auch die Ergebnisse von Exit-Polls bei Bundestagswahlen nicht veröffentlicht werden). Nach der Abstimmung werden jedoch alle Daten offengelegt um einer Manipulation vorzubeugen.
Wer an einer Diskussion oder Abstimmung nicht selbst teilnehmen möchte, seine Interessen jedoch trotzdem vertreten wissen möchte, kann sein Stimmgewicht auf eine andere Person übertragen (“Delegated Voting”). Eine solche Vertrauensperson kann dieses gesammelte Stimmgewicht wiederum an eine weitere Person übertragen, usw.
Du kannst Mitglied in einem Themenbereich werden oder Interesse an einem Einzelthema anmelden. Dies bedeutet a) dass du über Themen die sich gerade in der Abstimmung befinden auf der Startseite informiert wirst und b) dass du zur Grundgesamtheit zählst, die für die Ermittlung der zu erreichenden Unterstützerquoren herangezogen wird. Bei Mitgliedschaft in einem Themenbereich oder angemeldetem Interesse an einem Thema kannst du außerdem eine sogenannte “Auto-Ablehnung” vermerken, d.h. verpasst du eine Abstimmung, so wird dies automatisch als Nein-Stimme für alle Anträge gezählt. Du solltest mit dieser Funktion gewissenhaft umgehen, damit du Entscheidungsprozesse nicht unnötig blockierst.
Technik
Die gesamte beschriebene Logik (der Kern) wurde in Form von Datenbankviews und Datenbankprozeduren realisiert. Als Datenbanksystem wurde PostgreSQL gewählt, das unter BSD-Lizenz zur Verfügung steht. Die prozeduralen Komponenten wurden in PL/pgSQL implementiert. Erforderliche Sicherheitsmechanismen (Anmeldung, Sessionmanagement etc.) müssen im Rahmen des Frontends oder einer entsprechenden Schicht umgesetzt werden.
Auf den Kern aufbauend haben wir ein Frontend impementiert. Der Kern kann jedoch auch von anderen Frontends genutzt werden. Hinsichtlich der Programmiersprache für das Frontend gibt es keine Restriktionen, sofern die verwendete Sprache über eine PostgreSQL-Zugriffsbibliothek verfügt. Für die Programmiersprache C liefert PostgreSQL bereits eine Zugriffsschnittstelle unter BSD-Lizenz mit. Für praktisch alle weiteren relevanten Sprachen sind Wrapper-Bibliotheken vorhanden.
Download
- LiquidFeedback Kern (Datenverarbeitungslogik)
- LiquidFeedback Frontend (Bedienoberfläche)
Fehlerberichte
Bekannte Fehler und Verbesserungsvorschläge finden sich in unserem Bugtracker.
Lizenz
Wir stellen die Software der Öffentlichkeit unter der MIT/X11-Lizenz zur Verfügung, da sie den Urhebern und allen zukünftigen Entwicklern sowie Anwendern gleichermaßen maximale Freiheit gewährt.
Diese Lizenz stammt aus dem Massachusetts Institute of Technology und ähnelt der BSD-Lizenz (3-clause modified version) der University of California, Berkeley.
Copyright (c) 2009 Public Software Group e. V., Berlin, Germany
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Anmerkung
Wir haben uns hier wie bei vielen anderen Projekten nicht für die GNU General Public License (GPL) entschieden, da sie die Nutzungsmöglichkeiten – insbesondere die Möglichkeit der Weiterentwicklung und Kombination mit anderer Software – in von uns nicht gewünschter Weise einschränkt.
