Personal tools

June

Jun 15, 2010

Plone: ti vedo e non ti vedo

Filed Under:

Quando si porta in Plone di un portale esistente, chi lo gestisce e chi lo popola di contenuti notano sempre la differenza in meglio. Ma cosa si può fare perché chi usa il portale non si accorga del cambiamento?

C'è ancora chi crede che un sito Plone si riconosca a prima vista: può essere, se parliamo di installazioni "out of the box" o comunque se si decide di restare nelle skin più classiche. Ma certamente non è un principio generale: la flessibilità di Plone è testimoniata non tanto dalla possibilità di impostazioni grafiche complesse e innovative, quanto dalla sua possibilità di mimetizzarsi completamente in un layout grafico preesistente.

Due casi di studio, entrambi provenienti dall'ambito della Regione Emilia Romagna, dimostrano questa flessibilità con particolare evidenza:

  • Nel sito "Io Partecipo" / "Uno x uno", che propone una soluzione mista Plone / non Plone, l'integrazione trasparente di Plone è stata ottenuta grazie a Deliverance (diversi dei nostri tecnici hanno parlato di questa soluzione nelle loro presentazioni: Massimo, Stefano, e nel nostro blog). Deliverance consente di ridistribuire gli elementi grafici di uno o più layout esistenti, assemblandoli in modo differente e - se necessario - armonizzandoli dal punto di vista grafico. Nel caso di "Io partecipo", tutti gli elementi del layout grafico sono riproposti direttamente da un preesistente sito, salvo la colonna di sinistra (notizie, commenti, argomenti) che è invece tratta da un sito plone ad hoc. Ciò ha consentito di mantenere inalterata l'originaria infrastruttura, pur offrendo ai redattori i vantaggi di Plone per la redazione delle informazioni modificate più di frequente.
  • Invece, nel caso di Ermes, il portale della Regione Emilia Romagna, gli utenti non si sono accorti di nulla nonostante l'intero portale sia stato interamente reingegnerizzato in Plone. In questo caso, Plone è stato meticolosamente personalizzato in modo molto granulare, per caratterizzare ogni elemento visibile secondo i tematismi grafici e la struttura del portale originale: la buona riuscita dell'operazione può essere testimoniata da chiunque abbia usato Ermes negli ultimi mesi - a parte la differente struttura degli URL, nulla denuncia il cambiamento di tecnologia. Altrettanto rimarchevole il fatto che, sebbene l'originale implementazione fosse in HTML statico e quindi particolarmente leggera, i tempi di caricamento delle pagine in Plone sono immutati: insomma, l'enorme vantaggio di una gestione dei contenuti immediata e "through the web" non si paga in termini di prestazioni. Tra l'altro, a differenza della precedente implementazione statica, il portale Plone sarà agevolmente adattabile ad altri media palmari (ipad/iphone/smartphone in genere).

In conclusione, le ragioni per non rinunciare alla veste grafica "storica" di un portale sono molteplici, soprattutto legati all'elevato numero di utenti abituali, e bisogna trasformare questa esigenza in un'opportunità. Il fatto che Plone lo consenta è importante per molti validi motivi:

  • dimostra la flessibilità della tecnologia
  • abbatte un ostacolo spesso insormontabile: la paura del cambiamento; L'alibi "Ma i nostri utenti sono abituati a vedere le cose in questo modo!" si dissolve con un "E così continueranno a vederle!";
  • preserva gli investimenti passati: se il progetto di comunicazione su cui è disegnato il portale è valido, può avere senso mantenerlo anche al variare della tecnologia.

Imparare a configurare ZopeSkel rende l'Azienda più felice

Filed Under:

Già da qualche versione, ZopeSkel offre una serie di opzioni aggiuntive che sono purtroppo mal documentate nella pagina ufficiale del pacchetto. Ecco come usarle e configurarle per la propria comodità e per aumentare l'omogeneità dei rilasci della propria azienda!

Prima di tutto: usi ZopeSkel... vero?

La frase "non uso ZopeSkel perché sono abituato a fare le cose a mano" non è una scusa valida!

Personalmente uso ZopeSkel solo per la creazione iniziale dell'egg, poi non mi addentro mai molto nell'uso dei "paster subcommands" (ma non sempre... creare nuovi contenuti per Archetype è comodissimo), ma quello è sufficiente. Usare ZopeSkel per generare lo scheletro dei propri egg significa seguire la convenzione e lo standard!

Non mi addentro ulteriormente sull'argomento... se non usi ZopeSkel e sei incuriosito puoi leggere l'ottimo articolo che trovi su plone.it.

Le novità nascoste

Prima di tutto verifica di avere disponibile l'ultima versione (al tempo in cui scrivo siamo alla 2.17):

keul@redturtle:~$ sudo easy_install -U ZopeSkel

Notate innanzi tutto che il vostro sistema ha ora disponibile un secondo comando oltre al già conosciuto paster (hai letto l'articolo sopra, vero?). Il nuovo script è zopeskel.

Cosa fa? A cosa serve? E' principalmente una forma semplificata del primo script... diciamo un "paster for dummies", ma la vera comodità e fulcro di questo articolo è la possibilità di creare tramite lo script zopeskel un file di configurazione con alcune preferenze di default.
Possiamo finalmente usare paster e premere molte più volte "invio" (accettando la risposta predefinita) di quanto non venisse fatto fin'ora.

Lanciando la guida di zopeskel otteniamo questo:

keul@redturtle:~$ zopeskel --help
...
You can generate a starter .zopeskel file by running this script with
the --make-config-file option. This output can be redirected into
your ``.zopeskel`` file::

    bin/zopeskel --make-config-file > /path/to/home/.zopeskel
...

In pratica, nella nostra home possiamo ospitare un file con nome ".zopeskel" con alcune configurazioni predefinite e zopeskel stesso ci permette di generarne uno di esempio, con una sintassi valida, da personalizzare poi.

keul@redturtle:~$ zopeskel --make-config-file > ~/.zopeskel

Le opzioni non sono poche e forse un tantino esagerate. Potreste ad esempio avere configurazioni diverse a seconda del tipo di comando paster che state usando...
Io rimango per un uso semplice!

# This file can contain preferences for zopeskel.
# To do so, uncomment the lines that look like:
#    variable_name = Default Value

[DEFAULT]

expert_mode = all
version = 0.1.0
author = RedTurtle Technology
author_email = sviluppoplone@redturtle.net

[archetype]

# Expert Mode? (What question mode would you like? (easy/expert/all)?)
# expert_mode = easy
...

La sezione [DEFAULT] sarebbe solitamente vuota ma avete esempi completi in tutte le altre sezioni (una per ogni tipo di template paster disponibile) anche se tutte commentate.

Se come me volete configurare solo la sezione [DEFAULT], usate qualche copia incolla!

Quella postata qui sopra è esattamente la mia configurazione, che vado ad analizzare.

  • expert_mode. E' un'opzione piuttosto nuova e il default sarebbe "easy"; è interessante perché permette di porre all'utente "meno domande"... ma visto che fingo di essere uno smanettone, preferisco che mi venga chiesto "tutto".
    Scherzi a parte, alcune delle domande che vengono saltate le trovavo invece importanti.
  • version. La versione del prodotto. Il default è 1.0, ma personalmente preferisco 0.1.0, ben considerando che paster viene usato alla creazione... è molto probabile che la prima release del vostro super prodotto non sia tanto super... e che sia di qualità alpha o beta.
  • author. Nel mio sistema, a lavoro, è normale che il codice sviluppato sia della mia Azienda. Niente più scrittura a mano del nome dell'Azienda e niente più differenze tra me e il mio collega.
  • email. Di nuovo convenzione (un unico indirizzo aziendale per lo sviluppo plone)... ma potrei specificare la mia email personale!

Teniamo comunque presente che questi valori sono solo i default. La gestione dell'eccezione è sempre possibile (non diventate troppo pigri ... potete sempre cancellare la risposta che paster sta proponendo e scrivere da capo... come poi avrete fatto fin'ora!).

Un file .zopeskel in ogni azienda

Perché no? Pensare che ogni sistema per sviluppatori all'interno di un'azienda abbia questa configurazione porta uniformità al rilascio di codice alla comunità. Non sto ovviamente parlando delle prime opzioni che abbiamo illustrato, che sono più che altro preferenze davvero personali.

Potrebbe non essere il vostro caso, magari la Vostra Azienda preferisce mantenere come autore lo sviluppatore stesso (oppure mettere sempre come autore il nome del capo programmatore che vive sulle vostre spalle e che vi ruba la fama). Altre magari vorranno che tutto il codice risulti fatto dall'Azienda, ma potrebbe voler mantenere la Vostra e-mail (così che siate voi ad essere disturbati in caso di problemi).

Questo, come dicevo è come il mio sistema è configurato qui in RedTurtle... a casa mia ho un PC che ogni tanto uso per i miei personali progetti Plone. Ovviamente anche là uso paster ma in una configurazione diversa!

Provate anche voi. E' comodo...

Jun 09, 2010

Expensive security check in constraintypes

Filed Under:

If you are using Plone 3.3 or older you are probably suffering an expensive security check when creating an Archetype. It can be EASILY fix.

In one of our projects we are still using Plone 3.1.x. with a pack of customer specific content_types and some additional PAS plugins (Lotus). I have noticed recently that calling invokeFactory become VERY slow. After debugging we have found the problem - getDefaultAddableTypes - method that is provided by constraintypes.py (ATContentTypes package). Original implementation is more then 4 years old. What it does - it checks isConstructionAllowed for every content_type register in portal_types. If you have registered them more then 40 ;-) ...

In most of the cases folderish types are filtering allowed_types. Thanks to Vincent we have now a nice fix:

Modified lib/constraintypes.py:getDefaultAddableTypes method to check isConstructionAllowed only for allowed types, not for all content types in portal_types. isConstructionAllowed was called twice for each types.

This fix is in ATContentTypes version 1.3 and started to be used by Plone 3.3.1. For us it was a good argument to upgrade!

Jun 04, 2010

La Comunità (secondo matt hamilton)

Filed Under:

Questo è esattamente quello cui penso quando penso alla comunità Plone

Appunti dall'European Plone Symposium 2010

Filed Under:

l'evento

Dal 26 al 27 maggio 2010 si  tenuto, nella bellissima cornice sorrentina, l'European Plone Symposium 2010. L'evento, organizzato da Abstract,  è ormai un appuntamento fisso per la comunità Plone.

Organizzato in contemporanea con il Plone Symposium East 2010 (Pennsylvania, US), l'evento si è aperto con l'intervento di Geir Bækholt di Jarn per fare il punto sulle novità dell'ormai imminente Plone 4. Siamo ormai alla beta 3 e l'enfasi è stata posta sui tanti miglioramenti anche dal punto di vista dell'interfaccia e delle prestazioni.

Lo sforzo degli sviluppatori, anche dei Tune-Up, compreso il 31-esimo TuneUp che si è svolto durante lo sprint di venerdì 28 maggio, è volto a chiudere gli ultimi ticket per poter rilasciare la prima versione stabile di Plone 4.

Plone 4

La versione 4 può essere considerata una versione di transizione, sia per gli sviluppatori che per gli utenti "finali", a Plone 5, dove, si vedrà all'opera Deco, l'innovativo sistema di composizione "a tasselli" dei contenuti.
Inoltre Geir ha parlato già di alcune delle novità che ci aspettano in Plone 4.1:

I Talk

Matt Hamilton

Matt ha rassicurato Rok Garbas sulla presenza a Bristol di spazi per lo skateboard :)

Nel primo intervento, rivolgendosi soprattutto agli integratori, ha discusso di un approccio interessante e forse non così praticato come si potrebbe pensare. L'idea è che quando ci si trova di fronte alla necessità di dover integrare un prodotto con nuove funzionalità si cerca sempre di non alterare il prodotto originale per mantenere la possibilità di aggiornarlo.

Per raggiungere questo obiettivo in alcune situazioni, se il codice del prodotto originale lo consente, è possibile sftuttare gli eventi. L'idea è semplice: basta registrare il codice da eseguire quando si scantena l'evento e il gioco è fatto. Matt ha portato un esempio di plone.app.discussion a cui ha dovuto aggiungere una funzionalità antispam e la modifica fatta a GetPaid (il modulo usato per la gestione di sistemi di e-commerce) per la gestione delle registrazioni al sito della Plone Conference 2010.

L'altro intervento di Matt è stato dedicato alla conferenza organizzata dallo stesso Matt e da Netsight a Bristol (UK).
Matt ha sottolineato che, a parte il fatto che probabilmente non ci sarà lo stesso cibo "faboulus" dell'Hotel Mediterraneo, l'attenzione dell'organizzazione sarà concentrata su molti aspetti, dalla rete affidabile e veloce, agli alloggi per i partecipanti. Inoltre il terzo giorno della conferenza sarà impostato in modalità barcamp come già fatto per Budapest.

Rok Garbas ha presentato 2 argomenti interessanti.

Durante l'intervento dedicato a Transmogrifier ho potuto trovare conferma dei grandi passi in avanti fatti da questo sistema nell'ultimo anno.

L'idea di base è semplice ma molto efficace e realizzata con un codice veramente ben fatto: l'idea è di avere un meccanismo per importare contenuti in Plone. Si tratta di configurare le varie fasi (pipeline) dove, in ognuna, viene fatta una operazione sui dati. Esistono varie moduli che sono già stati realizzati e pacchettizzati per poter gestire alcuni casi tipici (dalla gestione dei CSV, al crawler dei siti da cui è possibile parsare l'html).

Nell'altro intervento Rok ha presentato Deliverance. In questo intervento introduttivo si è potuto toccare con mano l'idea che sta alla base del sistema: fare in modo che i designer Web, che hanno esperienza con l'uso di HTML e CSS, possano fare temi per Plone senza dover per forza imparare tutti i segreti del theming di Plone; argomento che sulle prime prime può mettere un po' in crisi gli aspiranti designer Plone. Rok ha anche passato in rassegna le differenze tra la sintassi di Deliverance e XDV. L'idea di Rok, e portata avanti anche durante lo Sprint dei giorni successivi è quella di trovare una sintassi comune per le funzioni più usate dai 2 sistemi.

...e ancora..

Interessanti anche gli altri interventi dedicati ai casi di studio:

  • Simone Deponti ha presentato il caso di studio per la gestione di un importante sistema di E-Commerce
  • Roel Bruggink & Rob Gietema hanno presentato il caso di studio Humanitas.

Entrambi hanno dimostrato quanto si possa fare con Plone.

Un'ultima considerazione finale.

Ormai seguo gli eventi Plone "ufficiali" da 5 anni (il primo "vero" evento Plone a cui ho partecipato è stata la Plone conference di Vienna del 2005) e durante questo Simposio ho trovato conferma di quanto ho osservato già a Budapest l'anno scorso: l'intera comunità si è evoluta ed è maturata nel corso di questi anni. Questo si può "dedurre" da vari segnali: dal piano a lungo termine di Plone, dallo spessore dei vari talk, ai casi di successo sempre più importanti e significativi, alla intergrazione con altri framework Python based (e non solo) e, perchè no, anche alla crescita professionale della comunità italiana.

Arrivederci a Bristol!