E' un acronimo per “Portale Dei Desideri – Bulletin Board System”: un progetto portato avanti da tre MxB – un coder, un grafico e un sistemista – volto a superare i limiti oggettivi e soggettivi (quelli cioè percepiti dalla comunità MxB) dell'attuale strumento di community (phpBB).
Questi limiti possono essere sintetizzati come segue:
mancanza di informazioni legate al mondo del net-gaming (server, team, partite, etc)
codice privo di ingegnerizzazione: diventa arduo, se non impossibile, modificare i sorgenti per ottenere i risultati voluti, sia per l'illeggibilità degli stessi (“routine” di migliaia di righe) che per il sistema di aggiornamenti della board (prendi questo blocco di codice e inseriscilo alla riga 9750 del tal file), che diventa ancor più complicato in presenza di eventuali personalizzazioni – in poche parole la board non è modulare
interfaccia difficilmente personalizzabile, caotica in presenza di community allargate con necessità di partizionamento dei contenuti, tecnologicamente arretrata
mancato rispetto di standard w3c (in particolare css)
assenza di feed rss
impossibilità di gestire aspetti redazionali (CMS)
Visto tutto ciò, e non avendo trovato, o voluto sposare, un sistema differente in grado di rispondere in un modo o nell'altro a tutte queste necessità, si è deciso di sviluppare un sistema ex-novo.
Questo sistema chiaramente cerca di risolvere tutte le questioni sopra elencate, e di integrare tutte le idee sensate che nascono dal confronto con gli utilizzatori della board.
Per quanto riguarda i linguaggi e gli ambienti utilizzati per sviluppare la board, possiamo dire che il cuore di tutto ruota attorno a php 5, Firebird 2 – scelto come dbms al posto del tanto gettonato MySQL per questioni puramente tecniche (a detta di chi lo usa, molto semplicemente, Firebird è un dbms, MySQL no), xml e javascript (in particolare prototype e scriptaculous).
Con php 5 è stato scritto un framework, ad oggetti, che implementa il pattern Model View Controller attraverso l'elaborazione di pagine xml contenenti tag particolari, mappati su classi php, in grado di gestire la presentazione e la gestione (in senso DML) dei dati presenti sul db.
Tutta la parte di presentazione utilizza prototype, e quindi tecniche AJAX, per organizzare i contenuti nello spazio ridotto di 1024 pixel, ridurre al minimo il traffico verso il server, e semplificare l'interazione dell'utente con la board.
Le pagine prodotte sono in standard XHTML 1.0 e CSS 2.0.
La documentazione degli aspetti strutturali della board è stata redatta in UML (Entity Relationship Diagrams, Class Diagrams).
Per lo sviluppo è stato utilizzato Firefox, in particolare per la presenza di plugin che facilitano l'ispezione delle pagine e delle chiamate asincrone. Attualmente il codice prodotto funziona correttamente su:
firefox
konqueror
safari
opera
Internet Explorer 7 attualmente non visualizza nulla, poiché si
rifiuta di gestire il mime type text/xhtml.
Internet Explorer 6 potrebbe avere solo problemi di CSS, causa il suo modo di
interprentare gli standars. Non voglio entrare in un discorso da “religion
war”, ma il renderlo compatibile con i browser Microsoft sarà un lavoro
affrontato nel futuro, in presenza di una versione stabile della board, e per
nulla semplice, data la sostanziale assenza di strumenti di debug in quel
mondo.
integrazione sistema di poll servers
gestione avanzata utenti, gruppi, diritti
gestione di team di gioco, schede giocatore, log partite, convocazioni, coppe
interfaccia innovativa per gestione comunità complesse: il concetto di directory
interfaccia dinamica (AJAX based)
informazioni contestualizzate
interazione coi feed rss
bbcode
user / ip ban
pddBBs usa Apache::mod_rewrite per far raggiungere ogni
informazione tramite un collegamento virtuale nella barra degli indirizzi. I
virtu-link sono usati nelle varie sezioni del profilo per impostare la propria
home page e i propri feeds, e dai moderatori per le operazioni di
manutenzione.
Questo permette all'utente di impostarsi come pagina di default l'elenco dei
post nelle ultime due settimane:
people/my-login/recent.14
Esistono tre tipi di virtu-link: go, people e feed.
go serve per raggiungere un forum, un topic o un post:
ad esempio go/forum/gamezoo plaza/bazar
go/<forum>
go/<forum>/#topic
go/<forum>/#topic.#page
go/<forum>/#topic.(*|page).#post
people serve per raggiungere i
profili di altri utenti, oppure tutta una serie di pagine personali.
Ogni percorso dopo il login è valido solo per l'utente correntemente loggato.
people/login
people/login/feeds (la pagina coi feed personalizzati)
people/login/new (nuovi post)
people/login/recent(.nnn) (i post negli ultimi nnn giorni)
people/login/bookmarks (i topic favoriti)
people/login/signaled (i post segnalati, se si è moderatori)
people/login/inbox
people/login/inbox/topic.(*|page).post
people/login/gaming (schede di gioco, team e partite)
feeds permette di raggiungere
tutti gli stream di informazione disponibli all'utente correntemente loggato.
Il secondo livello rappresenta il tipo di stream, attualmente esistono i
canali new,
last [0.4c] e
top [0.4c], che forniscono i
post non letti, gli ultimi n post o i primi n post di un oggetto (sito, ramo,
topic).
Gli stream di informazione di tipo
new per essere attivi devono
essere sottoscritti; i forum lo sono di default, un singolo topic deve essere
sempre abilitato manualmente.
I feed sono generati in formato RSS 2.0.
feeds/new
feeds/new/<forum>
feeds/new/<forum>/#topic
feeds/new/inbox
feeds/last(.nnn)
feeds/last(.nnn)/<forum>
feeds/last(.nnn)/<forum>/#topic
feeds/top(.nnn)
feeds/top(.nnn)/<forum>
feeds/top(.nnn)/<forum>/#topic
Utenti
avatar
instant messaging
imposta oggetto come home
gestione sottoscrizioni nuovi post
feed dei nuovi topic (globale / per forum / per topic / su inbox)
favoriti: feeds (interni / esterni), forum, topic
schede giocatore, gestione nicks
message box (invio a singolo utente e a piu' utenti)
new topic, quote, reply, add to favs, segnala a moderatore, edit, delete
visualizzazione partite del clan
preview in tempo reale dei messaggi [0.4b]
Amministratori
gestione integrata stili ad alto livello (css)
gestione avanzata forum e diritti
configurazione server e poll
Moderatori
gestione diritti di accesso al singolo topic
eliminazione topic
censura post
spostare (da moderabile a scrivibile):
topic in altro forum
topic in altro topic
post in altro topic [0.4b]
tutte le operazioni utente su tutti i post delle sezioni moderate
Gestori clan
gestione appartenenti
creazione e gestione team di gioco
War Arrangers
gestione partite e convocazioni
L'evoluzione del progetto è distribuita su vari orizzonti:
integrazione delle funzionalità standard ancora mancanti sulla board (esempio: attachment di file nei messaggi, localizzazione della board, pruning dei forum)
integrazione di funzionalità di tipo redazionale (tag, gestione delle home page delle varie sezioni)
integrazione di funzionalità orientate alla gestione server di gioco
L'obiettivo finale è quello di rilasciare tutto il progetto sotto licenza GPL o simile e pubblicarlo su un sito come sourceforge per renderlo disponibile e coinvolgere, possibilmente, più persone di quelle attuali nella parte di sviluppo e manutenzione.