Programmazione.it
Un'anteprima di Programmazione.it 7.0
Scritto da Filippo Fadda il 13-10-2014 ore 02:28
E' da un po' di tempo che non vi aggiorno sullo stato di avanzamento dell'ormai prossima versione di Programmazione.it. Bene, sono felice di annunciare che, salvo imprevisti, entro la fine di quest'anno dovrei riuscire a mettere in produzione la settimana release, quella basata su PitPress, una piattaforma che ho sviluppato per creare social networks verticali.

Ho lavorato a lungo sulla piattaforma, rilasciando tra l'altro parecchio codice open source, ed eseguendo nell'arco di un anno ben oltre 1400 commits. Nella fattispecie ho sviluppato un client ed un view server per CouchDB (il solo disponibile per PHP), unitamente ad una console che però non ho rilasciato, in quanto parte integrante di PitPress, che non ho avuto tempo di scorporare. Alle componenti per CouchDB si aggiungono Lint un wrapper per il comando `php -l`,Pygmentize, una classe per utilizzare Pygments via PHP, e infine Converter, un set di classi per convertire da HTML a BBCode e da BBCode a Markdown; infine ho contribuito a vari repository, tra cui quello di Phalcon, il framework, disponibile come PHP extension, intorno al quale ho sviluppato PitPress.

PitPress è stata scritta in PHP ed utilizza congiuntamente CouchDB, Redis, Memcached ed elasticsearch, più tutta una serie di librerie esterne. Il framework MVC che ho utilizzato è Phalcon, e come template engine ho scelto Volt, disponibile come componente di Phalcon. PitPress non fa uso di nessun ORM, poiché non si appoggia su di un DBMS relazionale. La piattaforma dispone di un modello interamente ad oggetti e fa ampio uso di ereditarietà, interfacce e traits, che mi hanno permesso di scrivere intere parti di codice generico fortemente riutilizzabili. Tanto per farvi un esempio, il codice per aggiungere un tag ai preferiti, è il medesimo che viene eseguito quando si aggiunge una domanda, un link o un articolo ai preferiti: stesso metodo, stessa action del medesimo controller, stessa chiamata AJAX. Ciò rende estremamente estensibile la piattaforma. Introdurre un nuovo tipo di dato, per gestire ad esempio eventi, annunci di lavoro, schede prodotto, richiede una giornata di lavoro.

Non ho ancora deciso se rilascerò i sorgenti di PitPress, sarebbe prematuro deciderlo in questo momento. Vedremo.
Quali saranno dunque le novità per gli utenti? Innanzitutto, come ogni social network, l'accesso sarà ristretto unicamente agli utenti registrati, almeno per chi arriva direttamente alla home page. E' già possibile autenticarsi utilizzando le credenziali in vostro possesso, e lo sarà tramite Facebook, LinkedIn, Google+ e GitHub. Attualmente manca il codice che crea l'utenza quando ci si autentica tramite un provider oAuth 2, ma l'autenticazione è di fatto già funzionante.

La nuova piattaforma è user-centric, tutto ruota attorno all'utente, che diviene protagonista indiscusso della comunità. Sto infatti terminando lo sviluppo di un sistema reputazionale, che tra le altre cose prevede l'assegnazione di badges ed offre la possibilità, agli utenti più attivi, di vincere ogni settimana dei gadgets.

Tutti i contenuti, anche quelli già presenti, verranno pubblicati con licenza cc-wiki (BY-SA), in conformità con il modello open source.
I contenuti sono organizzati attraverso l'utilizzo di tags, i quali sono naturalmente estensibili: chiunque ne può aggiungere di nuovi, così come chiunque può modificarne la descrizione. Per semplificare l'accesso alle informazioni che vi interessano di più, potrete filtrare i contenuti in base ai tags che vorrete aggiungere ai preferiti.

Il forum, così come lo conoscete, non esisterà più. Al suo posto sarà presente una sezione con le domande poste dagli utenti, in stile StackOverflow, ma con più ampie possibilità di selezione. Come in SO, ogni utente potrà fornire una sola risposta, eventualmente elaborandola in passi successivi.

Alle domande si affiancheranno, almeno inizialmente, i links, alla Reddit - con i quali segnalare articoli, slide, pubblicazioni di altri siti - gli articoli tecnici, come già li conoscete e le recensioni dei libri. Più avanti si aggiungeranno altre risorse; quali lo decideremo eventualmente insieme.

La piattaforma, come già detto, è dotata di un sistema reputazionale, che prevede l'assegnazione di badges a tutti coloro che contribuiscono fattivamente alla comunità. Come? Scrivendo articoli, rispondendo alle domande poste da altri utenti, pubblicando recensioni, ma anche soltanto commentando e votando, insomma partecipando alla vita di comunità. Il sistema è retroattivo, dunque la vostra reputazione verrà calcolata anche su tutti i contributi già prodotti. E così anche la popolarità dei contenuti è calcolata sulla base dei voti ricevuti, del numero di visualizzazioni e di quello dei commenti, fattori con coefficienti variabili.

Per consentire a tutti di collaborare, la piattaforma sarà dotata di un sistema di revisione paritaria, processo meglio noto come peer review, attualmente in via di sviluppo. I contenuti verranno dunque revisionati da un pool di moderatori, eletti tra gli utenti della comunità. Gli utenti acquisiranno con il tempo maggiori privilegi, come la possibilità di pubblicare, senza la necessità di approvazione, links ed altre risorse, questo per evitare che inetti e spammer, riempiano il sito di pubblicità o link a risorse personali. Insomma, un sistema aperto, ma non ai furbetti.

Ogni utente avrà una propria pagina del profilo, con la timeline (alla Facebook) e le sue connessioni (alla LinkedIn). La piattaforma utilizza Gravatar, per cui se siete registrati con una e-mail alla quale è associato un avatar, questo verrà automaticamente mostrato.

Niente più BBCode, il nuovo linguaggio di markup è il più semplice Markdown, con il supporto alle estensioni della versione di GitHub (GitHub Flavored Markdown). A proposito di GitHub, se linkerete il vostro account a quello di GitHub, i vostri progetti verranno automaticamente mostrati sulla pagina del profilo.

Il nuovo sito farà uso dell'infinite scroll, al momento inattivo. Il sistema di paginazione è comunque già predisposto, mi basta integrare uno script di terze parti.

E' giunto il momento di mostrarvi un'anteprima, non siete ansiosi? Premetto che molte cose non funzionano ancora, ma il sito, ospitato sul mio vecchio Mac Pro, è già navigabile. Potete accedervi con le credenziali di P.it. La procedura di recupero della password ancora non funziona, per cui se non vi ricordate la password o l'e-mail con cui siete registrati su P.it, non riuscirete ad accedere. Cambieranno le cose nei prossimi giorni, perché sto finendo di scrivere le procedure di registrazione per chi accede tramite Facebook, LinkedIn, GitHub e Google+.

Trovate l'anteprima del nuovo sito su Programmazione.me, con .me finale invece che .it. Se non doveste riuscire ad accedere perché non ricordate la password, potete comunque farvi un giro sul sito, all'indirizzo http://programmazione.me/articoli/. Il controllo dell'accesso viene fatto unicamente sulla root. E' chiaro che se siete loggati potete votare un articolo, aggiungerlo ai preferiti e via discorrendo. Magari fateci un salto periodicamente per seguire gli aggiornamenti. Tutti i contenuti sono già stati migrati, ma non ne verranno pubblicati di nuovi. Potrebbe capitare che il sito non sia accessibile, trovandosi non su di una server di staging ma sulla mia macchina di sviluppo (ho un ip pubblico).

Le url sono a dir poco bellissime, è possibile navigare per tag e filtrare per tipo, ad esempio: http://programmazione.me/php/articoli/popolari/. Anche i profili utenti sono accessibili dalla root, per esempio il mio è http://programmazione.me/dedalo (senza lo / finale). Il nome utente è modificabile e nome e cognome non sono più obbligatori, né vengono richiesti in fase di registrazione.
E' anche possibile filtrare tutti i contenuti per data. Si possono per esempio visualizzare i libri più popolari dello scorso anno che parlano di HTML, oppure ancora è possibile ordinare filtrare per anno, mese e giorno. Ad esempio, voglio tutti gli articoli del marzo 2012 (http://programmazione.me/articoli/2012/03/ o in particolare quelli dell'8 marzo dello stesso anno (http://programmazione.me/articoli/2012/03/08/).
Le directory hanno lo slash finale, mentre le risorse non ce l'hanno.

Vi prego di commentare questo articolo comunicandomi la vostra personale opinione. Fate a meno di segnalarmi bug, perché sono già al corrente di ogni singola problematica.

Fatemi sapere cosa ne pensate, grazie!
Copyright Programmazione.it® 1999-2005. Tutti i diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002.