Salta al contenuto principale

Il codice prodotto con risorse pubbliche

Inviato da tuxsa il

Nel Punto precedente abbiamo stabilito un principio generale: Salerno Verde deve privilegiare Software Libero, standard aperti e sviluppo tecnologico controllabile dall’Amministrazione. Adesso dobbiamo affrontare una questione ancora più concreta.

Quando il Comune finanzia lo sviluppo di software specifico per il progetto, a chi appartiene realmente ciò che viene prodotto? La risposta non può fermarsi alla proprietà contrattuale. Se il codice viene sviluppato con denaro pubblico e serve a gestire un’infrastruttura civica, il suo valore non è soltanto economico. È anche:

  • conoscenza;
  • capacità amministrativa;
  • possibilità di riuso;
  • trasparenza;
  • autonomia.

Per questo Salerno Verde propone un principio molto netto:

ciò che viene sviluppato con risorse pubbliche dovrebbe, salvo eccezioni motivate, tornare alla collettività sotto forma di codice libero, documentato e riusabile.

 

Dal software acquistato al software posseduto davvero

Una pubblica amministrazione può pagare per anni un software senza possederne realmente la conoscenza. Può usarlo, può dipendere da esso ma non necessariamente può:

  • modificarlo;
  • farlo modificare da un altro soggetto;
  • riutilizzarlo;
  • condividerlo;
  • comprenderne il funzionamento interno.

Salerno Verde deve evitare questa situazione. Quando finanzia sviluppo specifico, deve costruire un patrimonio che rimanga disponibile anche dopo la fine del contratto.

Public Money, Public Code

Il principio può essere espresso in una formula ormai molto chiara:

Public Money, Public Code

Se il denaro è pubblico, il codice finanziato con quel denaro dovrebbe essere, quando possibile:

  • pubblico;
  • accessibile;
  • modificabile;
  • riutilizzabile.

Non significa ignorare:

  • sicurezza;
  • diritti di terzi;
  • componenti già esistenti;
  • vincoli contrattuali legittimi.

significa che l’apertura deve essere considerata la regola da perseguire, non una concessione eventuale.

Il contratto deve prevederlo prima

Questo è il punto più concreto. Se la gara o l’affidamento non stabiliscono fin dall’inizio:

  • chi possiede il codice;
  • quale licenza verrà utilizzata;
  • cosa deve essere consegnato;
  • dove sarà mantenuto il repository;
  • quale documentazione deve accompagnarlo,

alla fine del progetto potremmo trovarci con un problema difficilmente risolvibile.

La libertà tecnologica si decide nei capitolati, non dopo.

Consegnare il sorgente non basta

Avere una cartella con il codice sorgente non significa possedere realmente il software. Per essere riusabile servono almeno:

  • repository completo;
  • storia delle versioni;
  • documentazione;
  • istruzioni di installazione;
  • dipendenze;
  • schema dati;
  • procedure di aggiornamento;
  • test;
  • licenza.

Un archivio ZIP consegnato alla fine del contratto e mai più aperto non è un patrimonio digitale. È soltanto un deposito.

Il repository deve essere vivo

Il codice dovrebbe essere sviluppato in un sistema di versionamento fin dall’inizio non caricato pubblicamente soltanto alla fine. Il repository dovrebbe permettere di seguire:

  • versioni;
  • modifiche;
  • issue;
  • rilasci;
  • documentazione.

In questo modo il software possiede una storia verificabile.

Repository sotto controllo pubblico

Anche quando lo sviluppo viene svolto da un fornitore esterno, il repository principale dovrebbe essere controllato dall’Amministrazione o comunque da una infrastruttura sulla quale l’ente mantenga pieni diritti e possibilità di esportazione.

Il fornitore deve contribuire al repository pubblico non diventare l’unico custode del codice.

Una licenza chiara

Il codice deve essere pubblicato con una licenza libera riconosciuta. La scelta specifica dovrà dipendere dal progetto e dalle dipendenze utilizzate. L’importante è evitare formule vaghe come: “codice pubblico” oppure “open source” senza indicare i diritti effettivi.

La licenza deve chiarire:

  • uso;
  • modifica;
  • redistribuzione;
  • eventuali obblighi.

La licenza non può essere un’aggiunta tardiva

Se durante lo sviluppo vengono utilizzate librerie con determinate condizioni, queste possono influenzare la licenza finale e per questo la politica delle licenze deve essere definita all’inizio. Anche il fornitore deve sapere quali componenti può introdurre.

Evitare dipendenze incompatibili

Un software che vogliamo pubblicare liberamente potrebbe diventare difficile da distribuire se integra parti proprietarie non separabili o licenze incompatibili. La progettazione deve quindi considerare fin dall’inizio anche la compatibilità delle dipendenze.

È un tema tecnico ma ha conseguenze politiche sulla riusabilità.

Componenti preesistenti

Naturalmente non tutto il codice di un sistema deve essere stato finanziato dal Comune. Una parte può derivare da:

  • framework;
  • librerie;
  • software libero esistente;
  • componenti commerciali.

Dobbiamo distinguere chiaramente: ciò che esisteva già da ciò che viene sviluppato specificamente con risorse pubbliche.

Sul secondo elemento l’interesse pubblico all’apertura è particolarmente forte.

Nessun diritto esclusivo non necessario

Se il Comune finanzia una nuova funzionalità generica, non dovrebbe concedere automaticamente al fornitore un diritto esclusivo che impedisca ad altri di riutilizzarla. Al contrario, il riuso può moltiplicare il valore dell’investimento pubblico.

Un modulo sviluppato a Salerno può servire altrove

Immaginiamo un modulo per:

  • gestire gli alberi;
  • tracciare segnalazioni;
  • calcolare indicatori;
  • monitorare progetti.
  • Se viene sviluppato in maniera sufficientemente generica, potrebbe essere riutilizzato da:
  • un altro Comune;
  • una Unione di Comuni;
  • una università;
  • una associazione.

Il denaro speso una volta produce valore molte volte.

Anche Salerno può riusare il codice altrui

Il principio funziona naturalmente in entrambe le direzioni. Prima di finanziare un nuovo sviluppo dovremmo verificare se un’altra amministrazione abbia già pubblicato qualcosa di adatto. Se esiste:

  • riusiamo;
  • adattiamo;
  • contribuiamo.

Non reinventiamo.

Riuso come requisito progettuale

Potremmo quindi aggiungere una domanda obbligatoria a ogni nuovo sviluppo: questa funzione è specifica di Salerno oppure può essere progettata in modo riutilizzabile?

Se può esserlo senza costi sproporzionati, preferiamo una architettura più generica. Questo aumenta il valore pubblico dell’investimento.

Il codice deve essere comprensibile

Riusabilità significa anche qualità.

  • Nomi chiari.
  • Architettura comprensibile.
  • Documentazione.
  • Test.
  • Standard di sviluppo.

Un codice tecnicamente aperto ma impossibile da mantenere rimane di fatto chiuso a chi non lo ha scritto.

Standard di qualità minimi

Per gli sviluppi significativi potremmo richiedere:

  • documentazione;
  • linting;
  • test automatici dove appropriati;
  • versionamento;
  • gestione delle dipendenze;
  • procedure di rilascio.

Non per trasformare ogni piccolo script in un grande progetto industriale ma per evitare software fragile.

Codice e infrastruttura non sono la stessa cosa

Un’applicazione può essere libera ma dipendere da:

  • database proprietario;
  • servizio cloud chiuso;
  • API non controllabili.

Questo ne limita il riuso. Per questo dobbiamo valutare l’intera catena tecnologica.

  • Software.
  • Dati.
  • Servizi.
  • Infrastruttura.

Tutto deve essere progettato per ridurre dipendenze non necessarie.

Infrastructure as Code, dove utile

Per i sistemi più strutturati può essere utile documentare anche una parte della configurazione dell’infrastruttura attraverso strumenti automatizzati. Questo permette di:

  • riprodurre ambienti;
  • migrare;
  • ridurre errori;
  • documentare.

Ma vale sempre la regola della proporzionalità. Non aggiungiamo complessità soltanto per seguire una moda tecnologica.

Il codice di configurazione può essere patrimonio

Molto del lavoro reale di un sistema non sta soltanto nell’applicazione. Sta nelle configurazioni.

  • Schema del database.
  • Servizi.
  • Automazioni.
  • Script.

anche questi elementi dovrebbero essere versionati e documentati.

Separare i segreti dal codice

Repository aperto e sicurezza devono convivere. Mai pubblicare:

  • password;
  • token;
  • chiavi private;
  • credenziali;
  • configurazioni sensibili.

I segreti devono essere gestiti separatamente. È un principio elementare ma essenziale.

La documentazione del deploy

Se il sistema viene installato soltanto dal fornitore e nessuno conosce la procedura, il codice aperto serve a poco. Servono istruzioni per:

  • installazione;
  • aggiornamento;
  • backup;
  • ripristino.

Il Comune deve poter consegnare il progetto a un altro soggetto senza dover ricostruire da zero la conoscenza.

Exit by design

Riprendiamo quindi il principio introdotto nel capitolo precedente. Ogni contratto tecnologico deve essere progettato sapendo già come potrà terminare. Alla fine devono rimanere:

  • codice;
  • dati;
  • documentazione;
  • procedure;
  • competenze.

Possiamo chiamarlo:

exit by design

Il modo migliore per essere liberi di continuare con un buon fornitore è sapere che possiamo anche cambiarlo.

Nessun costo per riscattare il proprio codice

Dobbiamo evitare situazioni nelle quali, alla fine di un contratto, l’Amministrazione debba pagare ulteriormente per ottenere:

  • sorgenti;
  • database;
  • specifiche

di un sistema che ha già finanziato. I diritti devono essere definiti prima.

Manutenzione aperta alla concorrenza

Se il software è documentato e libero, la manutenzione può essere affidata nel tempo a soggetti differenti. Questo aumenta:

  • concorrenza;
  • libertà di scelta;
  • capacità negoziale dell’Amministrazione.

Il fornitore originario può continuare a essere il migliore ma deve esserlo per qualità. Non perché nessun altro può intervenire.

Il codice pubblico può essere controllato

L’apertura produce anche una possibilità ulteriore. Esperti indipendenti possono:

  • studiare;
  • segnalare errori;
  • proporre miglioramenti;
  • verificare algoritmi.

Naturalmente questo non sostituisce audit professionali quando necessari ma aumenta la superficie di controllo.

Responsible disclosure

Se il codice è pubblico, dovremo anche prevedere un canale chiaro per segnalare vulnerabilità di sicurezza. Non ogni problema deve essere pubblicato immediatamente come issue visibile. Serve una procedura di responsible disclosure. L’apertura deve essere accompagnata da buone pratiche di sicurezza.

Security policy

Ogni componente importante potrebbe avere una breve policy che spieghi:

  • come segnalare vulnerabilità;
  • quali versioni sono supportate;
  • come vengono gestiti gli aggiornamenti.

Anche questa è documentazione.

Il codice degli algoritmi decisionali

Particolare attenzione dovremo riservare al software che produce:

  • indicatori;
  • punteggi;
  • priorità.

Se un algoritmo contribuisce alla decisione su dove investire, il suo codice e la metodologia dovrebbero essere, per quanto possibile, pubblici.

Il cittadino deve poter replicare

Immaginiamo che il sistema dica: “Quartiere A ha priorità 87/100”. Un ricercatore dovrebbe poter prendere:

  • dataset;
  • formula;
  • codice

e, in condizioni equivalenti, ottenere lo stesso risultato. Questo è un livello di trasparenza molto più profondo del semplice mostrare un numero.

Le decisioni politiche rimangono fuori dall’algoritmo

La pubblicazione del codice rende anche più facile distinguere: cosa ha calcolato il sistema da cosa ha deciso l’Amministrazione.

Se la politica sceglie un intervento differente da quello suggerito dall’indice, può motivarlo. La trasparenza rende la responsabilità più chiara.

Non tutto il software deve essere sviluppato dal Comune

Torniamo al realismo. Un sistema può utilizzare servizi e componenti già disponibili. La regola Public Money, Public Code riguarda soprattutto lo sviluppo specificamente finanziato con risorse pubbliche non significa che ogni componente utilizzato debba essere scritto internamente.

Acquistare supporto è legittimo

Software Libero non significa rinunciare all’assistenza professionale. Al contrario. Il Comune può acquistare:

  • supporto;
  • installazione;
  • sviluppo;
  • manutenzione;
  • formazione.

La differenza è che il servizio viene acquistato senza cedere necessariamente il controllo del patrimonio digitale.

Il valore è nel servizio, non nella prigionia

Un’impresa può costruire un modello economico perfettamente sostenibile intorno a Software Libero. Il valore che vende è:

  • competenza;
  • affidabilità;
  • rapidità;
  • supporto.

non il fatto che il cliente non possa andarsene. È un modello che può funzionare bene anche per la Pubblica Amministrazione.

Codice pubblico non significa manutenzione pubblica gratuita

È importante chiarirlo: pubblicare il sorgente non significa che qualcuno lo manterrà gratuitamente. Serve comunque una politica di manutenzione:

  • Issue.
  • Aggiornamenti.
  • Release.
  • Sicurezza.
  • Risorse.

Il Software Libero crea libertà non elimina il lavoro.

Un maintainer pubblico

Per ogni componente specificamente sviluppato per Salerno Verde dovrebbe essere individuata almeno una responsabilità organizzativa. Chi decide:

  • quali modifiche accettare?
  • quale versione rilasciare?
  • quando aggiornare?

Non necessariamente una sola persona ma una funzione deve esistere.

Governance del repository

Se il progetto riceve contributi esterni, servono regole semplici.

  • Come si propone una modifica?
  • Chi la revisiona?
  • Quali standard?
  • Come si decide?

La collaborazione aperta funziona quando possiede una governance comprensibile.

Un modello semplice

Per progetti piccoli può bastare:

  • issue;
  • pull request;
  • review;
  • merge.

Niente strutture complesse. L’obiettivo è permettere collaborazione senza perdere controllo sulla qualità.

Contributor guidelines

Una breve guida può spiegare:

  • come segnalare un bug;
  • come proporre una funzione;
  • come contribuire al codice;
  • come contribuire alla documentazione.

Questo abbassa la barriera per chi vuole partecipare.

Non solo sviluppatori

Una comunità software non è fatta soltanto di programmatori.

Si può contribuire attraverso:

  • documentazione;
  • traduzioni;
  • accessibilità;
  • test;
  • design;
  • segnalazioni;
  • esempi.

Salerno Verde dovrebbe riconoscere anche questi contributi.

L’accessibilità va verificata nel codice

Se sviluppiamo una piattaforma civica, l’accessibilità non deve essere un controllo finale. Deve entrare:

  • nei componenti;
  • nei test;
  • nelle linee guida.

Un software pubblico che esclude una parte dei cittadini contraddice la funzione democratica del progetto.

Internationalizzazione e localizzazione

Se lo strumento viene progettato bene, potrebbe essere utilizzato anche altrove. La separazione tra:

  • codice;
  • testi;
  • configurazioni;
  • dati locali

facilita il riuso.

Non serve rendere ogni piccolo script internazionale ma per applicazioni strutturali può valerne la pena.

Configurazione invece di fork

Un altro principio importante. Quando altri Comuni riusano il software, dovrebbero poter adattare:

  • logo;
  • nome;
  • categorie;
  • workflow;
  • confini territoriali

attraverso configurazioni, per quanto possibile.

Ma non bisogna creare una nuova versione separata per ogni città. Questo riduce enormemente i costi di manutenzione.

Il Comune può beneficiare delle migliorie altrui

Se il software viene riusato altrove, un’altra amministrazione potrebbe finanziare una funzione nuova. Se il progetto rimane comune, Salerno potrà beneficiarne. Il riuso diventa quindi co-sviluppo distribuito.

Un bene pubblico digitale

A questo punto possiamo utilizzare una definizione più ambiziosa. Il software prodotto potrebbe diventare un:

bene pubblico digitale

non nel senso giuridico stretto del termine, ma come infrastruttura immateriale:

  • aperta;
  • riusabile;
  • non rivale;

capace di produrre valore oltre il progetto originario.

L’economia locale può partecipare

L’apertura non penalizza necessariamente le imprese locali. Al contrario se il sistema utilizza tecnologie aperte, più professionisti e aziende possono offrire:

  • supporto;
  • sviluppo;
  • formazione;
  • integrazione.

Una piattaforma chiusa concentra spesso la capacità di intervento mentre una piattaforma aperta può creare un ecosistema di competenze.

Competenze locali invece di rendite tecnologiche

Questo è uno dei possibili benefici economici. Spendere risorse per:

  • formazione;
  • sviluppatori;
  • sistemisti;
  • GIS;
  • data engineer

costruisce competenze che rimangono nel territorio. Spendere tutto in canoni non necessariamente produce lo stesso effetto.

Ma niente localismo tecnologico

Non dobbiamo però scegliere un fornitore soltanto perché locale.

  • Qualità.
  • Sicurezza.
  • Competenza.
  • Costo.

devono rimanere criteri fondamentali. Il valore strategico è sviluppare un ecosistema aperto nel quale anche soggetti locali possano competere.

Misurare il riuso

In futuro potremmo addirittura monitorare:

  • numero di componenti pubblicati;
  • riusi da parte di altri enti;
  • contributi ricevuti;
  • componenti esterni riutilizzati da Salerno.

Non come principale indicatore del Piano ma come misura dell’impatto della strategia digitale.

Un catalogo del codice

Accanto al catalogo Open Data potremmo avere un:

Catalogo Software Salerno Verde

con:

  • nome del progetto;
  • funzione;
  • repository;
  • licenza;
  • versione;
  • stato;
  • documentazione;
  • modalità di riuso.

Un cittadino o un altro ente trova immediatamente ciò che è disponibile.

Codice attivo e codice archiviato

Non tutto rimarrà mantenuto per sempre. Distinguiamo:

Attivo

  • In manutenzione limitata
  • Archiviato
  • Sostituito

Un progetto archiviato può continuare a essere pubblico ma nessuno deve pensare che riceva ancora aggiornamenti.

La conservazione digitale

Per componenti importanti dovremo garantire anche una forma di conservazione.

  • Repository clonabili.
  • Release.
  • Documentazione esportabile.

Il patrimonio non deve dipendere dall’esistenza futura di una singola piattaforma di hosting.

Copie e backup dei repository

Se utilizziamo una piattaforma esterna per ospitare il codice, l’Amministrazione dovrebbe comunque mantenere:

  • backup;
  • mirror;
  • possibilità di esportazione.

Anche l’hosting non deve diventare una nuova forma di lock-in.

Firma e provenienza dei rilasci

Per i componenti più importanti potremmo adottare pratiche che permettano di verificare la provenienza delle release.

La sicurezza della catena di distribuzione software sarà sempre più importante.

Non è necessario complicare i piccoli strumenti ma per l’infrastruttura centrale il tema va previsto.

Dipendenze aggiornate

Il codice pubblico permette a tutti di vedere le dipendenze ma serve qualcuno che le aggiorni. La manutenzione deve prevedere controlli periodici su:

  • librerie obsolete;
  • vulnerabilità;
  • versioni non più supportate.

Non possiamo aspettare che un aggiornamento diventi un’emergenza.

Il ciclo di vita del software

Anche il software, come gli alberi, possiede un ciclo di vita. Nasce --> Cresce --> Viene mantenuto --> Talvolta deve essere sostituito.

La similitudine non è soltanto retorica; Salerno Verde deve pianificare la manutenzione digitale esattamente come quella fisica.

Ogni nuovo software genera un costo futuro

Prima di sviluppare un nuovo componente chiediamo quindi:

  • chi lo manterrà?
  • per quanto tempo?
  • con quale costo?
  • con quali competenze?

È la stessa domanda che abbiamo posto per un nuovo parco. Se non sappiamo rispondere, forse non dobbiamo ancora svilupparlo.

Meglio meno codice, mantenuto bene

La filosofia rimane quella già utilizzata per gli alberi e i dataset. Meglio:

  • pochi componenti;
  • ben documentati;
  • ben mantenuti;
  • riutilizzabili

che decine di microapplicazioni abbandonate.

Il software pubblico non deve diventare archeologia digitale

Una città può accumulare negli anni:

  • portali;
  • app;
  • database;
  • micrositi.

Molti smettono di essere aggiornati eSalerno Verde deve evitare questo destino.

Ogni anno:

  • cosa utilizziamo?
  • cosa possiamo consolidare?
  • cosa va dismesso?

ed anche eliminare tecnologia può essere una buona decisione.

Prima consolidare, poi aggiungere

Se due componenti svolgono quasi la stessa funzione, valutiamo l’unificazione. Meno sistemi significano:

  • meno aggiornamenti;
  • meno superfici di attacco;
  • meno formazione;
  • meno costi.

Una infrastruttura che può essere capita

Il vero obiettivo di tutta questa strategia può essere riassunto in una frase: nessuna parte essenziale di Salerno Verde dovrebbe dipendere da qualcosa che il Comune non è in grado almeno di comprendere, documentare e sostituire.

Non è necessario conoscere ogni dettaglio. Serve controllo sufficiente.

Autonomia tecnologica come capacità di scelta

È importante usare bene il termine perchè Autonomia non significa non dipendere da nessuno. Ogni sistema tecnologico dipende da:

  • comunità;
  • fornitori;
  • hardware;
  • connettività;
  • competenze.

Autonomia significa mantenere la possibilità di scegliere tra alternative.

Il valore democratico della possibilità di cambiare

Una futura amministrazione potrebbe preferire:

  • un’altra interfaccia;
  • un altro fornitore;
  • un altro sistema di hosting.

Deve poter cambiare senza distruggere la base informativa e senza dover ricomprare ciò che la città ha già finanziato. Anche questa è libertà democratica.

Il codice come memoria istituzionale

Dentro il software vengono spesso incorporate decisioni.

  • Workflow.
  • Categorie.
  • Regole.
  • Calcoli.

Il repository documentato conserva quindi anche una parte della storia del progetto. Tra quindici anni potremo capire:

  • come funzionava la piattaforma nel 2030;
  • quali criteri utilizzava;
  • quando sono cambiati.

Il codice diventa anche memoria amministrativa.

Non sostituire gli atti con il codice

Naturalmente le regole amministrative devono continuare a essere espresse negli atti appropriati. Il codice implementa non legifera.

Se esiste una differenza tra: regolamento e software, prevale l’atto amministrativo. È importante mantenere la gerarchia chiara.

Trasparenza anche sulle eccezioni

Potrebbero esistere casi nei quali un componente non possa essere pubblicato. Per esempio per diritti preesistenti o ragioni di sicurezza. In quei casi la scelta dovrebbe essere:

  • specifica;
  • motivata;
  • limitata.

Non trasformare l’eccezione in regola generale.

Il criterio proporzionale

Non richiediamo la pubblicazione di codice dove non esiste sviluppo specifico finanziato. Se acquistiamo semplicemente un servizio standard, la situazione può essere differente. La strategia deve essere pragmatica. Il punto centrale rimane: quando il pubblico finanzia la creazione di un patrimonio software, dovrebbe cercare di conservarlo come patrimonio pubblico riusabile.

Da consumatori a produttori

Storicamente molte amministrazioni acquistano tecnologia come qualsiasi altro prodotto. Salerno Verde propone di aggiungere un ruolo. Quando serve, la Pubblica Amministrazione può diventare: committente consapevole e talvolta: produttrice di beni digitali riusabili. È un salto culturale importante.

Una politica del codice pubblico

Questa impostazione potrebbe essere formalizzata in una:

Policy del Codice Salerno Verde

basata su pochi principi:

  • Riuso prima dello sviluppo.
  • Sorgente disponibile per lo sviluppo finanziato pubblicamente, salvo eccezioni motivate.
  • Licenze libere chiare.
  • Repository controllabile dall’Amministrazione.
  • Documentazione obbligatoria.
  • Standard aperti.
  • Portabilità.
  • Sicurezza by design.
  • Manutenzione programmata.
  • Contributo upstream quando possibile.

Non serve essere una grande città tecnologica

Questa strategia non richiede una gigantesca struttura informatica ma può partire da pochi progetti:

  • Uno script.
  • Un modulo.
  • Una dashboard.

Documentati bene e pubblicati. La cultura precede la dimensione.

Il primo progetto libero

Uno dei primi sviluppi specifici di Salerno Verde potrebbe diventare un caso pilota. Potremmo documentare:

  • requisiti;
  • gara o sviluppo;
  • repository;
  • licenza;
  • rilascio;
  • costo;
  • riuso.

Un esempio concreto servirà molto più di decine di dichiarazioni sul Software Libero.

Imparare facendo

Anche qui il principio è: SPERIMENTA → DOCUMENTA → CORREGGI → STANDARDIZZA.

Il primo progetto ci insegnerà:

  • quali clausole contrattuali funzionano;
  • quale documentazione manca;
  • quali competenze servono.

Poi miglioriamo il modello.

Una città che restituisce codice

Il risultato più interessante sarebbe vedere un giorno un’altra amministrazione scrivere: “Questo componente deriva dal progetto Salerno Verde del Comune di Salerno.” A quel punto una spesa sostenuta dai cittadini salernitani avrebbe prodotto valore anche fuori dal territorio. E magari un miglioramento sviluppato altrove potrebbe tornare a Salerno. È la logica del bene comune digitale.

Public Money, Public Code non è beneficenza

Condividere il codice non significa regalare qualcosa che avrebbe potuto produrre un grande profitto per il Comune. Normalmente un ente pubblico non ha come missione vendere licenze software. La sua missione è produrre servizi e valore pubblico ed il riuso può aumentare proprio quel valore.

Il pubblico non deve pagare più volte lo stesso sviluppo

Se dieci amministrazioni hanno lo stesso problema e ognuna paga separatamente un prodotto equivalente chiuso, il sistema pubblico nel suo complesso sostiene dieci costi.

Se un progetto viene condiviso e migliorato, parte della spesa può diventare cumulativa invece che duplicata. È anche una politica di efficienza.

Il software come infrastruttura comune

Alla fine il codice non è il protagonista. Il protagonista rimane Salerno Verde.

Ma senza software:

  • gestiremo peggio i dati;
  • misureremo peggio;
  • parteciperemo peggio;
  • dipenderemo maggiormente dai fornitori.

Per questo il codice entra nell’infrastruttura. Non come fine ma come strumento di autonomia e cooperazione.

Il principio conclusivo

Quando Salerno Verde finanzierà un nuovo software dovremo quindi chiedere: Possiamo riusare qualcosa che esiste?

Se no: possiamo sviluppare ciò che serve in modo aperto?

E una volta sviluppato: possiamo far sì che ciò che abbiamo pagato rimanga alla città e possa essere utile anche ad altri?

Se la risposta è sì, quella deve essere la strada preferita.

Perché il denaro pubblico non dovrebbe produrre soltanto un servizio temporaneo, dovrebbe, quando possibile, lasciare un patrimonio. Un patrimonio che può essere:

  • letto;
  • studiato;
  • modificato;
  • riutilizzato;
  • migliorato.

E che continua a esistere anche quando il contratto finisce.

Questo significa, per Salerno Verde: Public Money, Public Code.

Non soltanto Software Libero. Software pubblico come bene comune digitale.