Indice dei Contenuti
I più nostalgici si ricorderanno di questo client di messaggistica istantanea, competitor di Windows Live Messenger e molti altri: stiamo parlando di C6 Messenger, inizialmente sviluppato da Atlantide, poi inglobata nel gruppo Telecom Italia.
Il nome originale era C6 Multichat, poi cambiato nel corso del tempo C6 Messenger ed era l’unico client di messaggistica interamente sviluppato in Italia. Nel 2022 il progetto ha ripreso vita grazie agli sforzi di Daniele Ciarapica che ha lanciato il sito web c6online.it, che ripropone in tutto e per tutto il noto client, con le medesime caratteristiche.
Abbiamo parlato di questo insieme all’ideatore e fondatore del progetto, Daniele Ciarapica. Ecco cosa ha riportato.
IL PROGETTO
C6Online.it è una versione identica al primo client originale di C6 ma interamente online. L’utente non deve scaricare software o altro, tutto viene gestito dal browser in maniera completamente trasparente.
La motivazione che mi ha portato ad investire 9 mesi di lavoro full-time dietro questo progetto è la nostalgia; Il profondo desiderio di voler regalare a tutte le persone che hanno vissuto C6 un piccolo salto indietro nel tempo; Rivivere quelle sensazioni di leggerezza che hanno caratterizzato la nostra giovinezza, quell’entusiasmo che c’era e che ora sembra quasi essersi dissolto fra le pieghe del tempo e della quotidianità.
Il progetto è ovviamente senza finalità di lucro.
Con l’avvento dei social moderni e del vincolo del nome e cognome abbiamo perso quella leggerezza unica del nickname; Un semplice nome inventato ma che dietro celava la libertà di essere chi volevamo, e magari scoprire lati di noi del tutto nuovi.
C6 a mio avviso ha una meravigliosa caratteristica che lo rende unico, persino ai giorni nostri e con i moderni standard dei social;
La capacità di dare priorità ALL’ESSENZA delle persone e non all’ apparenza. Lo fa attraverso gli interessi e naturalmente alla possibilità di ricercare persone proprio grazie a questi interessi.
C6 dà la quasi dimenticata e sottovalutata possibilità di parlare di cinema con un appassionato per ore, arricchirsi reciprocamente, e magari poi scoprirlo abitare a due passi da casa nostra.
SERVER
Il server è eseguito su un ambiente nodejs. E’ dockerizzato. L’ho scritto in typescript, per le sue capacità di estendere javascript alla vera programmazione ad oggetti.
Senza interfacce non avrei mai e poi mai iniziato un progetto del genere.
DATABASE
Il database che ho deciso di usare è SQLite3; In fase iniziale sapevo che avrei utilizzato una macchina virtuale para-virtualizzata molto piccola e con poca ram, così ho optato per una soluzione leggera, evitando di appesantirlo fin da subito con un ulteriore processo come un server mariadb o mysql.
DATI & SICUREZZA
Il campo password all’interno del database è criptato con un salt random che genero nel momento dell’operazione di inserimento e modifica. Il resto dei dati sono in chiaro. Ci tengo a dire che in fase di registrazione chiedo caldamente di scegliere una password unica per C6 e di non usare assolutamente la stessa password di altri account.
Attraverso delle regole forzo l’utente ad inserire un carattere speciale in modo da creare una password più sicura, o almeno diversa da quella che usa di solito.
COMUNICAZIONE
La comunicazione tra server e client viene gestita attraverso la libreria socket.io. Il client crea una connessione SSL criptata con il server e quindi tutti i dati sono criptati.
CLIENT
Il grosso del lavoro come è facile supporre è stato proprio il client. Uno dei miei obiettivi che mi ero prefissato fin da subito è stato quello di riportare l’utente davanti al suo vecchio computer con win98. Tutto è stato realizzato da zero.
L’architettura software è una MVC. Ho usato React come libreria front-end. Il linguaggio ovviamente typescript e per quanto riguarda il design ho usato scss.
Per lo scambio di informazioni, data la complessità del progetto, l’unica soluzione possibile era l’invio dei dati event driven. Il progetto è composto da più di 350 mila righe di codice, librerie escluse.
IL CONTESTO
All’inizio dello sviluppo mi sono concentrato nella programmazione del contesto “Windows”.Ho ricreato le funzionalità di un “piccolo sistema operativo”, le virgolette sono d’obbligo naturalmente; Forse è più giusto dire che ho ricreato in parte quello che fa il processo “explorer.exe” di Windows. Sapevo che il lavoro sarebbe stato impegnativo e quindi ho voluto organizzare per bene le cose fin dalle fondamenta.
Ho ricreato un framework windows con la possibilità di gestire App e Finestre in una metodologia molto simile a quella della prima programmazione Windows in C. Sulla mia scrivania a stimolarmi e qualche volta farmi da referente c’era il Petzold, che nonostante conoscessi a memoria, era sempre li ad incoraggiarmi e qualche volta indicarmi la via giusta su cui proseguire.
Questa fase mi ha preso i primi 2 mesi di sviluppo; In questi due mesi ho sbagliato scelte architetturali in fase di creazione per 4 volte e per 4 volte ho ricominciato da 0; da qui il codice T4 vicino alla versione del software.
C6
Una volta completato il framework mi sono concentrato sull’app. Tramite una utility ho estratto la grafica originale dal client di C6 del 2000, versione 4.26.
Essendo passati quasi 20 anni dall’ultima volta che avevo usato l’app, non potevo ricordare tutte le regole di business, così per prima cosa ho dovuto far rivivere il client originale. In 3 settimane ho creato un server in python partendo dalle informazioni del protocollo che avevano condiviso i ragazzi di OpenC6 e che ho ringraziato anche nei crediti del progetto.
Il momento in cui ho riascoltato dopo tanto tempo il suono del login avvenuto di C6 è e rimarrà uno dei più emozionanti della mia vita da programmatore.
Ricordo di essermi inginocchiato d’istinto con le braccia al vento, come un giocatore che segna il gol in una finale dei mondiali. Quel suono voleva dire che il server in python iniziava a prendere forma e che ero riuscito finalmente ad aprire lo scrigno dei ricordi chiamato C6.
Da li ho potuto ottenere tutte le informazioni di funzionamento ed ho iniziato a clonare l’app di sana pianta ricreando tutto il codice da zero.
Questa fase di sviluppo mi ha preso più di 5 mesi, lavorando giornalmente 7 giorni su 7 in media 10 ore al giorno.
Conclusioni: Grazie!
Alla fine di questa considerazione e dopo aver appreso quanto fatto per portare alla luce il progetto, non possiamo che ringraziare Daniele per la sua costanza e perseveranza, complimentandoci per il lavoro svolto e per la correttezza avuta nei dettagli durante lo sviluppo.
Incoraggiamo, chi volesse farlo, a provare la piattaforma e, se necessario, a riportare i feedback direttamente allo sviluppatore grazie al pulsante dedicato nel lato destro dello schermo.