lunedì 18 febbraio 2013

Sugli Open Data e le elezioni

Discutendo con un amico che si trova all'estero mi sono dato ad un esperimento mentale molto divertente, ovvero una analisi sul programma elettorale dei vari partiti. In che senso? Partiamo dalle premesse.

Nel mondo del software un programma è un elenco di operazioni che portano da un set di dati iniziali ad un risultato prevedibile. Uno dei sistemi di sviluppo utilizzati negli ultimi tempi si chiama Test Driven Development, ovvero Sviluppo guidato dai test. Ad ogni fase di sviluppo si fanno i test per vedere che le cose vadano come previsto. Il risultato di questo sistema è che di fatto in ogni momento si sa quanto manchi alla conclusione delle operazioni, si sa quali parti non sono completate, non sono finite, non sono ancora state risolte.

Qui entra in gioco la domanda a tradimento: cos'è un programma elettorale? E' ciò che il partito X propone di fare con il paese Y qualora diventasse maggioranza. Quindi è una sequenza di operazioni da svolgere su un certo sistema complesso ma ben definito. Quindi perchè non definire i programmi elettorali come vere e proprie applicazioni? E perchè non definire gli obiettivi del partito come test?

Ovviamente una piattaforma di simulazione del genere dovrebbe essere completamente open, in quanto ai cittadini si rivolge e dai pesi segnalati dai cittadini deve essere controllata. E open per open, a questo punto entrano in gioco gli Open Data. I vari organi dello stato potrebbero esporre come Open Data tutti i dati necessari per questa simulazione. In questo modo diventerebbe possibile simulare la situazione a distanza di 5 anni dalla partenza.

Per altro, un programma fatto in questo modo permetterebbe di controllare quale situazione possa essere la più o meno vantaggiosa per l'elettore. Immaginando, infatti, un elettore come un vettore n-dimensionale che rappresenti i vari interessi "a livello statale", ovvero fattori come dimensione della famiglia, reddito personale, reddito famigliare, livello di istruzione, persone a carico ecc... e trovando delle regole che consentano di analizzare come la situazione cambierà nei 5 anni successivi, si può vedere quale programma possa dare più vantaggio al singolo e quindi in che modo statisticamente voterà.

"OMG!!! Questo è antidemocratico!!!" No. E' solo oggettivo. Il singolo voterà statisticamente in base a certe caratteristiche personali, come ambiente, livello di istruzione, interazione con le istituzioni, stato civile. E la complessità che tanti millantano esiste statisticamente in tutte le direzioni, quindi diventa ininfluente. "Eh, ma non consideriamo l'astensione". Falso, l'astensione ha un peso importantissimo ma è riconducibile alla distanza da tutti i programmi. Se nessuno dei partiti va a influire direttamente sulle priorità del singolo, questo facilmente non voterà (l'astensionismo è proprio un partito, in quanto ha tutte le caratteristiche dei partiti).

Questa analisi non copre la questione coalizioni. Ovviamente in tal caso la situazione è più complessa, in quanto è necessario trovare la parte "condivisa" fra le varie proposte. Su quelle sicuramente ci sarà convergenza, mentre per quelle non condivise diventano più importanti i piccoli partiti delle varie coalizioni.

In ogni caso i test di risultati consentono di andare a controllare a che punto sta il programma del partito, quanto manca alla realizzazione e quanto complessa risulta.

Ora si tratta solo di definire degli algoritmi che valutino e visualizzino i dati e un linguaggio che consenta di definire un programma elettorale in modo strutturato. Giusto il problema minore... :P