De corporis iuris administratione
Introduzione
Sorvoliamo per il momento sulla necessità (o meno) dell'esistenza di un codice di leggi (positive) perché una società funzioni; sorvoliamo perché, prima ancora di arrivare ai moderni anarchici, già secoli fa Tacito osservava che
plusque ibi boni mores valent quam alibi bonae leges
e valgono più lì i buoni costumi che altrove le buone leggi
Caius Cornelius Tacitus, De Origine et situ Germanorum
Sorvoliamo anche sulla possibilità che, o meglio sulle condizioni necessarie (e ancor di più su quelle sufficienti) affinché le leggi vengano rispettate; sorvoliamo anche perché sarebbe quasi doloroso parlarne in un contesto dove la legislazione, l'applicazione delle leggi e l'eventuale persecuzione delle violazioni sono da più d'un decennio sottoposte ad immonde manipolazioni per venire incontro agli interessi di un singolo individuo entrato in politica per evitare le conseguenze del proprio mancato rispetto delle leggi.
Vorrei invece prendere in considerazione i processi coinvolti nella formazione e nella modifica di un corpus di leggi, con particolare attenzione ad alcuni aspetti quali la tracciabilità, l'autenticazione e la gestibilità delle modifiche.
Nomic, ovvero del gioco delle regole
Ricordo di aver letto, credo nella pagina di Wutki1 di un Linus di parecchi2 anni fa, di un gioco di cui ho molta vaga memoria, ma che ricordo avere come elemento costitutivo la possibilità di cambiare le regole. Lunghi minuti di ricerche su Internet mi portano a scoprire che il gioco (o se si vuole la famiglia di giochi) prende il nome di Nomic ed ha persino un sito dedicato.
Il Nomic ha un insieme di regole iniziali, alcune mutabili altre immutabili, che stabiliscono modalità e condizioni per la creazione, la modifica e l'abrogazione di regole. Al proprio turno (ci sono regole anche per i turni, ovviamente, e come tutte le regole possono essere modificate) il giocatore propone una nuova regola o la modifica o l'abrogazione di una regola esistente, e prende o perde punti a seconda che la proposta si concretizzi (in una nuova regola o in un emendamento) o che essa venga invece bocciata (dopo eventuali discussioni e proposte di cambiamento). Il gioco termina con un vincitore, deciso secondo opportune regole (anche queste, ovviamente, modificabili).
Per sua natura, il Nomic modella quindi alcuni aspetti fondamentali di ciò che potremmo dichiarare una ‘democrazia ideale’: tutti i giocatori possono proporre, tutti i giocatori devono votare sulle proposte, etc. In quanto tale, il Nomic è un'ottima piattaforma su cui sperimentare in gioco il frutto delle mie riflessioni sull'argomento della gestione di un corpus di leggi, ovvero di regole.
Limiti delle gestioni attuali
Sia detto subito che nella ricerca dei limiti degli attuali sistemi di legislazione (dove per ‘attuali’ credo si possa risalire almeno fino al primo corpus iuris formalizzato nell'antica Roma) non mi interessa indagare approfonditamente le cause di questi limiti, le motivazioni che spesso risultano essere di carattere pratico o logistico. E le motivazioni non verranno indagate a fondo non tanto perché io le ritenga insignificanti in sé, quanto piuttosto perché ai fini delle proposte che andrò ad analizzare più avanti esse risultano decisamente poco rilevanti rispetto ai limiti stessi.
I due principali limiti riscontrabili nei sistemi legislativi auttali sono, a mio prare, il problema della paternità e la forma normativa degli emendamenti.
Il problema della paternità
Salvo poche e pertanto famose eccezioni, per ciascuna norma in vigore è tutt'altro che immediato sapere chi l'ha proposta e da chi è stata votata; ancora più difficile è trovare i promotori di ciascun emendamento, o dell'abrogazione di una norma3.
Anche quando queste informazioni sono disponibili (ad esempio attraverso le trascrizioni dei dibattiti parlamentari), infatti, esse non sono in genere di agevole estrazione, e certamente non sono raccolte in alcuna base dati (almeno di mia conoscenza) che le renda accessibili con strumenti di ricerca più o meno raffinati.
Laddove in un gioco come Nomic la paternità normativa è utile solo ai fini del calcolo del punteggio, e può quindi essere ‘dimenticata’ al turno successivo, in sistemi legislativi reali essa è una componente fondamentale della responsabilità del legislatore.
Regole ed emendamenti
Una questione più sofisticata è quella della distinzione tra regole ed emendamenti. Tanto in Nomic quanto nei sistemi legislativi correnti, infatti, gli emendamenti a norme esistenti seguono il medesimo processo di registrazione delle norme stesse; di più, sono regole essi stessi, regole il cui contenuto è peraltro spesso criptico, limitandosi ad asserire le variazioni del testo della norma emendata, contribuendo così a rendere ancor meno agevole la lettura di testi che già per loro natura sono di non immediata comprensione. Un discorso analogo vale anche per le abrogazioni.
Se da un punto di vista logistico l'equazione tra emendamenti e norme è comprensibile, dal punto di vista applicativo essa causa confusione, e dal punto di vista concettuale viola la sostanziale differenza tra la natura dell'emendamento e quella della norma.
Version control systems: l'esperienza del programmatore
Chiunque abbia lavorato ad un grosso progetto (una tesi di laurea, un romanzo, una suite informatizzata per ufficio, un wok) si è quasi inevitabilmente trovato nella condizione di tenere (o di aver desiderato di aver tenuto) vecchie copie dell'opera, prima di una grande modifica: una riscrittura, l'escissione di un brano, una revisione completa.
Uno dei vantaggi offerti dai computer è la facilità con cui si possono
creare copie, sicché ci si ritrova facilmente con tesi.doc
,
tesi.doc.old
, tesi.doc.old1
, tesi.doc.prima-del-prof
,
tesi.doc.19982605
, etc. È abbastanza evidente che dopo l'ennesima
revisione si comincia ad avere qualche difficoltà (1) a ricordare quale
file era quale e (2) a trovare nomi significativi per le copie di
riserva.
Per questo i programmatori hanno inventato una intera classe di programmi che prendono il nome generico di version control system (vcs) e che hanno appunto lo specifico obiettivo di rendere più semplice la gestione delle revisioni.
I vcs distinguono chiaramente tra lo spazio di lavoro (l'insieme dei file gestiti, che può essere un singolo file come un complesso sistema con ad esempio una cartella per ogni capitolo della tesi, contentente i relativi documenti di testo e le immagini, più un documento centrale) e la sua storia, la sequenza di cambiamenti di cui tiene traccia.
Ogni cambiamento registrato nel vcs (in linguaggio tecnico, ogni commit) contiene una ‘fotografia’ dello spazio di lavoro al momento della registrazione, con associate informazioni di corredo quali (come minimo) l'autore, la data, ed un messaggio (generalmente utilizzato per descrivere le modifiche dalla ‘fotografia’ precedente, ovvero il lavoro svolto).
Un altro aspetto importante dei vcs è la possibilità di creare ramificazioni nella storia di un progetto. Per lo sviluppo di software, questa capacità viene sfruttata ad esempio per sperimentare, senza disturbare il ramo di sviluppo principale, l'aggiunta di una nuova funzione o la correzione di un problema che richiede modifiche molto complesse: quando la nuova funzione è stata implementata con successo, o il problema risolto, le modifiche effettuate vengono poi integrate nel ramo di sviluppo principale.
{ Approfondire }
Version control systems per i sistemi legislativi
Dovrebbe ormai essere abbastanza evidente dove voglio andare a parare: perché non prendere gli elementi strutturali dei vcs ed applicarli ai processi di creazione, modifica ed eliminazione delle leggi?
Non è difficile tracciare paralleli: il corpus di leggi correnti corrisponde alla più attuale ‘fotografia’ dello “spazio di lavoro”, i cui cambiamenti vengono registrati nella storia del corpus come modifiche, siano esse la scrittura di nuove leggi, l'emendamento di leggi esistenti o la loro abrogazione. Il risultato dei cambiamenti è una nuova ‘fotografia’ con aggiunti i testi delle nuove leggi, eliminati quelli delle leggi abrogate, e modificati quelli delle leggi emendate: non spunterebbero articoli di legge il cui contenuto indichi una differenza tra la precedente e la nuova versione del testo.
I commit corrispondenti alle modifiche avrebbero una chiara indicazione del chi, del quando, magari pure del perché. L'intero iter di ciasuna modifica potrebbe essere sviluppato in una ramificazione, mantenendo così la storia dei vari passaggi fino alla ratifica definitiva, corrispondente all'integrazione nel tronco principale.
L'intera storia del corpus sarebbe liberamente accessibile (in lettura) da qualunque cittadino, permettendo a chiunque non solo di consultare le leggi correnti, ma anche (agli storici o a chiunque altro fosse interessato) di studiare l'evoluzione delle leggi stesse, nonché di determinare facilmente chi e quando ha proposta ciascuna modifica.
{ Metadati extra rispetto ai classici vcs (es. risultati dettagliati delle votazioni) }
{ Costruire una variante di Nomic come esempio }
sconvolgente: c'è ben poco su Wutki in rete ↩
e per parecchi intendo non meno di una venti-trentina ↩
nel campo delle abrogazioni stanno ad esempio invece facendo molto rumore le leggi letteralmente date alle fiamme dal ministro della Semplificazione, Calderoli, che avrebbe forse fatto meglio a moderare il proprio entusiasmo e verificare cosa stesse facendo. ↩