FFIRCd 1.0 nasceva dall'idea di creare un server di chat che permettesse di sistemare tutti i vari problemi che la mia esperienza su un network di IRC dava gestendo il canale #ForumFree
Account, forum e blog di ForumFree, ForumCommunity e BlogFree integrati nella chat
Semplificare i gradi di op ed eliminare channel mode ritenuti obsoleti
Rendere il meno necessario possibile ricorrere ai service per fare modifiche (è tutt'ora un processo che si vuole mandare avanti)
L'esistenza di un canale /staff per ogni forum e blog
La possibilità di settare channel mode e topic permanenti senza dover ricorrere a ChanServ
Il cambio di prospettiva dell'akick, vista come una seconda banlist dove inserire ban permanenti e senza il tipico flood creato da ChanServ (notifica agli op, kick pubblico, set di un nuovo ban)
La gestione dei ban privata esattamente come lo sono gli akick
Eliminazione del ghost automatica
Questo è l'inizio e come tutti i punti di partenza, aiuta a capire cosa si è fatto male
Abbiamo passato un brutto periodo su FFIRCd 1.0 a causa dell'aumento dell'utenza, arrivando a quota 380/430 utenti online nei momenti di punta FFIRCd iniziava a mostrare i suoi limiti tecnici con comandi che fallivano o nel peggiore dei casi con un crash del demone
Voglio dire che io come ogni utente, perchè mi considero un utente, ho odiato questa situazione
Il buon senso mi portò dopo alcuni mesi dal completamento di FFIRCd 1.0 a rendermi conto degli errori fatti, dei problemi che ho avuto con Python, della architettura della chat che non avrebbe permesso di aggiungere funzionalità che vorremmo offrire (più o meno a breve termine) senza rendere il codice illeggibile.
La decisione che presi fu quella che fa parte della vita di ogni software, partendo dalla esperienza della prima versione riscrivere tutto
Questa volta però volevo un linguaggio staticamente tipato. E' stata una scelta che ha influenzato molto, in maniera positiva FFIRCd 2
Passare a un linguaggio staticamente tipato da uno dinamico come Python mi ha permesso di riscrivere il demone molto più velocemente (grazie all'autocompletamento), di avere trovare errori già alla fase di compilazione e sopratutto di effettuare refactoring del codice senza avere una enorme batteria di unit test dietro
E' stata la scelta forse migliore fatta per FFIRCd 2.0 - oggi non tornerei mai indietro ad un linguaggio dinamico per progetti mediamente complessi (FFIRCd 2.0 conta circa 7.000 righe di codice effettivo)
La scelta in quale linguaggio riscrivere FFIRCd non fu una scelta facile. In un primo momento la strada da prendere sembrava quella di un linguaggio funzionale (Haskell oppure F#) ma dover imparare un nuovo paradigma di programmazione ne avrebbe rallentato troppo l'opera di riscrittura
Volevo però un linguaggio orientato agli oggetti (quindi non C), che gestisse lui la memoria e che non sia troppo ...
Read the whole post...
Last comments