Sperimentazioni, codici e creazioni per il web
Icona RSS Icona home
  • Stay Away from Elgg

    Pubblicato il 28 marzo 2009 alberto 5 commenti

    Il titolo un po’ provocatorio di questo post vuole essere un monito nel caso qualcuno di voi abbia in mente di utilizzare Elgg per realizzare un social network, avendolo provato, modificato ed utilizzato sono in grado di spiegarvi quali sono i pro e i contro di questa scelta, ma andiamo per ordine…
    La mia ultima creazione (il sito di KeepON ndr) ha avuto un parto molto travagliato, avevo iniziato mesi fa’ lo sviluppo di un portale ad hoc, purtroppo però la mancanza di tempo libero e altri problemi non mi avrebbero permesso di ultimarlo in tempo per la presentazione già fissata da tempo.
    Dopo un po’ di ricerche e tentativi vari di trovare qualcosa di opensource già quasi pronto (sono stati vagliati diversi software tra cui Joomla, BuddyPress e altri), la scelta è ricaduta su Elgg dopo aver visto alcuni siti demo e aver letto in giro per la rete commenti entusiasti rispetto a questa soluzione…

    Dopo aver effettuato il download dal sito ho eseguito la procedura di installazione e subito è spuntato il primo problema, Elgg per funzionare richiede la versione 5.2.6 o superiore di PHP, sul nostro server in produzione è invece presente la versione 5.1.6, poco male mi sono detto, vedo quali funzioni non sono presenti nella 5.1.6 e le implemento con altre librerie come le PEAR o quelle dello Zend Framework.
    Ho passato diverse ore cercando nel codice funzioni quali “json_encode”, “json_decode” e altre funzioni presenti nella 5.2.6 per poi rendermi conto del fatto che Elgg non ne utilizza nessuna di queste ultime… è perfettamente in grado di funzionare sulla versione 5.1.6!!
    A questo punto rimuovo dal sorgente il controllo sulla versione di PHP e completo senza ulteriori problemi la procedura di installazione, aggiungo un primo utente che sarà quello dell’amministratore di sistema.
    La versione “core” di Elgg però è molto scarsa in quanto a funzionalità, queste ultime però possono essere ampliate mediante l’utilizzo di plugin creati dagli stessi sviluppatori del portale oppure da membri della community di sviluppatori e sostenitori che orbita intorno a questo software… dopo qualche ora di ricerca ho trovato circa 15 plugin che ho provveduto ad installare seguento pedestremente le istruzioni indicate all’interno dei vari README.txt distribuiti insieme ai sorgenti, e qui sono nati altri problemi.
    I plugin scritti dagli sviluppatori di Elgg funzionano quasi sempre (notare il “quasi”) mentre quelli della community sono pieni di bug e di conflitti tra di loro… per riuscire ad ottenere un sistema più o meno stabile ho impiegato diverse giornate di lavoro fixando manualmente il codice dove necessario (e qui mi scuso con Gesù, Dio e tutti gli altri santi per averli chiamati in causa spesso e volentieri), cercando eventuali fix nella documentazione scarsa o inesistente dei plugin infatti non vi era traccia di possibili soluzioni.

    Una volta ottenuto un portale più o meno stabile mi si è presentato davanti un altro problema, quello della localizzazione del sistema in italiano…
    Elgg come ormai la stragrande maggioranza dei CMS di questo tipo utilizza degli array per contenere le stringhe in tutte le lingue, le varie stringhe vengono poi visualizzate nella lingua desiderata utilizzando un’apposita funzione interna, fin qui tutto bene se non fosse che:

    • non tutte le stringhe del portale sono localizzate, ho dovuto infatti impiegare diverse ore a cercare nel codice le stringhe mancanti per localizzarle in italiano
    • il sito KeepON è nato per essere visualizzato in italiano, Elgg però durante l’installazione non si preoccupa affatto di questa scelta parsando TUTTI i file di lingua presenti nelle sue directory, caricando quindi in memoria tutte le stringhe in italiano, inglese, tedesco, spagnolo e così via causando un overhead pazzesco e assolutamente inutile… la soluzione è stata impiegare diverse altre ore di prezioso tempo per scovare ed eliminare brutalmente tutti i file di lingua diversi dall’italiano.

    Ero contento dopo quasi un mese di lavoro nel mio tempo libero (si, ho fatto questa pazzia nel mio tempo libero :) ) avevo finalmente un portale più o meno stabile al quale mancavano però parecchie funzioni quali la possibilità di creare delle “schede” per i concerti, le band, i locali.
    Mi sono rimboccato le maniche e ho trovato una soluzione: creare dei miei plugin per aggiungere queste funzionalità e qui di nuovo mi scuso con i santi, Dio e tutti gli altri per le bestemmie…

    • Non esiste documentazione approfondita sulla creazione dei plugin, per capire come realizzare i miei ho dovuto copiare brutalmente quelli già sviluppati inventandomi soluzioni assolutamente ostrogote per riuscire a fare ciò che mi serviva con smadonnamenti di ogni tipo
    • Elgg utilizza in totale 16 tabelle in un database MySQL per memorizzare tutti i vari contenuti con un sistema che ancora oggi non ho compreso a pieno, per creare i plugin ho dovuto quindi utilizzare delle funzioni sue che molto spesso erano buggate e per fixare i bug del core ho perso veramente troppo tempo
    • I plugin vengono caricati (tutti quanti, anche se non vengono utilizzati, anche qui un overhead pazzesco!) in un ordine stabilito dall’amministratore… questo implica il fatto di perdere circa mezza giornata di tentativi casuali per imbroccare l’ordine corretto di caricamento visto che i vari plugin sono vicendevolmente dipendenti.

    Dopo un altro mese di tempo perso finalmente il sito iniziava ad avere una forma, Gaetano (il grafico che ha collaborato a questa realizzazione) aveva già modificato in parte la grafica (e anche qui ci sarebbero diversi insulti da spendere in quanto i template grafici non sono altro che plugin che estendono anzichè sostituire il template base) e mancava l’homepage.

    Per realizzare l’homepage abbiamo seguito un esempio realizzato dal capo sviluppatore di Elgg… si tratta di creare un plugin (un altro!) che estende il template di base aggiungendo un homepage custom, ho perso 4 giorni per capire come caricare i vari dati in homepage prelevandoli tramite strane funzioni interne, funzioni esposte dai plugin e così via… mai visto niente di più complicato!

    Finalmente il sito era quasi pronto, dopo i pochi test svolti nel pochissimo tempo rimasto lo abbiamo finalmente messo in produzione e qui sono usciti tutta un altra serie di problemi di cui vi elenco solo i migliori:

    • All’atto dell’iscrizione viene richiesto di confermare l’indirizzo e-mail cliccando sul link inviato via email, ma la mail di conferma non sempre viene spedita da Elgg e non esiste una procedura per reinviarla manualmente
    • Gli amministratori possono rendere un altro utente amministratore ma non esiste una funzione per renderlo nuovamente un utente normale
    • La validazione dei dati inseriti dagli utenti spesso fa’ cilecca (username validi non vengono considerati tali, le password non vengono riconosciute)
    • Il supporto ai dati in UTF-8 non è scadente, di più, parecchie stringhe infatti non vengono restituite e salvate correttamente nel charset corretto all’interno del database.

    Il fix di questi e altri problemi di minore entità ma comunque importanti non è ancora ultimato, lo sto ultimando giorno per giorno riga dopo riga bestemmiando ogni volta e maledicendo chi ha prodotto questo codice schifoso e maledicendo ancora di più me stesso per aver deciso di utilizzarlo per un sito così importante…

    I PRO E I CONTRO

    PRO

    • Il controllo anti XSS sembra funzionare abbastanza bene con un overhead minimo
    • Le funzioni dei widget realizzate in ajax (quanto funzionano, se funzionano) sono interessanti e carine anche se piene di bug
    • Per funzionare richiede PHP e MySQL senza altre aggiunte, configurazione presente su quasi tutti i server web del mondo
    • Dopo averlo usato una volta si capisce che a sviluppare da zero un portale si sarebbe impiegato meno tempo e quindi si ritorna a scrivere del buon codice stando alla larga da lui.

    CONTRO

    • Per generare una singola pagina possono essere eseguite più di 600 query al database
    • Non esiste un sistema di caching dei contenuti (ci sono delle funzioni sperimentali che utilizzano memcached ma non sono ne stabili ne documentate)
    • Tutti i plugin vengono sempre caricati in memoria, così come i file di localizzazione causando un overhead veramente pauroso.
    • Non esiste una gestione intelligente dei permessi, gli utenti o sono utenti semplici oppure sono amministratori completi del sistema.
    • Tutto il sistema utilizza 16 tabelle mysql indicizzate oltretutto malissimo causando una lentezza paurosa.
    • Richiede un intero server dedicato per funzionare decentemente, la cache di mysql attiva con almeno 256 Mb dedicati e tanta, tanta CPU.
      Non è assolutamente pensabile di utilizzarlo su un hosting shared perchè utilizza troppe risorse anche solo con 5 utenti contemporanei
    • La localizzazione fa’ pietà, il  30% delle stringhe non sono localizzate e vanno cercate e sostituite manualmente nel codice
    • Non è upgradabile, ho infatti dovuto modificare delle funzioni del core perchè erano piene di bug, questo mi impedisce di effettuare upgrade a versioni più recenti.
    • La documentazione spesso non esiste o è scarsissima.
    • Il sistema di logging solleva un mare di notice e warning che riescono a riempire i log del server in poche ore di utilizzo intensivo.
    • E molto, molto altro…

    Ascoltate il mio consiglio, non utilizzate per nessun motivo Elgg o qualsiasi altra cosa derivi da quest’ultimo… impieghereste sicuramente meno tempo e meno stress a realizzare da voi ciò che vi serve.

     

    5 risposte a “Stay Away from Elgg”

    1. Ciao,
      devo dire che hai una fatto una recensione davvero impietosa!

      Sono anche io un utilizzatore di ELGG, capisco in effetti lo stress, la mancanza di documentazione e’ sempre un ostacolo terribile e una cosa che accomuna molti freesoftware e forse mi scandalizza meno perche’ ho messo le mani su tanti ed e’ sempre cosi’… ma ammetto che anche io da sviluppatore non riesco a fare sempre di meglio :-)

      La mia esperienza con elgg e’ meno negativa, ho trovato abbastanza interessante la versione che funzionava con php4 e ho atteso con impazienza l’uscita della versione per php5, che per quanto estremamente giovane e piena di pecche, mi sembra ancora un unicum, non ho trovato altri freesoftware con le stesse qualità.

      Complimenti comunque per il risultato, il sito mi sembra molto bello.
      Una domanda, hai pubblicato qualcosa del tuo lavoro, come la lingua i bugfix o i moduli che hai fatto?

    2. Ciao Lorello, la mia recensione è stata volutamente impietosa.
      Ho dovuto modificare alcune cose nel core per risolvere i bug che mi si sono presentati e ho dovuto perdere non sai quanto tempo per capire come funzionava il codice, scritto veramente male.

      Dico questo perchè anch’io, spesso, ho dovuto mettere mano a freesoftware come joomla o wordpress ma non ho mai visto un obrobrio simile!
      Tutti questi software tendono a essere scritti male o sono male ottimizzati però quantomeno sono coerenti e documentati, nel caso di Elgg queste cose mancano!

      Eseguire 600 query per generare una singola pagina è veramente da pazzi, in Elgg sembra essere però normale…

      Grazie per i complimenti, il sito ora funziona, non proprio come vorrei, ma fa’ il suo dovere. Devo anche complimentarmi con Gaetano che ha realizzato il template grafico che funziona alla grande!

      Purtroppo non ho condiviso nulla… per quanto riguarda la lingua ho scaricato la traduzione dalla community di Elgg modificando qua e la’ qualche frase per migliorare la resa, i bugfix che ho effettuato li ho fatti sul core della versione 1.2, ora credo che con la versione 1.5 siano in parte o tutti risolti.
      Sempre per lo stesso discorso non ho rilasciato i moduli, in primis perchè funzionano solo sulla 1.2 modificata da me e in secondo luogo perchè non il tempo di adattarli e di seguirli nel tempo.

      E’ vero al momento Elgg sembra essere, come definisci tu un unicum, quindi potrebbe sembrare l’unica alternativa a software a pagamento (tipo Dolphin, per esempio) o sviluppati ad hoc, ma ne stanno nascendo altri quindi io prima di riutilizzarlo mi guarderei bene in giro per trovare possibili alternative.

      Comunque grazie per aver condiviso questa tua opinione, il mio post voleva essere un semplice monito per eventuali colleghi interessati a questo software, per l’uso che ne ho fatto io mi sento di sconsigliarlo, per altri scopi forse potrebbe fare per loro…

    3. Ciao,
      ti faccio i miei complimenti per la puntuale e precisa recensione di Elgg. Io sto quasi uscendo di testa. Per questo credo che lo mollerò anche alla luce della tua analisi.
      A questo punto ti volevo chiedere: esiste un’alernativa valida gratis? Ho notato che Tuiyo di Joomla non è scaricabile, Dolphin è a pagamento.. La mia idea è creare un social network stile facebook, una sorta di clone in tutto e per tutto.
      Ti ringrazio per l’attenzione, se vuoi scrivimi direttamente alla mia email, altrimenti rispondi qui, grazie ancora!

    4. Mi accodo alle critiche negative,
      io però credo che ci sia di base un gravissimo errore logico/strutturale nella stesura di questo applicativo: contenuti, impostazioni, operazioni, plugins etc vengono tutti salvati nella stessa tabella!
      Avete provato a vedere cosa succede nella famigerata tabella ‘entities’ dopo nemmeno un mese di esercizio, con una media di 1.000 utenti iscritti?
      Morale della favola: il prodotto può anche andar bene per piccolissime community e se non necessita di troppe customizzazioni, per il resto lo sconsiglio vivamente.

    5. Ciao a tutti,
      anche io sto provando a realizzare un social network.
      Ho prima installato drupal,non mi è piaciuto,poi ho provato phpizabi,solo in inglese e privo di funzioni avanzate(almeno io non ne ho trovate)
      Adesso sono passato a elgg ma non sono tanto contento.
      cosa mi consigliate?
      La mia idea è quella di realizzare un social con le stesse funzioni di facebook,cioè chat,condivisione,creazione album,gestione dei profili ecc..
      Premetto che non ho conoscenze di programmazione di nessun tipo.
      Se qualcuno vuole collaborare ben venga.
      il sito è http://www.socialfriends.it
      grazie in anticipo.

    Lascia un commento