altre destinazioni

vedi anche

ultimi post

ultimi commenti

tag principali

categorie

archivi

powered by

  • WPFrontman + WP

friends

copyright

  • © 2004-2011
    Ludovico Magnocavallo
    tutti i diritti riservati

Lightpress, reboot

23 giugno 2011

4 commenti

tag

categorie

Qualcuno degli ormai rari lettori di questo blog forse ricorderà Lightpress, il frontend per WordPress che avevo sviluppato in Blogo, e accasato in seguito da Textdrive che lo aveva adottato tra le applicazioni sponsorizzate. Dopo parecchio lavoro e un po’ di (virtuali) soddisfazioni, circa cinque anni fa aveo deciso di interromperne lo sviluppo: in parte perchè pur essendo un progetto interessante quasi solo per blog commerciali, la licenza GPL faceva sì che in pratica lavorassi come consulente non remunerato (i nanopublisher non sono famosi in genere per avere un senso di equità sociale particolarmente sviluppato); e in parte perchè i miei interessi si erano nel frattempo spostati verso altre direzioni, tra cui Blogbabel.

Nel retrocranio però l’esperienza di Lightpress ha continuato a fermentare, e ogni volta che pensavo a mettere su un blog o mettevo le mani su quello di qualche parente o amico, mi rendevo conto che l’esigenza di tanti anni fa esiste ancora: WordPress ha una architettura vecchia, che non era particolarmente brillante neppure alle origini ma con il tempo e le stratificazioni successive è diventata davvero pessima, generando un sistema ipercomplesso, pieno di ridondanza, in cui è complicato mettere le mani (mai provato a tracciare l’origine di un dato attraverso decine di funzioni e include?) e che non usa nessuna delle tecniche di sviluppo di applicazioni web che sono ormai di uso comune come un sistema di template, codice a oggetti o perlomeno la separazione tra dati e viste logiche, un ORM (non tiratemi fuori l’aborto che è wpdb, tra l’altro utilizzato solo per alcune cose), ecc. ecc.

Così qualche tempo fa fa ho iniziato un po’ per gioco a buttare giù un frontend per WordPress in Django, riprendendo alcune delle idee di Lightpress e aggiungendone molte altre, e soprattutto cercando il più possibile di seguire la filosofia di progettazione e sviluppo delle applicazioni Python e Django. Ci è voluto molto più di quanto pensassi, un po’ per gli inevitabili mismatch tra il disegno della base dati di WordPress multiblog (agghiacciante come quasi tutto il resto) e il layer ORM di Django, un po’ per la quantità di funzionalità di cui tenere conto (commenti threaded o meno, categorie e pagine mono o multilivello, interazione diversa con utenti WP o anonimi, ecc.), ma dopo quasi sei mesi il primo prototipo è pronto, e sta servendo i blog che sono sul mio server, tra cui questo che state leggendo.

Non rivelo ancora il nuovo nome del progetto, e non so ancora in che modalità sarà disponibile (dual license libera/a pagamento per versione mono/multisito? gratuito per uso personale/a pagamento per uso commerciale? ecc.) anche se nei prossimi giorni dovrei avere le idee un po’ più chiare, grazie anche al brainstorming con alcune persone davvero in gamba, che ne capiscono decisamente più di me degli aspetti commerciali e di marketing. Sentirò probabilmente anche cosa ne pensano alla “casa madre”, facendo un ping a Matt e a Jason, ora direttore della WordPress Foundation e CTO di Textdrive all’epoca di Lightpress.

Quello che posso fare nel frattempo è darvi una piccola preview di alcune delle funzionalità:

  • integrazione completa con WordPress, di cui vengono sfruttate tutte le funzionalità amministrative (ad esempio, sto scrivendo questo post dalla console di WordPress)
  • la parte esposta al pubblico utilizza solo codice e template Django, senza nessuna dipendenza da WP tranne l’accesso al database
  • entrambi i moduli convivono all’interno dello stesso server web, ma possono tranquillamente essere spostati su ambienti e macchine diverse, separando di fatto la parte amministrativa da quella pubblica, e permettendo una facilissima scalabilità orizzontale della parte pubblica
  • supporto per quasi tutte le funzionalità offerte da WP (utenti, preview dei post, ecc.)
  • utilizzo delle opzioni dei blog definite in WP (nomi, permalink, caratteristiche di lettura/scrittura, ecc.)
  • plugin WP dedicati per impostare parametri di base dalla console di amministrazione, impostare la redirezione dei feed, comunicare nuovi timestamp alla cache, ecc.
  • supporto a WP multisite, sia in modalità domain based che path based
  • integrazione completa con l’ORM di Django, che permette ad esempio di fare da linea di comando cose tipo posts = Post.objects.published().filter(author__nicename='ludo')
  • architettura classica di una applicazione Django, che permette di integrare nuovi middleware, template tag, o parti di applicazioni terze con pochissimo effort
  • pipeline estendibile di moduli specializzati per filtrare lo spam dai commenti
  • cache intelligente a tre livelli basata su timestamp per classi di oggetti, con cui la console di WP dialoga tramite un plugin dedicato

…e molto altro ancora. Grazie a Python, a Django e alla scelta di modularizzare e semplificare al massimo l’architettura il progetto è piuttosto compatto: poco più di 6.000 linee di codice Python, qualche centinaio di codice PHP per i plugin, un po’ di HTML per i temi di base. Stay tuned.

4 commenti

  • Matteo
    27 giugno 2011 #

    Bravissimo. Bella idea e non vedo l'ora che la prima versione pubblica venga rilasciata. Mi auguro che tu riesca a far valere economicamente in maniera adeguata questo tuo nuovo progetto.

  • ludo
    27 giugno 2011 #

    Teo grazie, è un progetto un po' complesso ma mi sta entusiasmando. Speriamo continui così.

  • Paolo Gabrielli
    5 agosto 2011 #

    Ti segnalo il lavoro dei ragazzi del Chicago Tribune "contro" WP :-) http://blog.apps.chicagotribune.com/2011/08/0...

  • ludo
    5 agosto 2011 #

    Paolo grazie, davvero interessante.