[Flug] Il mio progetto invernale: un client TUI per email, XMPP e Matrix.

Tom tom@orivega.io
Gio 29 Ott 2026 11:38:26 CET


Ciao a tutti!

Ogni anno mi pongo un piccolo obiettivo: scegliere un progetto personale che mi accompagni per tutto l'inverno, con una scadenza ben precisa, il primo giorno di primavera.
È una sorta di tradizione che porto avanti per il puro piacere di programmare, sperimentare e imparare qualcosa di nuovo.

Scrivo codice da 25 anni e, nonostante sia anche il mio lavoro, continuo a provare una soddisfazione quasi ancestrale nel prendere un problema, ragionarci sopra e trovare una soluzione. 
Mi piace far lavorare il cervello, sbagliare (smadonnare), riprovare e arrivare a qualcosa che prima non esisteva, almeno non nella forma in cui l'avevo immaginato.

E soprattutto, cerco di farlo senza affidare la scrittura del codice all'AI, non perché sia contrario al suo utilizzo, ma perché il divertimento, per me, sta proprio nel percorso, 

Negli anni mi sono dato alcune semplici regole (con aggiunta della regola AI, recentemente)

1. Devo imparare qualcosa. Che sia un linguaggio, un design pattern, un'architettura o una tecnologia che non conosco.
2. Massimo due ore al giorno, e nemmeno tutti i giorni. Deve rimanere un piacere, non trasformarsi in un secondo lavoro.
3. Deve essere utile. Anche soltanto a me, ma deve risolvere un problema concreto.
4. Non deve essere necessariamente originale. Non mi interessa reinventare la ruota per dimostrare qualcosa. 
   L'anno scorso, ad esempio, ho riscritto da zero un server di Ultima Online, Moongate, come raccontavo nella mia ri-presentazione. 
   Di server di Ultima Online ne esistono da decenni, alcuni sicuramente migliori del mio. Ma il punto era costruirne uno e imparare facendolo.
5.Posso anche recuperare un vecchio progetto. Anzi, a volte è ancora più interessante riprendere in mano qualcosa che avevo abbandonato anni prima.
6.AI sì, ma con dei limiti precisi. La utilizzo per scrivere test, documentazione e come sparring partner durante il brainstorming. 

Il progetto di quest'inverno: tmail (tildemail)
Dopo tutto questo pappie`, arrivo al motivo per cui vi scrivo.

Quest'anno ho deciso di riprendere un vecchio progetto che avevo iniziato anni fa, abbandonato e recentemente resuscitato, migrandolo su Codeberg: tmail, un client email TUI (Text User Interface).
Per darvi un po' di contesto, passo gran parte della giornata nel terminale e cerco di utilizzare il più possibile la tastiera. Uso Vim per sviluppare, Sway come window manager e, in generale, preferisco strumenti essenziali, veloci e che non mi costringano continuamente a passare dal mouse alla tastiera.
L'idea di avere un client di posta costruito attorno a questo modo di lavorare mi accompagna da parecchio tempo.

Cosa ho implementato finora

- Il progetto è già funzionante e comprende diverse funzionalità.
- Interfaccia e gestione della posta
- Interfaccia da terminale, avviabile semplicemente con tmail.
- Navigazione tra cartelle e account, elenco dei messaggi e lettore integrato.
- Scorciatoie in stile Vim, riga di comando : e pannello which-key.
- Operazioni sui messaggi: lettura, flag, eliminazione, archiviazione e spostamento.
- Supporto a più account.
- Cache locale SQLite con ricerca Full-Text Search (FTS). Tra l'altro, non avevo minimamente idea che SQLite integrasse un motore di ricerca full-text: una delle cose che ho imparato grazie a questo progetto!
- Lua, Qui non poteva mancare Lua, che ormai infilo come il prezzemolo in quasi tutti i miei progetti.


Finora tmail è nato e cresciuto come client di posta elettronica, ma sto pensando di fare un passo ulteriore.


Mi piacerebbe integrare anche XMPP e Matrix, mantenendo tutto all'interno della stessa TUI, con un'interfaccia coerente e un sistema di navigazione basato sulla tastiera.
Sto valutando anche il supporto ai feed RSS, anche se qui comincio a chiedermi dove sia giusto tracciare il confine tra uno strumento completo e uno che vuole fare troppe cose.
Il punto è che, personalmente, trovo dispersivo dover utilizzare tanti strumenti diversi per attività che, in fondo, appartengono alla stessa sfera: leggere, comunicare, ricevere informazioni e rispondere.

Non voglio necessariamente costruire l'ennesima applicazione che fa tutto, magari facendo male ogni singola cosa. 
Vorrei capire se abbia senso progettare un ambiente unico, modulare, che raccolga queste funzionalità senza perdere la semplicità di uno strumento da terminale.


Mi piacerebbe conoscere il vostro punto di vista:

- Secondo voi ha senso mettere insieme email, XMPP e Matrix in una sola TUI?
- Aggiungereste anche un lettore RSS oppure comincerebbe a essere troppo?
- Nella vostra quotidianità, cosa vi manca negli strumenti che utilizzate?
- C'è qualche funzionalità che vi farebbe davvero comodo avere a disposizione in un ambiente simile?
- Non sto cercando necessariamente di realizzare qualcosa che rivoluzioni il mondo. Vorrei semplicemente costruire uno strumento che abbia senso usare, imparando qualcosa durante il percorso.

Naturalmente, il progetto è open source, rilasciato sotto licenza GPLv3. (https://codeberg.org/squidd/TildeMail/)

Mi farebbe piacere ricevere opinioni, critiche, suggerimenti e anche qualche sano secondo me stai facendo una cavolata.

Grazie a chi avrà avuto la pazienza (e abbiate pazienza) di leggere fino a qui.

Tom
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        publickey - tom@orivega.io - 0xCA9588D7.asc
Tipo:        application/pgp-keys
Dimensione:  2784 bytes
Descrizione: non disponibile
URL:         <http://lists.linux.it/pipermail/flug/attachments/20261029/6755f198/attachment.asc>


Maggiori informazioni sulla lista flug