# LiquidFeedback

LiquidFeedback (abbreviato in LQFB) è un software studiato per raccogliere opinioni condivise all'interno di una comunità, secondo i principi della democrazia liquida; quest'ultima include contemporaneamente i concetti di democrazia rappresentativa e democrazia diretta.
Il software si ripropone di creare una rappresentazione accurata delle opinioni espresse dai membri della comunità, senza che sia alterata da gerarchie sociali e dalle disparità di conoscenze nei partecipanti. Ogni individuo è incoraggiato a promuovere le sue iniziative, e il software è ampiamente configurabile per aderire alle richieste di leggi e statuti associativi.
LiquidFeedback è inoltre volto a superare le limitazioni dei tradizionali forum internet, in particolare quelle concernenti la raccolta delle opinioni di gruppi di persone, anche di notevoli dimensioni (come partiti, associazioni, club o gruppi vari), in modo sicuro e ordinato.

## Caratteristiche

LiquidFeedback si è nel tempo sviluppata come piattaforma software completa per la verbalizzazione delle opinioni all'interno di una comunità. Infatti si occupa di:
* raccogliere iniziative/proposte dei membri e presentarle in maniera ordinata alla comunità;
* promuovere l'emendamento delle proposte presentate;
* promuovere e condividere proposte alternative;
* gestire la votazione delle iniziative/proposte;
* gestire lo storico di tutte le attività;
* gestire il sistema di deleghe.

### Sistema di deliberazione

LiquidFeedback integra un sistema di deliberazione di iniziative/proposte ("initiative") che ricalca il sistema di deliberazione legislativo delle tradizionali democrazie parlamentari: le iniziative, una volta proposte, subiscono degli iter ("policy") di approvazione, che le portano, come fase finale, alla loro votazione da parte di tutti i membri della comunità che lo desiderino.
Normalmente sono previsti diversi tipi di iter d'approvazione, che variano per durata, consistenza dei quorum e maggioranza necessaria per l'approvazione. Solitamente per decisioni non impegnative o vincolanti vengono utilizzati iter con policy (durata) breve, mentre per questioni importanti sarebbe opportuno scegliere in fase di creazione delle iniziative una tempistica consistente e prevedere dei quorum adeguati.
In LiquidFeedback gli iter presentano una struttura fissa, comprendente 4 fasi, corrispondenti ad altrettanti "stati" dell'iniziativa:
* "nuova", fase (usualmente breve) in cui la proposta viene presentata alla comunità e da questa viene valutata se interessate e passibile di approfondimento;
* "in discussione", fase (usualmente più lunga della precedente) in cui la proposta viene discussa dalla comunità, si suggeriscono modifiche o si fanno proposte alternative;
* "congelata", fase in cui la proposta è bloccata (non modificabile), in cui la comunità può valutarla "a bocce ferme," eventualmente presentando iniziative alternative non dibattibili;
* "in votazione", fase in cui i membri della comunità hanno il tempo per votare la proposta.
Il passaggio di una issue dalla fase "nuovo" a quella "discussione" è vincolato al superamento di un determinato quorum di interesse per la tematica ("issue", insieme di iniziative alternative). Alla fine della fase di "congelamento," invece, saranno solo le iniziative con un determinato sostegno minimo a finire sulla scheda per essere votate dagli utenti.
Un'altra particolarità degli iter di LQFB è che, una volta scelta la policy, i tempi sono contingentati: le fasi hanno tempi fissi e le proposte terminano con una votazione entro una data certa (sempre che non sia stata abortita durante l'iter per mancanza di supporto).

### Promozione di iniziative condivise

LiquidFeedback è stato sviluppato per promuovere iniziative/proposte condivise. Il sistema di delibera di per sé permette di condividere opinioni e iniziative, per alcuni ovvi aspetti:
* la pubblicazione di proposte su quella che, in un certo senso, è una "bacheca delle idee";
* la necessità, da parte dei promotori, di raccogliere il "sostegno" dei componenti della comunità;
* la delibera tramite il voto universale.
I progettisti del software hanno inoltre implementato una serie di tool per promuovere la partecipazione dei membri della comunità:
* delle barre grafiche che visualizzano il grado di sostegno che la comunità ha nel confronto delle singole iniziative (evidenziando la prossimità al raggiungimento di eventuali quorum);
* condivisione con altri membri della comunità la stesura della proposta (coautori);
* pubblicazione di suggerimenti alle singole iniziative (evidenziando con barre grafiche il sostegno della comunità ai singoli suggerimenti);
* possibilità di collegare ad una iniziativa, proposte di altri membri (sia in alternativa, che come complemento);
* possibilità di collegare ad una iniziativa topic di forum esterni (da usarsi come spazio di discussione);
* disponibilità di una pagina editabile ("PAD", simile alla pagina di "discussione" di una voce di Wikipedia) dove cercare una stesura cooperativa delle iniziative, o da usarsi come spazio di discussione.

### Struttura a bacheca

Si è accennato che tutte le iniziative/proposte, in qualunque stato siano, sono organizzate all'interno di una grossa "bacheca". Questa "bacheca" è divisa in varie aree per permettere di ordinare all'interno le iniziative a seconda della tipologia/argomento e facilitarne la ricerca; la strutturazione è simile a quelle delle directory e delle sottodirectory.
Il primo livello di divisione sono le "unità". Queste possono essere settate in modo da dare agli utenti della piattaforma accesso selettivo. Questa particolarità è utile quando una stessa piattaforma LQFB gestisce diverse comunità; esempio: una piattaforma gestisce sia la comunità del Comune X, che la comunità del Comune Y, solo i residenti del Comune X possono accedere all'unità del Comune X, mentre sono preclusi dall'accesso all'unità del Comune Y. Quando una piattaforma è usata da una sola comunità, questo livello non viene implementato.
Nel secondo livello di divisione sono definite le "aree" propriamente dette, generalmente divise per tematiche (es. Economia, Ambiente, Tempo libero,...). Anche queste possono essere settate in modo selettivo, in modo da dare agli utenti opzioni di lavoro differenti. Questa particolarità è utile quando la piattaforma gestisce aree comuni per tutti i membri, assieme ad aree riservate a gruppi di lavoro (es. quella destinata agli amministratori di sistema).
Le aree a loro volta sono suddivise in "sezioni", dove le iniziative sono raccolte per argomento.

### Democrazia delegativa

La caratteristica più rappresentativa di LiquidFeedback è l'implementazione di un sistema di voto delegato (vedi democrazia delegativa), che prende in considerazione la disparità di conoscenza dei suoi partecipanti. Durante la fase di definizione delle "regole" (policy) può essere impedita la possibilità di delega.
La funzione di voto di delega crea strutture di potere simili a quelle di una democrazia rappresentativa, anche se le deleghe possono essere ritirate in qualsiasi momento. Ciò è necessario per produrre risultati che riflettono lo stato d'animo della maggioranza, anche quando non si trova il tempo di partecipare in prima persona, al fine di evitare quello che è stato chiamato il dominio degli "attiversi", che è il problema che si pone regolarmente con forme di democrazia diretta.
Il meccanismo prevede che, per ogni area, sezione, o proposta, sia possibile delegare il proprio voto (e quello di altre deleghe eventualmente ricevute) ad una persona di fiducia che faccia parte della comunità. Il voto (sempre palese) e la visualizzazione della catena di deleghe garantisce la trasparenza del voto.

### Votazione a preferenza

Un'altra caratteristica importante di LiquidFeedback è l'implementazione di un sistema di voto preferenziale che si basa sul Metodo Schulze. Il metodo evidenzia tre caratteristiche fondamentali:
* esprime un grado di "preferenza" verso una proposta;
* (legato al punto precedente) è in grado di trattare con un unico voto diverse proposte, concorrenziali o complementari;
* (legato al punto precedente) si possono approvare contemporaneamente più proposte.
Finché si tratta di votare una singola iniziativa, il metodo non presenta evidenti differenze con quelli tradizionali: si esprime approvazione (Sì), astensione (astenuto) o disapprovazione (NO). Ma quando si tratta di votare due o più proposte (A e B) sullo stesso argomento, le cose cambiano. Con i metodi tradizionali sono necessarie due votazioni (prima votare A e poi votare B), mentre, con il Metodo Schulze si può votare contemporaneamente:
* astensione su A e B;
* approvazione sia di A che B;
* disapprovazione sia di A che B;
* A approvo, B disapprovo;
* A approvo, B astensione;
* A approvo, ma B meglio di A;
* A disapprovo, ma B peggio di A;
* ...e combinazioni.
Il metodo stila una classifica in base alle proposte che meglio soddisfano la maggioranza dei votanti. I risultati possono essere:
* A e B disapprovate;
* A approvata, B disapprovata;
* A e B ugualmente approvate;
* A e B approvate, ma A è meglio di B (A vince B).

### Trasparenza

Le comunità che hanno attualmente implementato LQFB, lo hanno fatto secondo principi di grandissima trasparenza interna: tutti i membri della comunità possono conoscere le attività degli altri membri.
Questo risultato è stato ottenuto grazie a tre particolarità:
* tutte le votazioni sono a voto palese: a termine votazione, oltre l'esito, è possibile visualizzare chi sono gli elettori e come ognuno ha votato;
* le deleghe sono pubbliche: in questo modo è possibile conoscere se vi sono concentrazioni di potere (o semplici movimenti interni) e chi ne sono membri;
* dalla pagina di profilo degli utenti è possibile visualizzare tutte le iniziative da questi create o a cui hanno partecipato; poi, all'interno delle singole iniziative, sono visibili i contributi di tutti (firmati).
Sulla trasparenza vanno precisati, però, due aspetti:
* non tutte le comunità permettono a esterni (non registrati) di visualizzare l'attività promossa nella loro piattaforma (non-trasparenza esterna);
* alcune comunità garantiscono una forma di anonimato formale, permettendo la registrazione su LQFB sotto pseudonimo (nickname).

### Punti deboli

LiquidFeedback non è esente da critiche, se ne accennano alcune:
* LQFB nasce e ha come punto forte il sistema di delibera, non integra funzioni "social", ormai molto importanti per lo sviluppo e la coesione delle comunità;
* seppur strutturato, con l'affollarsi delle deliberazioni è necessario un pesante lavoro di screening di tutte le deliberazioni approvate, per individuare quelle sostituite, obsolete, modificate o conflittuali;
* il "supporto" e il voto palese potrebbe essere insidioso, in quanto i membri della comunità potrebbero essere messi sotto pressione per le loro opinioni;
* il meccanismo delle deleghe potrebbe portare alla formazione di "leader" che concentrino su di loro molto potere, anche se il sistema di delega può essere disabilitato.

## Descrizione operativa

All'utente/utilizzatore, LiquidFeedback appare come un portale, visualizzabile da un browser, tramite dei normali servizi internet o intranet. L'utente deve effettuare un login di ingresso, che permette al sistema di identificarlo come membro della comunità e farlo accedere alle aree di lavoro.

### Home

La pagina principale (Home) presenta tre zone:
* una barra (in alto) con la funzione "cerca" e l'accesso alle opzioni di gestione dell'account;
* una con dei pulsanti predefiniti (filtraggi predefiniti su issue e aree, accesso area membri, ecc...);
* un'ampia bacheca con l'elenco delle varie aree.

### Bacheca aree e sezioni

Cliccando su un'area si entra in essa, facendo apparire l'elenco delle sezioni. Ogni sezione evidenzia il numero di iniziative che contiene e in che stato sono. Sono presenti pulsanti per dichiarare il proprio interesse alla sezione, delegare il voto (di tutte le iniziative della sezione) e creare una nuova iniziativa.
A questo punto si può entrare nella sezione per visualizzare l'elenco delle iniziative. Queste possono essere richiamate per visualizzarne il testo, lo "stato", i contributi e l'esito del loro iter e delle votazioni.
Ogni membro della comunità può promuovere una nuova iniziativa/proposta: per far ciò basta cliccare sull'opzione "Crea nuova iniziativa", e apparirà una form dove inserire titolo, testo, policy e collegamenti URL a documenti o forum di riferimento.
A seconda dello "stato" di una issue, tutti i membri della comunità possono interagire con essa, contribuendo secondo le loro capacità, competenze e opinioni. Quando una proposta è "in discussione", i membri della comunità possono interagire con i proponenti per suggerire modifiche, proporre alternative o semplicemente discutere sull'argomento. Quando una iniziativa è "congelata", chi è interessato può leggere con calma quanto proposto, sapendo che quello sarà il testo definitivo su cui si è chiamati ad esprimersi. Quando una "issue" è "in votazione", gli interessati posso votare la sua approvazione e, nel caso di scelte multiple (diverse iniziative in concorrenza) stilare la classifica delle preferenze.
Comunque, quando si accede alla piattaforma, una finestra avverte i membri quando delle iniziative (a cui ci si è interessati) sono entrate nella fase di votazione.
Al termine del periodo di votazione, il sistema calcola automaticamente le preferenze (secondo il Metodo Schulze), e termina l'iter dell'iniziativa presentando e conservando il risultato delle votazioni.

### Pulsanti principali

LiquidFeedback presenta 5 pulsanti principali:
* Home, permette di tornare alla pagina principale della piattaforma, con l'elenco delle aree, e da qui, esplorare aree e sezioni secondo i propri interessi;
* Ultimi eventi, visualizza cronologicamente (a partire dal più recente) gli "eventi", ovvero: pubblicazione di nuove proposte (anche alternative) o suggerimenti, passaggi di stato delle iniziative (nuova-> discussione-> congelata-> votazione) e conclusione delle issue (con l'esito);
* Ultime proposte, visualizza cronologicamente solo le ultime iniziative e relativi passaggi di stato (nuova-> discussione-> congelata-> votazione);
* Proposte chiuse, visualizza cronologicamente (a partire dalla più recente) solo le proposte che hanno concluso l'iter, evidenziandone l'esito;
* Utenti, permette di entrare nell'area che raccoglie i profili dei membri della comunità, per consultare profili e attività, oppure contattarli.
Contestualmente, possono apparire altri pulsanti a seconda di dove ci si trovi nella piattaforma.
Normalmente vengono visualizzate aree, sezioni e issue su cui l'utente ha dichiarato interesse, oppure ha partecipato in qualche maniera (es. proponendo o suggerendo qualcosa); utilizzando i pulsanti contestuali a disposizione, si può visualizzare tutta l'attività della bacheca, o filtrarne il contenuto secondo i propri interessi.

### Deleghe

Si è accennato alla possibilità di delegare; l'operazione può essere fatta in qualsiasi momento:
* per area/sezione, andando a cliccare l'opzione "Delega unità" presso il nome della sezione;
* per la singola proposta, andando a cliccare l'opzione "Delega iniziativa" sotto il titolo dell'issue.
Il delegato viene scelto tra i "Contatti" (una rubrica interna di LQFB), tra cui, in precedenza, si era caricato la persona di fiducia.
Altrettanto immediato è il ritiro o la sostituzione della delega: si clicca "Cambia delega" posizionata nella stessa collocazione della precedente.

### Altro

La piattaforma LiquidFeedback rende inoltre disponibile opzioni per:
* la gestione di suggerimenti o proposte alternative;
* la promozione di discussioni sulle iniziative.

## Storia

LiquidFeedback è stato sviluppato nel mese di ottobre del 2009 da alcuni membri del Partito Pirata tedesco insoddisfatti con i mezzi convenzionali di formazione dell'opinione politica, formando il Public Software Group. Dopo di ciò hanno lasciato il partito per evitare conflitti di interesse. Gli sviluppatori sono indipendenti e permettono l'utilizzo del software da parte di altre organizzazioni. La prima versione stabile del backend è stata rilasciata ad aprile del 2010.
Il software è stato utilizzato con successo da parte del Partito Pirata in Germania, Austria, Italia, Svizzera e Brasile. In Germania è utilizzato anche da Slow Food. In Italia è utilizzato anche da alcune liste civiche del Movimento 5 Stelle, dove è stato introdotto in particolare dal Movimento5 stelle di Bergamo. È stato utilizzato durante le elezioni regionali siciliane del 2012, per la stesura del programma del candidato presidente Giancarlo Cancelleri (sostenuto dal Movimento 5 Stelle), esempio seguito dal Movimento 5 Stelle di altre regioni, come ad esempio in Lombardia. Sempre in Sicilia nel 2012 è stato utilizzato per la definizione del programma della lista Libera Sicilia, coalizione di Sinistra Ecologia e Libertà, Rifondazione Comunista e Verdi a sostegno della candidatura alla presidenza della Regione di Claudio Fava. In Lombardia, è stato usato dal candidato presidente Umberto Ambrosoli per raccogliere proposte per il Programma di Mandato.
Recentemente seguono esempi più significativi in termini numerici. Nell'ottobre 2012 la trasmissione televisiva Servizio pubblico, condotta da Michele Santoro su LA7, attiva un'istanza di LiquidFeedback nella quale i telespettatori vengono invitati a contribuire nella creazione di un programma politico costruito dal basso. Nel giugno 2013 viene realizzato e promosso dalla senatrice Laura Puppato un sito denominato TuParlamento, basato su OpenDCN ed appunto Liquid Feedback, con lo scopo di sperimentare la partecipazione diretta dei cittadini.
Nel 2013 su iniziativa del gruppo consiliare regionale del Lazio del Movimento 5 Stelle, fu sviluppato un fork di Liquid Feedback con significative innovazioni nella sicurezza e nella usabilità del frontend, rivolto alla scrittura di atti istituzionali, chiamato Parelon Archiviato il 4 aprile 2018 in Internet Archive..
Nel 2016 nell'ambito del progetto WeGovNow finanziato con fondi europei, di cui fa parte l'organizzazione che sviluppa LiquidFeedback, il Comune di Torino ha recentemente implementato un portale istituzionale per facilitare la ricezione di proposte da parte dei cittadini.

## Specifiche tecniche

Il frontend è scritto in Lua, mentre il backend è scritto in PL/pgSQL. Entrambe le parti sono rilasciate sotto licenza MIT.
Allo scopo di creare una piattaforma modulare e aperta a nuove implementazioni, è disponibile una API che consente la creazione di applicazioni esterne per aggiungere ulteriori funzionalità al programma, oppure per collegare apparecchi HW (es. smartphone).