Il progetto Debian non accetterà più pacchetti che non siano riproducibili

All’incirca un anno fa è apparso sul nostro portale un Saturday’s Talks intitolato “l’open-source è nulla senza la riproducibilità delle build“, all’interno del quale il nostro Giovanni analizzava un aspetto che i più ignorano, ma che nel contesto open-source ha una rilevanza strategica fondamentale: la compilazione del codice sorgente di un pacchetto dovrebbe sempre produrre lo stesso identico binario su qualsiasi sistema viene eseguita.

Un anno dopo, in un momento storico dell’informatica in cui molti si domandano cosa significhi essere open-source, in particolare quando si parla di Large Language Model, il tema non solo è ancora importante, ma è diventato più critico che mai.

Le implicazioni della riproducibilità hanno un impatto trasversale su tantissimi aspetti della quotidianità informatica: sulla manutenzione, sulla contribuzione e, soprattutto sulla sicurezza. I motivi sono ben spiegati nell’articolo citato in apertura, ma oggi tornano di attualità in seguito all’ultima pubblicazione dei bits from the release team del progetto Debian.

In una sezione dedicata, denominata “Reproducibility” vengono resi chiari gli obiettivi prossimi/futuri del progetto in materia di pacchetti:

Aided by the efforts of the Reproducible Builds project [1], we’ve decided it’s time to say that Debian must ship reproducible packages. Since yesterday, we have enabled our migration software to block migration of new packages that can’t be reproduced [2] or existing packages (in testing) that regress in reproducibility.

Grazie agli sforzi del progetto Reproducible Builds [1], abbiamo deciso che è giunto il momento di affermare che Debian deve fornire pacchetti riproducibili. Da ieri, abbiamo abilitato il nostro software di migrazione in modo che blocchi il trasferimento dei nuovi pacchetti non riproducibili [2] o dei pacchetti esistenti (in testing) che peggiorano in termini di riproducibilità.

I riferimenti indicati sono i seguenti:

Ma la sostanza del messaggio è molto semplice: non verranno più accettati pacchetti che non siano riproducibili in Debian, per l’interezza del progetto.

Quanto fondamentale si rileverà questa imposizione lo si vedrà nel tempo, ma, come dicevamo in apertura, l’aspetto della riproducibilità porta con sé alcuni impatti impliciti che oggi sono imprescindibili: sicurezza, trasparenza e affidabilità delle catene di fornitura del software.

In un’epoca di attacchi alla supply chain, i pacchetti riproducibili proteggono da compromissioni degli ambienti di compilazione e troppe sono le storie che abbiamo sentito in questo periodo (l’ultima in ordine di tempo è la catastrofe di Trivy) per far finta che il problema non esista.

Agire con delle politiche chiare e precise, come queste adottate da Debian, non potrà che fare bene all’intero ecosistema open-source.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

7 risposte a “Il progetto Debian non accetterà più pacchetti che non siano riproducibili”

  1. Avatar JustATiredMan
    JustATiredMan

    vista la diffusione di Debian, anche in altri progetti, distro, etc. hanno pienamente ragione. Debian non è solo una distribuzione, è anche la base di moltissimi altri progetti anche infrastrutturali. Proxmox in primis.

  2. Avatar Divago
    Divago

    Perdonate la mia ignoranza, ma com’è possibile, avendo lo stesso codice sorgente, ottenere un binario diverso sui vari sistemi?

  3. Avatar michele
    michele

    dall'articolo citato da Raul: "In soldoni, se diamo lo stesso codice sorgente a 2 o 3 persone o se usiamo dispositivi, toolchain e sistemi operativi diversi per passare da un sorgente a un binario, è molto probabile che i checksum dei pacchetti risultanti non coincidano tra di loro, per ragioni “fisiologiche” al processo di compilazione ma il risultato sarebbe il medesimo: checksum diversi."
    Ma a questo punto la domanda sorge spontanea: debian viene proposta per architetture molto diverse, da distrowatch :amd64, aarch64, armhf, ppc64el, riscv e s390x
    Il discorso di riproducibilità sarà per piattaforma hardware?

  4. Avatar Divago
    Divago

    Il discorso della riproducibilità allora si può estendere anche a Windows e macOS, dove a parità di codice sorgente, con sistemi operativi e di sviluppo diversi (differenti versioni di Visual Studio o Xcode e/o SDK) si ottengono checksum differenti per loro stessa natura.

    Per quanto riguarda il discorso sulle varie architetture, penso proprio che sia come dici tu. Un binario compilato per x86 è differente da uno per ARM, RISC-V e altri, quindi suppongo che il discorso sulla riproducibilità sia per ogni singola piattaforma hardware.

  5. Avatar mimmus
    mimmus

    non mi è chiara l'importanza di questo principo (la riproducibilità)

  6. Avatar Raoul Scarazzini

    Ti consiglio la lettura di https://reproducible-builds.org/docs/getting-started/ e di https://reproducible-builds.org/docs/definition/ dove viene espresso con molta chiarezza il principio con cui una build è riproducibile:

    A build is reproducible if given the same source code, build environment and build instructions, any party can recreate bit-by-bit identical copies of all specified artifacts.

    e volendo chiarire cosa si intende per artefatti:

    Artifacts would include executables, distribution packages or filesystem images. They would not usually include build logs or similar ancillary outputs.

    Quindi non è una cosa che dipende solo dai sorgenti, ma dall'ambiente e dalle istruzioni.

  7. Avatar Raoul Scarazzini

    Come citavo sopra, data la definizione che c'è qui https://reproducible-builds.org/docs/definition/ di fatto una build diventa riproducibile non solo con il codice sorgente, ma anche dalle istruzione e dall'ambiente di build, quindi sì, ovviamente anche dall'architettura.
    Tant'è che se vai su https://reproduce.debian.net/ vedi che le distinzioni principali sono fatte per architettura.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *