[LatinaLUG] Progetto senza nome (ex p2pim)

Enrico Bassetti enrico.bassetti@q4q5.it
Dom 28 Dic 2008 23:14:44 CET


Premessa: ho scoperto dopo questo e altre cose che mi sono "successe",
che forse mi ritrovo meglio a fare il sysadmin che il programmatore,
ovvero mi trovo meglio ad installare/gestire un server piuttosto che
sviluppare un applicativo. Ma questo è uno dei progetti (e forse
l'unico) che mi piacerebbe sviluppare nel tempo libero.

Allora, credo sia ora di fare un po' di chiarezza (non che fosse
necessario, ma mi piace ogni tanto riesumare cadaver... pardon, idee un
po' "stagionate" :-D ) su quello che facevamo io e Carlo, e sul perché
tanti log di conversazioni (di cui una parte è finita anche qui, visto
che le nostre sono discussioni "Di Alto Livello").

Dunque, visto che non ho niente da fare (solita frase riciclata, ho
molto da fare, è solo che... boh, lo voglio tirar fuori :-D), oggi (da
qualche giorno in realtà), ho riesumato (si fa per dire, ho solo
ricominciato a pensarci) un progetto che avevo iniziato, forte della
collaborazione del Sig. Carlo Wyrda Felici (che *ovviamente* ha dato i
suoi frutti, cioè era impegnato fino a qualche giorno fa con la scuola,
e poi improvvisamente ha trovato una pazz... ehm, una ragazza, e quindi
è inutilizzabile --- ok ok, magari sono io che rosico un po', ma la
caccia continua :-P (pierluigi rulez :-P) ), progetto che per forza di
cose è stato messo nella naftalina, ma che è ancora presente nel mio
repository svn casalingo (che non oso pubblicare sul web perché son
sicuro di aver omesso qualche banalità nel codice che farà fare a
"cani&porci" quello che vogliono sul mio povero AthlonXp), progetto
insomma che mi piacerebbe riprendere, anche in virtù del fatto che ho
avuto un'ispirazione per la tanto agoniata "interfaccia grafica" (nella
ToDoList di Carlo, e quindi inesorabilmente inesistente), che non oso
pubblicare (vi do' solo un paio di indizi: Stargate e DHD).

Ma con calma, dopo la "filippica" inutile di sparate a zero sulla
passione per riprendere i miei progetti cotti e ricotti (si fa per
dire), e la partecipazione di Carlo (anche questa si fa per dire :-P),
veniamo al dunque, ovvero cos'è il Progetto (notare la P).

Allora, non ricordo da quanto tempo è nell'aria (tra me e Carlo) questa
storia del Progetto, ma sicuramente da un pezzo si parlava di *fare
qualcosa di utile e costruttivo* (che non fosse il "virus per Windows"
che Carlo voleva assolutamente fare, oppure la mia malsana idea di
utilizzare i pc di un laboratorio informatico per una sorta di cluster
con i client al posto dei server (yes, esiste già, chiamasi BOINC o cose
simili)). Alla fine si è optato per fare un qualcosa tipo "client di
messaggistica immediata" (MSN, Skype, Jabber) in java (perché il sig.
Wyrda, per quanto ne so, lo studia a scuola, mentre per me resta
comunque uno dei linguaggi da "esplorare" --- leggasi, condizioni ideali
per 2^n bugs, con n compreso tra 10^10 e 10^15, con conseguente
esplosione nucleare e Tante Brutte Cose(C) ).

Il Programma in questione, doveva avere una particolarità: completamente
p2p, ovvero, non ci deve essere un server: il client, non solo (come una
normale logica vuole) comunica direttamente con l'altro client nel caso
di una conversazione, ma lo fa anche nelle procedure di login, logout e
lookup (dal nome all'ip) ed eventualmente anche contro il "NAT
Trasversale" (o meglio detto come, "io sto dietro un router/firewall
bastardo e tu pure") mediante l'utilizzo di "supernodi" (yes, come Kad o
Skype), oppure pensavo a qualcosa tipo STUN sia per TCP che UDP.

Ora, ovviamente sono stato una marea di tempo a capire come fanno reti
come Kad, Freenet e compagnia bella a stare in piedi se il server non
esiste. Ovvero, chi contatto all'inizio????? Alla fine, sono giunto alla
conclusione (escludendo multicast, una scansione di una porta su 2^32
ip, ecc.) che comunque un server ci sarà, ma alla fine servirà solo a
far scaricare al suddetto client la prima volta la "mappa" della rete,
che contiene ovviamente solo "i supernodi" (host raggiungibili
direttamente, e non "firewallati") o qualcosa di simile, altrimenti sono
mega e mega di roba inutile da tirar giù. E tale server non è detto che
sia necessariamente "il server", ovvero si potrebbe equipaggiare un
demone apposito sui supernodi, attivandoli "a richiesta dell'utente", e
comunque è una funzione da implementare nella rete (ovvero, la rete si
mantiene aggiornata mediante una procedura di "distribuzione" della
nuova "mappa" ogni tanto, o ad eventi). Avevo anche cominciato a pensare
a tutti i modi per semplificare, tipo "se sei un utente della classe
a.b.c.d/x", tutti quelli "vicini" (nel range dello spezzone a.b.c.d/x o
giù di lì) "utilizzeranno" te come supernodo (o meglio, il lookup dei
nodi di destinazione sarà demandando, dal resto del mondo, a lui, o al
gruppo).

Ovviamente poi tutta 'sta roba, per quanto carina possa essere, è
rimasta sulla carta (anzi, neanche su carta), poiché altre persone
interessate al progetto non ne ho trovate né in ambito scolastico (non
che fossi convinto del contrario, anzi...) né cercando tra "amici di
amici", e comunque volevo mantenere la cosa "in locale" e non "su
internet", perché non mi andava di demandare tutto all'oretta al pc
(della serie, voglio conoscerle 'ste persone e discutere del progetto
non via skype (tanto perché dobbiamo fare qualcosa di alternativo :-P),
ma prenderci un'aranciata insieme, e possibilmente incontrarci anche per
fare qualche "coding-day").

Per quanto Carlo comunque possa essere disponibile (non che non fosse
mai, insomma, come me anche lui è una persona impegnata.... spero :-P),
alla fine in due non si conclude molto, o almeno non con i ritmi di
oggi. Ergo, anche se tale cosa è comunque campata in aria, e si tratta
solo di un progetto di qualcosa di astratto (il codice che è presente si
tratta di poco o niente in confronto al Programma), voglio fare lo
stesso la proposta al LUG, magari qualche anima pia che ascolta è
interessata anche solo alla fase "progettuale". Nel caso che il Grande
Consiglio del Lug Latina volesse prendere/sponsorrizzare/supportare
(insomma, prenderlo come Progetto tipo LTSP) il progetto in nome
dell'open source e del free software sarei contento, anche se la vedo
dura visti i tempi che corrono.

Insomma, c'è qualcuno che sarebbe interessato a contribuire allo
sviluppo di tale accrocco? Anche solo "concettualmente", "graficamente"
o "moralmente".

Potete contattare me oppure Carlo se volete info, chiarimenti anche su
"come pensavate di risolvere questo problema?", ecc.

Enrico



Maggiori informazioni sulla lista latina