3 min read

Considerazioni su Rails e Drupal

Premessa

Volete fare un sito web, avete provato qualcosa a manina, ma poi vi rendete conto che esistono framework e cms che rendono la vita molto più facile e vi permettono di concentrarvi solo su quello che vi interessa senza reinventare la ruota.

Senza tirare in ballo tutte le possibili alternative alla moda, vorrei provare a soffermarmi su 2 progetti che mi interessano e provare a confrontarli. Si tratta del framework Ruby on Rails e del content management system Drupal.
Potrebbe sembrare una comparazione tra zucchine e carote, ma secondo me, ci sono degli elementi interessanti che potrebbero migliorare entrambi i progetti.

Breve descrizione

Ruby on Rails: framework "magico" ed espressivo, basato sul linguaggio Ruby, che astrae SQL, ha la libreria javascript Scriptacolous incorporata, è strutturato secondo il pattern Model View Controller (MVC) ed è estensibile tramite plugin

Drupal: cms modulare, maturo, documentato, che si può estendere facilmente tramite i moduli che rendono subito disponibili  tantissime funzionalità.

Tipo di pubblico e filosofia

R: Malgrado gli scaffold permettano di creare facilmente una tabella e l'interfaccia per leggerci e scriverci, Rails rimane (e rimarrà) un framework, quindi riservato ai programmatori.
La filosofia principale è DRY (Do not repeat yourself) e pulizia, quindi scrivere solo lo stretto necessario nel posto giusto (nelle view solo html, nei modelli il controllo dei dati, nei controller l'interazione) e riusare il più possibile il codice che si è scritto. Implementare solo lo stretto necessario e mantenere la configurazione via web essenziale, semmai raffinarla incrementalmente.

D: Essendo un cms che fornisce una web GUI per l'installazione e delle API, si può dire che è adatto a tutti. Anche se per  personalizzazioni particolari bisognerà almeno capire qualche linea di PHP.
In Drupal, tutto è possibile, perché è un CMS flessibile, tags, forum, blog,.. basta implementare (o scaricare) un modulo, attivarlo e a volte configurarlo.

Plugin e moduli

R: I plugin aggiungono delle funzionalità al framework e possono essere scaricati, installati, sincronizzati con un comando (vedi script/plugin help)
Più che aggiungere delle funzionalità complete, offrono dei widget(es Google Maps) da richiamare nella propria applicazione o estendono i metodi disponibili per un modello(es tagging).

D: I moduli implementano degli hook, per esempio hook_cron, per azioni da eseguire a scadenze regolari o hook_perm per riservare delle azioni solo a certi tipi di utente. In questo modo ogni modulo si interfaccia col cms e fornisce le sue funzionalità integrate col sistema.

Localizzazione

R: Malgrado Ruby on Rails sia stato fatto da un non anglofono, non c'é nessuna indicazione mainstream per localizzare un'applicazione Rails. Comunque se volete localizzare la vostra interfaccia e i vostri contenuti potete usare il plugin Globalize
D: l'interfaccia è localizzata dal modulo ufficiale locale, mentre per i contenuti anche qui ci sono diverse soluzioni.

Supporto e coerenza

R: Ruby on Rails non vuole inventare la ruota e malgrado sia possibile fare un "blog" in 15 minuti, usa un scm fatto in python e un forum in PHP, quindi è un framework semplice e veloce, ma fino a un certo punto.. occhio alla propaganda.
I principali hosting supportano Ruby/Rails, ma non tutti.
C'é un sito che riguarda Rails in italiano, ma visto che è un po' vuoto seguite quello su Ruby.

D: La quantità e la qualità dei moduli di Drupal coprono davvero tante esigenze, basta vedere il sito di Drupal quanti servizi offre.
PHP5 è supportato, ma gli hosting sono restii a migrarci.
Ci sono 2 siti che trattano di Drupal in italiano, ma questo dovrebbe essere più ufficiale.

Critiche

R: Una critica che si sente spesso è la mancanza di un sistema di localizzazione predefinito, come già detto ci sono diversi modi per farlo, ma nessuno ufficiale.
I plugin sono frammentati e non sono molto flessibili, dopo Rails-engines sarà la volta di Plugems?

D: Può fare tante cose, ma non è ancora all'altezza del blog Wordpress, dell'ecommerce OSCommerce, del forum PhpBB,..
C'é troppo da configurare e scompattare, purtroppo la flessibilità e la gestione di molti moduli ha questo inconveniente.

Marketing

R: Malgrado la giovinezza di Rails, il marketing che c'é dietro è molto forte. In una libreria generalista è arrivato prima il libro in italiano di Rails che non quello di Ruby o Python.
Poi fanno RailsConf ovunque, anche in Italia.

D: C'é la drupalcon e un libro (non disponibile in italiano).

Best Practises

R:http://rails100.pbwiki.com/
D:http://www.drupalsites.net/weblink/most-voted-links

Conclusioni

Non c'é un vincitore e tutto dipende da quello che volete fare.. Potete costruire una casa con ponteggi regolabili, impalcature e cemento o farvi scaricare da una gru dei prefabbricati e decorare quelli.

R: Se volete fare un sito su misura, essenziale, strutturato e volete controllare con facilità html, modelli propri e relazioni tra tabelle, usate Ruby on Rails.

D: Se volete un sito che funzioni fin da subito, che possa diventare facilmente un blog, forum, galleria immagini, e che si possa estendere appoggiandosi a delle fondamenta collaudate (autenticazione, gestione permessi,..), scegliete Drupal.