Verifiche e conformità · Terminal Gym 0.2.1
Controlli fatti il 1 novembre 2026 sul codice sorgente completo: prima del commit della versione 0.1.0, di nuovo prima della 0.2.0 (tre temi, icona, script di installazione nel menu) e prima della 0.2.1 (correzione: il terminale del gioco parte sempre dalla palestra). Nessuno strumento dà garanzie assolute: questi controlli servono a dichiarare in modo onesto cosa c'è nel gioco. Non sono una consulenza legale.
In breve
| Controllo | Strumento | Esito |
|---|---|---|
| Etichette di licenza e copyright | REUSE (FSFE), reuse lint |
conforme alla specifica 3.3, tutti i file etichettati |
| Codice copiato da altri progetti | SCANOSS (scanoss-py) |
12 file su 12 senza somiglianze (dopo una riscrittura, vedi sotto) |
| Licenze e titolari scritti nei file | ScanCode (scancode -cl) |
12 file letti, 0 errori, gpl-3.0-plus, titolare ProactiveProject |
| Caratteri | confronto con l'archivio originale | 7 file di caratteri OFL-1.1 non modificati, impronte in LICENZE.txt |
| Immagini | lettura del codice | nessuna immagine presa da fuori: piante e icona sono disegnate a mano o dal codice |
| Dati personali | ricerca nel testo | nessun nome, indirizzo o dominio personale |
Licenza del gioco
- Codice (
terminal_gym.py,gioco/, stile del tema): GPL-3.0-or-later. - Testi e contenuti (README, domande, frasi, glossario, guida, questo documento): CC-BY-SA-4.0.
- Configurazioni senza contenuto creativo (
.gitignore,REUSE.toml): CC0-1.0. - Copyright: 2026 ProactiveProject.
Le etichette sono nelle intestazioni SPDX dei file Python e in REUSE.toml. I testi delle licenze sono nella cartella LICENSES/.
Caratteri e librerie
| Componente | Incluso nel gioco? | Licenza | Note |
|---|---|---|---|
| Fraunces | sì, non modificato | OFL-1.1 | tema Tramonto · da github.com/google/fonts, impronta SHA-256 in LICENZE.txt |
| Nunito | sì, non modificato | OFL-1.1 | temi Tramonto e Pastello · come sopra |
| JetBrains Mono | sì, non modificato | OFL-1.1 | tutti i temi, per i comandi · come sopra |
| Fredoka | sì, non modificato | OFL-1.1 | tema Pastello · come sopra |
| Bangers | sì, non modificato | OFL-1.1 | tema Fumetto · come sopra |
| Comic Neue (Regular e Bold) | sì, non modificato | OFL-1.1 | tema Fumetto · come sopra |
| Python 3 | no, da Ubuntu | PSF-2.0 | |
| PyGObject | no, da Ubuntu | LGPL-2.1-or-later | |
| GTK 4 | no, da Ubuntu | LGPL-2.1-or-later | |
| VTE | no, da Ubuntu | LGPL-3.0-or-later, con parti GPL-3.0-or-later e MIT | verificato nel file copyright del pacchetto |
| GdkPixbuf, librsvg | no, da Ubuntu | LGPL-2.1-or-later | servono per disegnare le piante |
| fontconfig | no, da Ubuntu | licenza in stile MIT | usato solo per caricare i caratteri del gioco |
Tutte compatibili con la GPL-3.0-or-later. I caratteri vengono caricati solo dal gioco, senza installarli nel sistema.
Codice copiato (snippet)
SCANOSS analizza i file di codice scritti per il gioco (9 file Python, terminal_gym.py, installa.sh, disinstalla.sh) inviando solo impronte, non il codice. Il codice è stato scritto da un'IA per questo progetto, come spiegato nel README.
- Versione 0.1.0: 10 file su 10 senza corrispondenze.
- Versione 0.2.0, primo controllo: 1 snippet in
disinstalla.sh, righe 14-20, simile al 28% alle righe 241-247 dibuild/package-unix.shdel progetto transcribeoffline 1.3.0 (licenza MIT, github.com/openresearchtools/transcribeoffline). Abbiamo scaricato quel file e lo abbiamo confrontato: le righe simili sono la formula comune con cui gli script Linux aggiornano l'elenco del menu (if command -v update-desktop-database ...; then ... || true; fi) e i percorsi stabiliti dallo standard freedesktop. Il codice poteva essere dichiarato standard. Per coerenza con le regole del progetto lo abbiamo comunque riscritto in una forma diversa, sia indisinstalla.shsia ininstalla.sh, dove c'era la stessa formula. - Versione 0.2.0, dopo la riscrittura: 12 file su 12 senza corrispondenze.
- Versione 0.2.1: controllati i due file cambiati,
gioco/palestra.pyegioco/finestra.py: 2 su 2 senza corrispondenze. Le righe di licenza e copyright non sono cambiate.
Copyright e immagini
ScanCode trova in tutti i 12 file la licenza gpl-3.0-plus (cioè versione 3 o successiva) e il titolare ProactiveProject. Le sette piante, il vaso, l'ape e la farfalla sono forme semplici disegnate dal codice in gioco/piante.py, con i colori di ogni tema. L'icona (icona/eu.proactiveproject.TerminalGym.svg) è stata letta a mano: solo rettangoli, cerchi e forme libere disegnate apposta, nessuna immagine incorporata, nessun collegamento esterno e nessuna libreria di icone. L'indirizzo www.w3.org nella prima riga non è un collegamento: è il nome standard che dichiara il formato SVG.
Sicurezza
Il gioco non usa dipendenze scaricate da npm o pip: tutte le librerie arrivano dall'archivio di Ubuntu e si aggiornano con il sistema. Il gioco non si collega a internet.
Il gioco ha un terminale vero, quindi ha regole precise:
| Rischio | Come è limitato |
|---|---|
| Creare o cancellare file nel posto sbagliato | il gioco tocca solo ~/palestra-terminale/<profilo>; ogni percorso viene controllato prima; se la palestra è un collegamento simbolico il gioco si ferma |
| Installare programmi | solo cowsay, figlet, tree, htop, dall'archivio ufficiale; il gioco non usa mai sudo da solo, i comandi li scrive chi gioca |
| Togliere programmi che c'erano già | il registro segna solo i pacchetti installati durante il gioco |
| Fermare processi | kill solo sul sleep fatto partire dal gioco stesso |
| Script scritti al livello 7 | vengono lanciati solo dalla palestra, con un limite di 5 secondi; allo scadere viene fermato tutto quello che lo script ha fatto partire |
| Storia dei comandi | il terminale del gioco usa un file suo e non tocca ~/.bash_history |
| Icona nel menu | installa.sh crea solo due file nella cartella personale (la scheda .desktop e l'icona); disinstalla.sh li toglie. Nessun sudo, nessun file di sistema |
Come è stato provato
- Ubuntu 26.04 (GTK 4.22, VTE 0.84): installato dal menu e giocato a mano fino al livello 2.
- Ubuntu 24.04 (GTK 4.14, VTE 0.76): controlli automatici su tutti i 7 livelli e i 3 temi (contenuti, risposte, verifiche della fase Fai, finestre).
- I livelli da 3 a 7 non sono ancora stati giocati a mano: per questo la 0.2.1 è pubblicata come versione di prova.
Pubblicazione
La versione 0.2.1 è pubblicata su proactiveproject.eu come archivio del codice sorgente (terminal-gym-0.2.1-sorgente.zip), creato con git archive dal commit della 0.2.1: contiene esattamente i file controllati qui sopra. L'impronta SHA-256 dell'archivio è scritta nella pagina Giochi e apprendimento.
Cosa resta da fare
- Giocare a mano i livelli da 3 a 7 in tutti e tre i temi e correggere le domande.
- Rifare questi controlli dopo la revisione dei contenuti, prima della prossima versione.
- Valutare un pacchetto
.deb, e rifare i controlli sul pacchetto. - Aprire una piattaforma pubblica per il codice, così chi gioca può proporre correzioni direttamente.
- Segnalare al progetto ScanCode il problema con pluggy 1.7.0, come per le altre app.
Come rifare i controlli
Dalla cartella del gioco:
reuse lint
Sul repository, reuse lint va lanciato dopo git add: prima, la versione di REUSE di Ubuntu può contare anche i file __pycache__ che Git ignora.
Per SCANOSS e ScanCode, copiare i file di codice (.py e .sh) in una cartella a parte (qui CARTELLA):
scanoss-py scan CARTELLA -o scanoss.json
grep -o '"id": "[a-z]*"' scanoss.json | sort | uniq -c
scancode -cl --json-pp scancode.json CARTELLA
Se migliori qualcosa o trovi un problema, proponilo al progetto: non è un obbligo, ma è così che si cresce insieme.