L’ultima volta che ho parlato di FAVELLA, in fondo, stavo facendo una cosa sola: provavo a consegnarla al mondo. Un progetto open source che, a guardarlo bene, non sembrava interessare a nessuno. E forse a un certo punto anche il mio tono è scivolato in qualcosa di un po’ troppo remissivo, la posa di chi ha già messo in conto la risposta. La domanda però era esplicita, di quelle che non lasciano scampo: qualcuno vuole collaborare, o addirittura prendersi cura del progetto?
Poi ho parlato con il grande Carlo Santagostino, che per me resta un punto di riferimento. E lui, con quel suo candore alla Sheldon che ti spiazza proprio perché è disarmato, mi fa una domanda che non era cattiva, era solo onesta:
«Ma che senso ha, oggi, nell’era degli LLM, mettersi a creare un linguaggio di programmazione come FAVELLA?»
Non ho replicato. Sul momento non ho saputo cosa dire, perché la domanda un senso ce l’ha. Se posso chiedere a una macchina di scrivermi un’avventura testuale in trenta secondi, che bisogno c’è di inventare una lingua apposta per scriverla a mano? Me lo sono portato dietro per qualche giorno.
Poi mi sono detto: vero, ma è anche vero che di gente appassionata a queste cose, almeno nel 2015, ce n’era parecchia. Forum, progetti, traduzioni, tentativi. Solo che da allora sono passati più di dieci anni, e mi rispondo da solo prima ancora di finire la frase.
Dove sono finiti tutti
C’era un mondo intero, intorno a Inform e alla interactive fiction in italiano. Gente che si svenava per piegare un linguaggio inglese alla grammatica nostra, che scriveva storie, che litigava sui dettagli delle preposizioni articolate. Dove sono finiti tutti? E no, non lo chiedo nel senso di Enrico Fermi: nessuno è stato fatto sparire, nessun paradosso cosmico. Si sono solo dispersi, come ci si disperde quando una passione smette di avere un posto dove ritrovarsi.
Eppure FAVELLA continua a sembrarmi un bel progetto. Un’idea creativa, una cosa fatta in casa, con le mani, per dare a qualcuno lo stimolo di programmare in lingua naturale, non perché serva a produrre, ma perché è bello. Perché scrivere La biblioteca è una stanza. e vederla esistere è un piccolo incantesimo che non invecchia.
L’ultima speranza
A quel punto ho fatto l’unica cosa che mi restava da fare. Ho scritto a Bonaventura Di Bello.
Per chi non avesse letto l’articolo sul manuale: Di Bello è l’autore che negli anni Ottanta firmò decine di avventure testuali italiane, quelle che si compravano in edicola con la cassetta dentro. A lui ho dedicato il Manuale di Programmazione di FAVELLA, e scrivergli era un po’ come bussare alla porta di casa di chi ti ha cresciuto senza saperlo.
Dentro di me la previsione era già pronta: figurati se ha tempo, avrà mille cose per la testa. E invece no. Gli è piaciuto. L’ha girato in giro, e mi ha promesso che qualcuno mi avrebbe contattato.
Tanto è bastato. Mi sono rimesso sotto — sotto sotto, eh, senza proclami — e ne ho approfittato per provare sul serio Claude Fable 5, di cui in altri articoli avremo tempo di parlare come merita. Ho ripreso in mano il motore, ho sistemato qualche cosa, e nel mezzo del debugging è successo quello che succede sempre quando un progetto torna a respirare: le idee sono esplose. Una dietro l’altra, più in fretta di quanto riuscissi a scriverle.
Il risultato è qui, ed è la ragione vera di questo articolo. Ricapitoliamo le novità di questi ultimi giorni.
Il laboratorio è aperto

Comincio dalla più grossa, quella che cambia il modo in cui si incontra FAVELLA.
Fino a ieri, per scrivere la tua prima riga dovevi installare Python, scaricare il motore, aprire un terminale. Una soglia bassa per chi programma, un muro per tutti gli altri. Da oggi quel muro non c’è più: nella pagina «Programma con FAVELLA 1» trovi l’intero motore, quello vero, che gira dentro il tuo browser. Non una simulazione, non una demo addomesticata. Il compilatore in persona, portato nel browser con Pyodide.
Scrivi la storia in italiano a sinistra, premi Compila e gioca, e la provi subito a destra. Si parte già da un piccolo mondo funzionante, perché la prima partita deve riuscire sempre:
La cucina è una stanza.
La descrizione della cucina è "Una cucina piccola e ordinata. Dalla finestra si vede il giardino, a nord.".
Il giardino è una stanza.
La cucina collega nord a il giardino.
Il giocatore comincia in cucina.
La mela è una cosa.
La mela è in giardino.
La mela è prendibile.
Invece di prendi la mela: dire "La stacchi dal ramo. Era l'ultima della stagione." e adesso vinci.Due stanze, un melo, una vittoria in due mosse. Da lì cancelli tutto e cominci la tua, di storia.
La parte di cui vado più orgoglioso è quella che non si vede al primo sguardo. Se sbagli, l’errore che leggi è quello autentico del compilatore, con il numero di riga: la stessa diagnostica che otterresti da riga di comando. Scrivi la chave invece di la chiave e ti risponde subito, prima ancora di avviare il gioco, che quell’entità non è mai stata dichiarata, e ti suggerisce cosa intendevi. Niente di addolcito per il web. È il motore che ti parla in faccia.
E quando la storia ti piace, la scarichi come file .fav. Quello stesso identico file lo apri con il motore da riga di comando, senza cambiare una virgola: la tua storia è tua, e viaggia con te. C’è di più: puoi anche esportarla come una singola pagina HTML autoportante, da regalare a chi vuoi: lui ci gioca nel browser, senza installare niente, perché il motore se lo porta dentro la pagina.
Nessuna installazione, nessun account, nessun salvataggio in un cloud che non controlli. Apri la pagina, scrivi, giochi, scarichi. La porta d’ingresso non è mai stata così bassa.
Sedici cassette

La seconda novità è quella a cui sono più affezionato, perché è un omaggio.
Chi ha la mia età ricorda i corsi di programmazione su cassetta dei primi anni Ottanta — quelli che imparavi il BASIC infilando un nastro nel registratore, mentre il computer ti faceva scrivere una riga alla volta. Ho voluto rifare quella cosa lì, ma viva. È il corso interattivo: sedici «cassette», una per ogni capitolo del manuale, che ti insegnano FAVELLA nell’unico modo in cui una lingua si impara davvero, cioè scrivendola.
Non è un manuale travestito. Quando una lezione ti chiede di scrivere una frase, sotto non c’è un controllo finto che confronta due stringhe: è il motore vero che compila quello che hai digitato e ti dà il suo verdetto. Ogni checkpoint è stato verificato uno per uno contro il compilatore. Se la lezione dice che quella riga funziona, quella riga funziona, perché l’ha provata la macchina e non io.
Si comincia dalla prima stanza e si arriva, cassetta dopo cassetta, fino ai personaggi che rispondono e ai demoni che sorvegliano il mondo. E il filo conduttore è sempre lo stesso: La Casa di Via Stradivari, la storia di zia Adele che ho scritto apposta per il manuale. Si impara la lingua entrando in quella casa.
Due avventure, dentro la pagina
La terza cosa è la più semplice da spiegare e la più bella da fare: ci si gioca.
Dentro il corso ho messo due avventure complete, giocabili dal vivo nel browser con lo stesso motore di tutto il resto. La prima è proprio La Casa di Via Stradivari, l’esempio-guida del manuale, che da pagina di codice diventa una partita vera. La seconda è Il Relitto Silente: quindici stanze, artefatti da decifrare, una lingua aliena da tradurre e qualcosa che, nel silenzio, ti osserva.
C’è una simmetria che continua a piacermi. Il Relitto l’avevo congedato qualche settimana fa, l’avevo reso open source come ultimo regalo. Adesso torna a vivere una terza volta: prima gioco, poi sorgente aperto, oggi vetrina della lingua che lo può raccontare. I progetti, quando li ami, non muoiono mai del tutto.
Quello che arriva

E non mi sono fermato qui. Il linguaggio è completo, ma «completo» non vuol dire finito: vuol dire che il pavimento è solido e adesso posso alzare il soffitto. Sul tavolo, già progettate, ci sono le prossime mosse, e guardano tutte dalla stessa parte: quella del giocatore.
La prima è quella che mi sta più a cuore, perché è la cosa che oggi fa sembrare ottuso qualunque parser italiano. I pronomi. Scrivi esamina la torcia, poi la vuoi prendere, e digiti prendila. È così che parliamo, no? Eppure è proprio lì che le avventure testuali tradiscono di essere macchine. Presto FAVELLA ricorderà l’ultimo oggetto di cui hai parlato, con tanto di genere e numero: prendila, aprilo, usali. E se l’ultima cosa nominata era la torcia e tu scrivi prendilo, ti chiederà cosa intendi, perché «torcia» è femminile e lui lo sa.
Poi c’è la varietà delle risposte. Niente fa sentire vecchio un gioco come rileggere la stessa identica frase ogni volta che esamini il mare. Sto preparando un modo per dare a una descrizione più voci, che il motore alterna o consuma una alla volta: una riga di codice, e il mare smette di ripetersi.
E infine i comandi che chi ha consumato quelle avventure conosce a memoria: ANNULLA per disfare l’ultima mossa, ANCORA per ripetere il comando di prima. Sono uno standard del genere da quarant’anni. Presto saranno di casa anche qui.
Allora, che senso ha?
Torno alla domanda di Carlo, perché me la sono meritata.
Ha ragione lui: nell’era degli LLM nessuno ha bisogno di FAVELLA per produrre un’avventura testuale. Ma «avere bisogno» non è mai stato il punto. FAVELLA serve a quella cosa lì che si vede aprendo il laboratorio: una persona qualsiasi, senza Python, senza terminale, che scrive una frase in italiano e la vede diventare un mondo. Serve a tenere acceso un gesto — programmare per il gusto di farlo, capire come funziona una storia smontandola — che gli strumenti che fanno tutto al posto tuo rischiano di spegnere senza che ce ne accorgiamo.
Forse gli appassionati di una volta si sono dispersi davvero. Ma adesso c’è un posto dove ritrovarsi, e si raggiunge con un clic: il laboratorio per scrivere, il corso per imparare, e tutto il codice su GitHub, aperto come sempre.
Di Bello mi ha promesso che qualcuno mi avrebbe contattato. Nell’attesa, ho costruito la casa per quando arriverà.
E c’è ancora una sorpresa in officina, di cui non parlo. Chi scrive storie con FAVELLA, quando la vedrà, la troverà familiare.
