airtlab.dii.univpm.itairtlab.dii.univpm.it/en/system/files/thesis/grasso-gianluc… · Web...
-
Upload
truongkien -
Category
Documents
-
view
222 -
download
1
Transcript of airtlab.dii.univpm.itairtlab.dii.univpm.it/en/system/files/thesis/grasso-gianluc… · Web...
Università Politecnica Delle
MarcheFacoltà di Ingegneria
Corso di Laurea in Ingegneria Informatica e dell’Automazione
Tesi di laurea
“Content Management System” a sorgente aperto per la gestione di grandi portali WEB: studio di un portale di supporto ad un
progetto di ricerca di interesse nazionale
INDICE
Introduzione ……………………………………………………………………. 51. Cenni storici ed approfondimenti………………………………………………. 8
1.1 La nascita di Internet ……………………………………………… 101.2 Il World Wide Web e l’ipertesto ………………………………….. 141.3 Il successo di Internet e del WWW ……………………………….. 191.4 Linguaggi per il Web ed Accessibilità …………………………….. 201.5 Dalle pagine statiche a quelle dinamiche ………………………….. 241.6 Oltre le pagine dinamiche………………………………………….. 291.7 Verso il Web 2.0 …………………………………………………… 31
2. Content Management Systems …………………………………………………. 342.1 Il Content Management ………………………………………………. 36
2.1.1 Definizioni …………………………………………………. 362.1.2 Contenuto, dati e informazione ………..…………………… 372.1.3 I metadati per l’incapsulamento del contenuto ……………. 382.1.4 Aspetti principali del CM ………………………………….. 39
2.1.4.1 Concurrent Management ………………………… 412.1.4.2 Revision Control …………………………………. 422.1.4.3 Deployment ………………………………………. 432.1.4.4 Workflow ………………………………………… 43
2.1.5 Evoluzione del CM ………………………………………… 442.2 Architettura di un Content Management System …………………….. 45
2.2.1 Importazione del contenuto ………………………………… 452.2.2 Gestione del contenuto …………………………………….. 462.2.3 Flusso di lavoro …………………………………………….. 472.2.4 Pubblicazione dei contenuti ………………………………... 47
2.3 Categorie di Content Management Systems ………………………….. 482.3.1 Web Content Management Systems ……………………….. 482.3.2 Document Management System …………………………… 492.3.3 Digital Asset Management System ………………………… 492.3.4 Learning Content Management Systems …………………… 502.3.5 Enterprise Content Management Systems ………………….. 50
2.4 Content Management Systems Open Source …………………………. 512.4.1 La filosofia del Software Libero …………………………… 51
2.4.1.1 Le libertà del Free Software ……………………… 522.4.1.2 Le Licenze nel Free Software …………………….. 532.4.1.3 Il movimento Open Source ………………………. 55
2.4.2 I vantaggi del Free Software e dell’Open Source ….……… 572.4.3 CMS Open Source, pro e contro ……….………………….. 602.4.4 Confronto tra alcune implementazioni …………………….. 64
2.4.4.1 Cofax ……………………………………………….. 642.4.4.2 Midgard …………………………………………….. 652.4.4.3 OpenCMS ………………………………………….. 662.4.4.4 Zope ………………………………………………… 67
2.5 Scelta di un CMS Open Source …………………………….. 69
3. CMS Open Source per grandi portali …………………………………………. 713.1 Introduzione a Plone ……………………………………………… 713.2 Zope Application Server ………………………………………….. 72
3.2.1 Caratteristiche e vantaggi di Zope ………………………… 733.2.2 Architettura di Zope ………………………………………. 76
3.2.2.1 Orientamento agli oggetti ………………………... 763.2.2.2 Pubblicazione degli oggetti ……………………… 763.2.2.3 Gestione via web ………………………………… 783.2.2.4 Sicurezza e deleghe ……………………………… 793.2.2.5 Persistenza nativa degli oggetti e transazioni …… 803.2.2.6 Acquisizione ……………………………………... 813.2.2.7 Estendibilità ……………………………………… 81
3.3 Componenti fondamentali di Zope ……………………………….. 823.4 I linguaggi di Zope ……………………………………………….. 84
3.4.1 DTML ……………………………………………………... 843.4.2 Zope Page Template ………………………………………. 853.4.3 Python …………………………………………………….. 87
3.5 Il Content Management Framework di Zope ……………………… 893.6 Plone Content Management Framework ………………………….. 89
4. Progetto di un portale basato sul CMS Plone …………………………………. 924.1 Il progetto di ricerca DiCSI ……………………………………….. 93
4.1.1 Necessità di un portale web ……………………………….. 944.1.2 Obiettivi e requisiti del portale ……………………………. 95
4.2 Implementazione del portale ……………………………………… 974.2.1 Installazione di Zope/Plone ……………………………….. 974.2.2 Accesso all’interfaccia di gestione di Zope ……………….. 1004.2.3 Creazione del portale DiCSI ………………………………. 1034.2.4 Personalizzazione della grafica ……………………………. 1054.2.5 Implementazione delle sezioni …………………………….. 1074.2.6 Applicazione delle restrizioni ……………………………… 1094.2.7 Aggiunta degli utenti e definizione dei ruoli ………………. 110
4.3 Funzionamento del portale ………………………………………… 1114.3.1 Accesso al portale ………………………………………….. 1114.3.2 Principi di funzionamento di Plone ………………………… 1134.3.3 Tipi di contenuto …………………………………………… 1164.3.4 Stato degli oggetti e flusso di lavoro ………………………. 120
5. Considerazioni finali ……………………………………………………………. 122
Bibliografia e Webgrafia
Introduzione
L’avvento del World Wide Web ha modificato radicalmente il mondo dell’informatica
e delle telecomunicazioni, permettendo lo sviluppo di tecnologie sempre più avanzate di
supporto alle nuove classi di ambienti applicativi che via via sono venute a crearsi.
Se si pensa, ad esempio, all’avvento dell’era “dot-com” 1 (punto-com) iniziata grazie alla
massificazione dello strumento informativo Internet (dovuta al successo dei protocolli aperti
TCP-IP e alla semplicità del linguaggio Html), ci si rende conto di quanto gli strumenti
informatici si siano raffinati ed evoluti al fine di rendere il servizio offerto efficace ed
accessibile a qualsiasi tipo di utilizzatore.
Il caso di studio che si vuole affrontare, introducendo in seguito tematiche sempre più
specifiche, è quello della gestione di contenuti e portali Web attraverso i ben noti CMS
(acronimo per Content Management System - letteralmente “Sistemi di gestione dei
contenuti”). Suddetto caso di studio si rivela interessante da un punto di vista applicativo in
quanto si interfaccia perfettamente con il grado di affidabilità e di efficienza raggiunto da
talune applicazioni informatiche della “nuova era”, come la gestione dinamica dei contenuti
che ha permesso di superare di gran lunga le difficoltà di gestione di quelli che possono essere
considerati i primordi del web: i siti statici.
E’ facile immaginare che i siti di oggi siano molto diversi da quelli dei primi anni del
web. Si è abituati ad una continua evoluzione dell’informatica, di Internet e della telematica e,
quindi, senza conoscerne esattamente il percorso, è evidente che ciò che si vedeva dieci anni
fa è decisamente diverso da ciò che oggi è considerato normale.
Nei primi anni del web i siti erano collezioni di pagine statiche tenute assieme da link
incrociati e realizzate da programmatori che adoperavano le prime versioni dell’Html, il
primo linguaggio di produzione di siti web. Per capire che cosa si intenda per sito statico
basta ricordare come avveniva (ma avviene tutt’oggi per determinate esigenze) la messa in
opera di un sito web.
1 termine con il quale si fa riferimento all’esplosione di siti di aziende commerciali che poi hanno dato vita ad attività di commercio on-line grazie al WWW e ai server sicuri.
5
Introduzione
I siti erano creati sulla base di un progetto iniziale e revisionati periodicamente da chi li aveva
realizzati. L’evoluzione di un sito era fondamentalmente in mano allo sviluppatore che
l’aveva inizialmente progettato. Le pagine erano preparate una ad una ed allo stesso modo
modificate, in caso di necessità. Ad esempio per una azienda che utilizzava internet come
vetrina di presentazione dei propri prodotti, eventuali modifiche, date da necessità di vario
tipo, erano formalizzate dagli uffici di Marketing e comunicate agli sviluppatori che
personalmente intervenivano sulle pagine. Quindi la realizzazione di una vetrina significava
dover produrre singolarmente ogni pagina relativa ai prodotti e doverla modificare
individualmente e manualmente ogni volta che si necessitava di una variazione al listino.
Un deciso passo avanti fu l’avvento del sito dinamico. Il concetto chiave è quello di avere una
struttura grafica fissa riempita automaticamente da contenuti letti da un certo data base. Le
pagine, sviluppate con linguaggi appositi, erano, e lo sono ancora, create al volo fondendo una
parte fissa (il layout grafico comprendente i menu, i link principali, etc.) con quella prelevata
da un database a seconda della sezione da mostrare. Il vantaggio principale per lo sviluppatore
si manifesta in una riduzione del carico di lavoro quando si deve presentare una grande mole
di informazioni. Nel caso di un listino prezzi per i prodotti di una azienda generica, ad
esempio, una scheda con struttura fissa può essere riempita di volta in volta in modo
automatico con i dati di ogni prodotto provenienti da un data base, dando al visitatore una
sensazione di disponibilità di migliaia di pagine.
I vantaggi rispetto al primo approccio sono in primo luogo una manutenzione più semplice,
dovuta ad un minor numero di pagine effettive da sviluppare, e la possibilità di modificare i
contenuti senza dover modificare materialmente tutte le pagine che li presentano. Tipici
sistemi dinamici sono i portali, i siti vetrina di aziende con molti prodotti/servizi, i motori di
ricerca.
I Content Management System sono derivati anch’essi dalle potenzialità offerte dal concetto
di creazione dinamica dei contenuti. Sono applicazioni in grado di variare le pagine di un sito
senza intervenire direttamente sul codice HTML o sul database da cui sono estrapolate.
Come per i siti dinamici in genere anche per i CMS il vantaggio è che una volta creata la
6
Introduzione
struttura che fornisce dinamicamente le pagine, i contenuti possono essere inseriti e variati
senza conoscenze tecniche di sviluppo. Tornando all’esempio di un sito aziendale, il
responsabile di Marketing può intervenire in prima persona inserendo news o variando le
promozioni senza necessità alcuna di comunicare al personale tecnico le modifiche da
effettuare. La Direzione Commerciale può modificare in blocco i listini senza che debbano
essere variate le centinaia di pagine che mostrano i singoli prodotti. Ovviamente questi sono
esempi che mostrano una piccola percentuale dell’enorme ventaglio di possibilità offerto dai
CMS che, nell’arco di pochi anni, si sono ben affermati, consolidati e specializzati in svariati
campi di applicazione.
Nella trattazione si andranno a rivedere i campi di applicazione, i motivi dell’enorme
diffusione e si analizzeranno le differenze fondamentali di alcune affermate implementazioni
di CMS, focalizzando l’attenzione su quelli Open Source che rientrano nell’ottica della
distribuzione aperta dei sorgenti atta a cercare sempre nuovi stimoli dalla comunità degli
sviluppatori del settore e al contempo in grado di garantire il mantenimento di uno strumento
software nel tempo. Si cercheranno di capire i punti di forza e le debolezze di questi strumenti
software, dando uno sguardo agli strumenti che li implementano per conoscere quali
potenzialità possono offrire. Infine, dopo una scelta ragionata, si vedrà un esempio di
personalizzazione di un CMS Open Source utilizzato per la messa in opera di un portale per la
pubblicazione di informazioni riguardo ad un progetto di ricerca nazionale.
Nel primo capitolo si andrà brevemente a cercare a ritroso nella storia della telematica per
capire come dalla nascita del Web si è giunti ai CMS. Nel secondo capitolo si tratterà in
dettaglio cosa si intende per Sistema di gestione dei contenuti: introducendone la storia
saranno mostrate le possibilità offerte attualmente e descritte le parti essenziali della messa in
opera di questo strumento software. Successivamente si analizzerà il caso di studio affrontato
in questa tesi, ovvero come utilizzare un CMS a sorgente aperto allo scopo di istituire un
portale web dedicato ad un progetto di ricerca.
7
1. Cenni storici ed approfondimenti
Internet è oggigiorno una rete di portata mondiale ma inizialmente era nata come
strumento di comunicazione stabile ed efficiente per collegare tra loro le sedi delle forze
armate statunitensi, le università e i centri di ricerca che lavoravano a progetti per applicazioni
di natura militare. Col passare del tempo grazie agli sforzi in ambito universitario è diventata
una rete prettamente universitaria e oggi, grazie alle facilitazioni delle interfacce grafiche, è
uno strumento di informazione di massa idoneo a divulgare notizie e vendere prodotti e
servizi on-line. Infatti chiunque disponga di un personal computer e di un modem può
facilmente entrare in rete e utilizzare i motori di ricerca per cercare qualsiasi tipo di
informazione. In Internet è possibile trovare una fonte d’informazioni talmente ampia e
variegata che può portare innumerevoli benefici in svariati campi, come nel lavoro o nello
studio se ben utilizzata.
Lo sviluppo tecnologico di tale risorsa non si è mai fermato nel corso degli anni anzi
ha visto nascere sempre nuove forme di fruizione delle informazioni come ad esempio è
successo per i dispositivi cellulari o palmari, sui quali c’è ancora molto da lavorare per
consentire una navigazione paragonabile ai Personal Computer. Internet ha cambiato modi e
costumi di molte persone, consentendo di avere rapidamente informazioni e notizie di
qualunque tipologia e in qualunque campo. Grazie alla sua rapida espansione e popolarità è
divenuta essenziale in certi ambiti lavorativi nei quali la diffusione e la pubblicazione rapida
di informazioni è fondamentale. Ci sono eventi che vengono trasmessi esclusivamente
attraverso Internet che consente di accedere in tempo reale alle informazioni, situazione che
finora era possibile solo attraverso la televisione o la radio.
Ed è proprio nella gestione rapida dell’informazione che i CMS si propongono
principalmente come strumenti organizzativi per tutte le applicazioni che hanno come
obiettivo comune la fruizione delle informazioni attraverso la Rete.
8
1. Cenni storici ed approfondimenti
Oggi, dopo la grande affermazione e specializzazione dei CMS, sarebbe limitante
parlare dei CMS come semplici sistemi organizzativi. Certamente, come il nome stesso
comunica, il loro ruolo fondamentale è questo ma si vedrà come sono nati, si sono evoluti e
specializzati per capire cosa offrono attualmente con quali limiti ed agevolazioni. Prima di
farlo si introdurrà la storia di Internet e del World Wide Web, la situazione attuale della Rete
e gli sviluppi futuri prospettati per questo importante mezzo di comunicazione che vede uno
sviluppo senza termine dovuto all’enorme interesse suscitato in ambito universitario ed
aziendale a livello globale.
9
1. Cenni storici ed approfondimenti La nascita di Internet
1.1 La nascita di Internet
Come già accennato Internet nasce dalla ricerca in campo militare e la prima
apparizione rudimentale è datata 1969, in piena guerra fredda, quando il Ministero della
Difesa Statunitense istituì l’ ARPA1, un’agenzia preposta allo sviluppo di una rete che potesse
reggere al bombardamento nucleare, garantendo continuità di comunicazione tra località
diverse. Il progetto coinvolse centri di ricerca, università e aziende, tutti collegati all’attività
militare e dotati di computer che all’epoca costituivano quanto di più moderno la tecnologia
informatica americana potesse offrire. Contestualmente i Bell Laboratories (famoso centro di
ricerca americano di proprietà di AT&T) stavano lavorando allo sviluppo del sistema
operativo Unix, che sarebbe diventato uno standard per il mondo accademico e della ricerca e
anche per molte applicazioni militari. L’unione di questi filoni avrebbe portato a quello che
oggi è Internet, ma il percorso è costellato di alcuni eventi determinanti.
Il primo appalto per la costruzione della rete fu concesso a una società chiamata Bolt,
Beranak and Newman (BBN) che collegò quattro università diverse: Stanford University,
UCLA (University of California at Los Angeles), UCSB (Univesity of California at Santa
Barbara) e la University of Utah, usando linee telefoniche e installò in ciascuna di queste un
IMP (Information Message Processor), vale a dire un particolare computer che gestiva il
traffico in rete. L’ IMP fungeva da intermediario tra linee di connessione e mainframe, i
grandi elaboratori centralizzati su cui all’epoca residevano tutte le informazioni e tutti i
programmi. L’impianto divenne attivo il 2 settembre 1969 e così nacque Arpanet. Tutto il
traffico che viaggiava su queste connessioni non era confidenziale e serviva prevalentemente
a titolo di ricerca e sperimentazione. All’epoca i sistemi per trasmettere messaggi da una
località all’altra non erano molto efficaci e il primo obiettivo dei ricercatori fu proprio quello
di trovare soluzioni funzionali per convogliare i pacchetti su Arpanet.
1 Advanced Research Project Agency
10
1. Cenni storici ed approfondimenti La nascita di Internet
Decisero di adottare un modello il cui sviluppo era già iniziato in Europa (per opera del
National Physics Lab inglese e della Sociètè Internationale de Tèlècommunications
Aeronatiques francese) e che sarebbe poi diventato comune in molti altri sistemi di
comunicazione: la commutazione di pacchetto. Mediante questa tecnica, i messaggi e le
informazioni vengono suddivisi in pacchetti di lunghezza fissa e ogni singolo pacchetto
diventa un’entità a se stante, capace di viaggiare sulla rete in modo completamente autonomo
perchè dotata al proprio interno dell’indirizzo sia di provenienza sia di destinazione.
Non è importante che tutti i pacchetti che compongono un determinato messaggio rimangano
uniti durante il percorso e non è nemmeno indispensabile che arrivino nella sequenza giusta.
Le informazioni che essi convogliano al proprio interno sono sufficienti per ricostruire, una
volta arrivati a destinazione, l’esatto messaggio originale, indipendentemente dal percorso
seguito da ciascuno dei suoi frammenti. Grazie a questo sistema si ottengono due benefici
immediati: qualunque sia lo stato della rete, il pacchetto può sempre trovare una via
alternativa per giungere alla propria destinazione (requisito utile per gli obiettivi militari e per
chiunque desideri avere un impianto il più possibile resistente ai guasti, anche a quelli
accidentali). Inoltre i vari pacchetti provenienti da fonti diverse possono essere convogliati
tutti assieme su una singola linea ad alta velocità anziché dover ricorrere a tante linee
separate, usate solo parzialmente. Si riesce in questo modo a condensare il traffico su una
linea collegata in permanenza che ripartisce dinamicamente la propria capienza tra i vari
computer collegati e che, in ogni caso, è quasi sempre attraversata da qualche tipo di traffico e
perciò giustifica il proprio costo. Se la linea venisse usata da una singola macchina o da poche
macchine, resterebbe quasi sempre inattiva visto che anche l’utente più veloce passa la
maggior parte del tempo a lavorare in locale (leggendo quello che gli è arrivato dalla rete o
preparando una risposta) e solo molto sporadicamente trasmette o riceve qualcosa. In effetti
Internet usata con un modem su linea commutata, cioè la linea normale telefonica, non è
molto efficiente poiché esistono numerosi tempi morti dovuti al nostro personale modo di
lavorare e al ritardo di reazione dei server con cui chiediamo di collegarci.
11
1. Cenni storici ed approfondimenti La nascita di Internet
Il primo protocollo sviluppato per la commutazione di pacchetto su Arpanet si
chiamava NCP (Network Control Protocol), ma non era particolarmente efficiente. Col
passare del tempo i progettisti di Arpanet definirono un insieme di circa 100 protocolli per
regolare il trasferimento dei pacchetti e questo insieme si è evoluto in quella che noi oggi
conosciamo con il nome di Internet Protocol Suite: una raccolta di standard trasmissivi che
verte su due protocolli primari, il Transmission Control Protocol (TCP) e l’Internet Protocol
(IP), più molti altri secondari che consentono la comunicazione tra computer e reti molto
diverse.
La prima definizione di tali protocolli risale al 1973 e nel 1974 Vincent Cerf e Robert
Kahn ne stilarono le caratteristiche su un documento intitolato IEEE2 “Transactions on
Communications”. Quello stesso anno fu pubblicata la prima specifica per i protocolli da
utilizzare su Internet. Si dovette attendere fino al 1 gennaio 1983 per l’adozione ufficiale
dell’intera Internet Protocol Suite.
Tornando un attimo indietro nel tempo vediamo che il 1972 rappresentò un’altra tappa
importante: l’Università dello Utah realizzò un sistema per controllare un computer a distanza
su Arpanet e divenne possibile trasferire file da un computer all’altro per mezzo del
protocollo FTP (File Transfer Protocol). Combinando TCP/IP ed FTP si era giunti al
coronamento dell’obiettivo tecnologico di Arpanet: trasferire dati da un punto all’altro della
rete. Quel che ancora rimaneva da dimostrare era se i dati sarebbero potuti fluire tra due
macchine di tipo anche diverso, utilizzando i tipi più disparati di collegamento (incluso
l’etere). L’esperimento chiave in questo senso fu condotto nel 1978: un computer che
viaggiava a bordo di un camion su un’autostrada californiana inviò dati a un altro computer
che si trovava a Londra. Il camion era collegato via radio con un terzo computer in California,
il quale inoltrava le informazioni sulla rete, queste attraversavano l’intero continente
nordamericano su linee terrestri e infine superavano l’Atlantico per mezzo di una connessione
satellitare.
2 Institute of Electrical and Electronics Engineers - è l'associazione di categoria che riunisce tutti gli ingegneri americani e del mondo.
12
1. Cenni storici ed approfondimenti La nascita di Internet
Già nel 1980 Arpanet si trasformò in uno strumento vitale per le università e per i
centri di ricerca americani, che avevano un bisogno sempre maggiore di scambiare
informazioni e di coordinare le proprie attività. Nacque così la posta elettronica che si
affiancava al semplice trasferimento di file, che aveva costituito la prima applicazione di
Arpanet.
Nel 1983 Internet divenne a tutti gli effetti la rete delle reti, utilizzando Arpanet come
dorsale3. Tuttavia restavano ancora esclusi tutti quegli atenei che non avevano rapporti con il
Dipartimento della Difesa. Al fine di risolvere questo problema e di estendere l’accesso a tutti
gli interessati, il Dipartimento della Difesa creò una propria rete alternativa, detta Milnet, così
da non dover più dipendere esso stesso da Arpanet e da lasciare campo libero al mondo
accademico, mentre il governo americano istituì la National Science Foundation (NSF) con il
duplice scopo di fornire risorse di elaborazione alle università (mediante l’uso centralizzato di
supercomputer) e di favorire la crescita di un sistema di comunicazione veloce tra queste
ultime.
Nei primi anni Ottanta la Nsf costruì CSNET, una rete che univa le varie facoltà
d’informatica statunitensi; alla fine degli anni Ottanta costituì NSFNET con lo scopo
dichiarato di rimpiazzare Arpanet per mezzo di una rete dorsale alternativa. La transizione è
stata relativamente lunga e in effetti Arpanet è stata smantellata definitivamente solo nel
1990.
Nel 1991 il governo degli Stati Uniti ha emanato una legge, l’High Performance
Computing Act, che decretava la nascita della National Research and Education Network
(NREN - detta anche "autostrada elettronica") il cui scopo è quello di costituire reti ad alta
velocità che uniscano le varie università e i vari centri di ricerca americani, fornendo anche
l’infrastruttura per eventuali attività commerciali. Sempre quello stesso anno, il CERN
(Consiglio Europeo per la Ricerca Nucleare) poneva le basi per una nuova architettura capace
di semplificare enormemente la navigazione di Internet, il World Wide Web. Nel 1993 è stato
inventato il primo strumento grafico per esplorare Internet, Mosaic per X4.3 rete ad alta velocità che unisce tra loro altre reti locali.4 X-Windows System o X11 o semplicemente X, GUI per sistemi Unix-like.
13
1. Cenni storici ed approfondimenti La nascita di Internet
A partire dal 1994 il World Wide Web ha trasformato Internet in un fenomeno di
massa e oggi esistono numerose dorsali alternative a NSFNET che servono sia per aumentare
la quantità di traffico che può circolare su Internet sia per consentire la presenza di servizi
commerciali che sono vietati nel contesto accademico definito dalla National Science
Foundation.
1.2 Il World Wide Web e l’ipertesto
Nel 1945 Vannevar Bush5 in un articolo contenuto in “Atlantic Monthly” descrisse un
sistema chiamato Memex6 che doveva esser in grado di seguire collegamenti nei documenti
memorizzati su microfilm: fu la prima teorizzazione del concetto di ipertesto.
Più tardi negli anni ’60 Ted Nelson7 conia il termine Hypertext per la prima volta e nel ’67
Andy van Dam e altri programmano HES (Hypertext Editing System che implementava le
funzioni di ipertesto monodirezionale, girava sui mainframe IBM S/360) e FRESS
(File Retrieval and Editing System, primo sistema ipermediale, dava la possibilità di inserire
collegamenti ipertestuali e immagini oltre a fornire una funzione di undo e la possibilità di
inserire caratteri non occidentali e simboli).
5 Vannevar Bush fu il consigliere scientifico del presidente degli Stati Uniti F.D. Roosevelt durante la seconda guerra mondiale, che lo nominò direttore dell’Office of Scientific Research and Development. Durante la guerra quest’ufficio coordinò le attività di più di 6000 scienziati americani impegnati in tutte le applicazioni militari della scienza.6 Forse una contrazione di memory extender, o memory index.7 Theodor Holm Nelson, eclettico laureato in filosofia fu il primo a coniare i termini di ipertesto e hypermedia. Fondatore del progetto Xanadu ideato per organizzare su scala mondiale informazioni in una struttura ipertestuale e ipermediale.
14
1. Cenni storici ed approfondimenti Il World Wide Web e l’ipertesto
In seguito furono numerosi i passi nella sperimentazione di sistemi ad ipertesto ed ipermediali
ma restavano limitati alla ricerca universitaria (per via degli alti costi dei sistemi informatici)
fino agli anni ’80 quando, con la diffusione dei primi Personal Computer, numerose aziende
cominciarono ad interessarsi a questo nuovo strumento di informazione destrutturato, facendo
nascere una miriade di sistemi ipertestuali commerciali di cui solo pochi videro un buon
successo commerciale.
Negli anni ’80 ci fu il passo decisivo per la nascita del WWW come è conosciuto oggi
ad opera di Tim Berners-Lee8 che nel 1980, lavorando come consulente presso il CERN,
scrisse il programma “Enquire-Whitin-Upon-Everything” che serviva per annotare
informative con la possibilità di inserire collegamenti fra nodi arbitrari che erano riconducibili
per via del titolo, di un tipo e di una lista di collegamenti bidirezionali. Venne usato da vari
gruppi di ricerca ma non ebbe diffusione al di fuori del CERN.
Nel 1989 Berners-Lee scrisse un memorandum [Berners-Lee 1989], che è ormai
diventato parte della storia di Internet, in cui proponeva un modello di interconnessione delle
informazioni in una struttura a ragnatela (web), che permettesse di navigarle in modo non
lineare tramite hyper-links (ipercollegamenti). La proposta suscitò un discreto interesse e
Berners-Lee, insieme a Robert Caillau, si misero al lavoro per espandere la specifica e
definire tutti i meccanismi e i protocolli. La ragnatela di ipercollegamenti doveva travalicare i
limiti del singolo sito, e interconnettere tutti i siti al mondo che memorizzassero informazioni;
si pensò pertanto a server di informazioni, a cui si potesse accedere tramite un client (detto
browser). Le pagine di informazioni venivano richieste dal browser al server, e il server le
forniva in un formato standardizzato chiamato HTML (Hyper-Text Markup Language) e
tramite un protocollo di trasferimento chiamato HTTP (Hyper-Text Transfer Protocol).
Ogni pagina ed ogni altra risorsa (immagini, files, ecc.) poteva essere raggiunta tramite uno
specifico indirizzo, denominato URL (Uniform Resource Locator) che indicava il protocollo
8 Tim Berners-Lee laureato in fisica nel 1976 presso l’università di Oxford, è ora presidente del 3Com (Computer Communication Compatibility) presso il laboratorio di Computer Science al Massachusset Institute of Technology (MIT). Dirige il consorzio per il World Wide Web (W3C), fu l’ideatore del World Wide Web.
15
1. Cenni storici ed approfondimenti Il World Wide Web e l’ipertesto
da usare per raggiungerlo, il server su cui risiedeva, il percorso all’interno del server, il nome
e il tipo della risorsa in questione.
Nel 1990 sempre Tim Berners-Lee iniziò a lavorare ad un sistema di scrittura grafico
ipertestuale con capacità di editing e browsing che girava sulle workstation NeXT9: in nome
del progetto era proprio “WorldWideWeb”. Per la fine dell’anno il primo server venne attivato
e vennero rese disponibili le prime versioni funzionanti del programma.
Le workstation NeXT non erano molto diffuse e si differenziavano dagli altri sistemi di
elaborazione. Per favorire gli utilizzatori di altri sistemi nel marzo del ‘91 venne creato un
browser a riga di comando, detto www, e messo a disposizione a un gruppo di utenti per il
testing. Nell’agosto dello stesso anno vennero resi disponibili via FTP sia www che
WorldWideWeb (dopo ridefinito come Nexus per non crear confusione con il concetto astratto
di World Wide Web ). Il 12 dicembre in primo web server viene installato al di fuori
dell’Europa, nello SLAC di Stanford (Stanford Linear Accelerator Center), mettendo ondine
una gran quantità di abstract di articoli di fisica per ricercatori.
Figura 1.1 – La workstation Next con www in esecuzione
9 Azienda acquisita dalla Apple nel ‘97 che la usò per creare l’interfaccia di Mac OS X; forniva le workstation NeXTcube e NeXTstation, basate su Motorola 68k, Sun SPARK e HP PA-RISK, e sistema operativi per esse come NEXTSTEP,s.o. Unix-like scritto in Objective-C, orientato agli oggetti, sul quale girò il primo browser web.
16
1. Cenni storici ed approfondimenti Il World Wide Web e l’ipertesto
A metà del ’92 vengono scritti Erwise e Viola, altri due browser grafici. Concorrentemente il
sistema “Gopher” dell’università del Minnesota. Gopher è un protocollo di rete basato su un
modulo server che razionalizza le informazioni e le gestisce in una struttura ad albero
accessibile al client. In particolare questo protocollo organizza i contenuti in una struttura
basata su dei menu, interconnettendo così i vari argomenti. Gopher si diffonde molto in
quanto rispetto ad un web server è più semplice da installare e da gestire. Gopher riscuote
successo e in un anno i sistemi Gopher si decuplicano mentre i web server si triplicano
soltanto.
Figura 1.1 – Il sistema Gopher dell’Università del Minnesota
Nel gennaio 1993 viene rilasciato il primo browser per Macintosh e nel febbraio la
prima versione di “Mosaic for X” rilasciata dall’NCSA10. Rispetto alle workstation Next il
browser Mosaic non permette l’editing delle pagine ma solo la visualizzazione. Si inizia a
suddividere tra gli stumenti di creazione e quelli di fruizione dei contenuti. Oggi solo
Netscape fornisce con Communicator, il programma Composer che permette l’editing delle
10 National Center for Supercomputer Applications, istituto di ricerca della University of Illinois
17
1. Cenni storici ed approfondimenti Il World Wide Web e l’ipertesto
pagine web, ma è separato da Navigator. L’unico programma che integra funzionalità di
browsing ed editing oggi è Amaya del W3C.
A marzo del 1993 il traffico sulla porta 80 rappresenta lo 0,1% del traffico totale su
backbone NFS. Nel settembre dello stesso anno supera l’1% mentre l’NCSA fornisce versioni
di Mosaic per X anche per Microsoft Windows e Macintosh.
Agli inizi del 1994 Marc Anderseen e altri colleghi lasciano l’NCSA per fondare la
“Mosaic Communications Corp”, che in seguito diventerà la Netscape Communications: il 10
ottobre viene annunciata la versione 0.9 beta di Navigator. A giungo il carico sul primo web
server del CERN è mille volte superiore a quello di tre anni prima. MIT e CERN annunciano
in luglio un accordo per la fondazione della W3 Organization, che a dicembre si incontra
come W3 Consortium al MIT a Cambridge USA. Il 16 dicembre il CERN approva la
costruzione dell’accelleratore di particelle LHC11 e a causa delle limitazioni del budget lo
sviluppo del progetto WebCore passa all’INRIA12.
Nel febbraio 1995 il web è il tema principale del G7 di Brussel. In marzo il traffico
HTTP superava l’FTP. A maggio la Sun Microsystems rende disponibile il suo web browser,
HotJava e introduce il linguaggio in cui è scritto, il Java. A fine anno la Microsoft inizia a
distribuire Internet Explorer nel pacchetto “Internet Jumpstart Kit” di Microsoft Plus! per
Windows 95.
Lo sviluppo del World Wide Web è continuato fino ai nostri giorni in maniera
esponenziale ed ha superato di gran lunga altri sistemi di accesso distribuito alle informazioni,
se non addirittura, come è il caso di Gopher, li ha schiacciati e fatti sparire nel corso degli
anni. Grazie alla sua diffusione ha fatto crescere l’utilizzo del TCP/IP facendo diventare di
nicchia altri protocolli di trasmissione.
1.3 Il successo di Internet e del WWW
11 Large Handron Collider12 Institut National pour la Recherche en Informatique et Automatique
18
1. Cenni storici ed approfondimenti Il World Wide Web e l’ipertesto
Internet e il World Wide Web hanno avuto un enorme e inaspettato successo che
nell’arco di un decennio ha portato a un incremento esponenziale della richiesta di
connettività causando la nascita e il successo di nuove tecnologie ad esse legate. L’effetto
moltiplicativo dell’aumento della domanda di connettività TCP/IP, generato dall’uso del
protocollo HTTP, ha permesso molti investimenti ed economie di scale sui sistemi di
trasmissione dati. Si è avuta così una graduale diminuzione dei prezzi per l’accesso ad
Internet, che ha attirato sempre più persone nella Rete delle Reti, fattore che a sua volta ha
fatto crescere la domanda che ha continuato ad influire sui prezzi. Dopo i modem analogici o
ISDN le nuove tecnologie come l’ xDSL, le connessioni via satellite o quelle senza fili, che
permettono di ridurre i tempi di accesso alle informazioni e di ricevere contenuti multimediali
in buona qualità, devono la loro diffusione alla richiesta crescente della popolazione di entrare
nella rete.
Considerato il successo, il web si deve considerare anche per il suo aspetto sociale e non solo
per quello tecnologico. E’ un nuovo mezzo di comunicazione che rispetto ai media
tradizionali ha costi di creazione e diffusione del contenuto decisamente più bassi.
Contemporaneamente rende molto facile reperire le informazioni disponibili, senza porre
barriere geografiche o temporali. Queste caratteristiche hanno attratto persone al di fuori del
mondo dell’Information Technology e della ricerca o degli appassionati d’informatica.
Altri sistemi pensati per l’utilizzo di massa o sono miseramente falliti. Il Videotel per esempio
era un terminale dedicato, comprensivo di modem, che utilizzando la rete telefonica
commutata e connessioni X.25 dava accesso agli utenti a pagine di testo con possibilità di
interagire in maniera limitata con gli host che fornivano le informazioni. L’unico paese dove
ha avuto diffusione è stata la Francia, ma solamente grazie a forti sovvenzioni governative,
mentre in Italia la diffusione è stata praticamente nulla. Il secondo caso è quello della
tecnologia Fidonet: nodi gestiti da volontari, basati su personal computer e l’uso di linee
commutate anche per l’interconnessione fra nodo e nodo, consente di gestire servizi di
messaggistica e di scambio programmi. Pur avendo avuto una diffusione più capillare rispetto
19
1. Cenni storici ed approfondimenti Il World Wide Web e l’ipertesto
a sistemi simili nelle funzionalità ma utilizzabili solo su macchine multiutente è rimasta
pressoché sconosciuta al grande pubblico.
Il WWW, pur non essendo nato con lo scopo di diffondere l’utilizzo della telematica nella
popolazione globale, è invece riuscito pienamente in questo scopo. Uno dei fattori
determinanti è che utilizza protocolli di comunicazione aperti, per cui è stato semplice
scrivere programmi client per una grande varietà di macchine. La semplicità iniziale, unita
anche a quella del TCP/IP ha permesso di scrivere browser per i vari personal computer del
1990. Il fattore più interessante è che si è creato un “linguaggio” comune nel mondo
informatico che ha avuto un effetto di standardizzazione che ha permesso di far colloquiare
direttamente sistemi diversi senza grosse complicazioni. La popolarità di HTML e l’utilizzo
ben al di fuori dei suoi scopi iniziali ne ha messo in luce le limitazioni, che si sono dovute
gestire e superare.
1.4 Linguaggi per il Web ed Accessibilità
Il primo browser, WorldWideWeb, dava la possibilità di utilizzare i “fogli di stile” per
modificare l’aspetto dei documenti, ma questa caratteristica si è persa nei browser successivi
per poi esser ripresa, cosicché per modificare l’aspetto grafico delle pagine HTML si è
iniziato ad introdurre nuovi elementi e nuovi attributi per gli elementi già definiti al suo
interno.
HTML porta con se quella che è considerata una grave pecca: il fatto di mescolare assieme
elementi di presentazione (definiscono la vista di un documento) e di strutturazione
(definiscono l’organizzazione logica del documento) del contenuto.
20
1. Cenni storici ed approfondimenti Linguaggi per il Web ed Accessibilità
A peggiorare la situazione si fa largo uso, per la presentazione, di tag destinati ad altri scopi.
L’esempio più conosciuto è quello dell’elemento <table>, nato per poter visualizzare dati
tabellari, viene molto spesso utilizzato per imporre una posizione prefissata a elementi grafici
o parti di testo. Ancora si nota che per essere certi che il testo appaia con un carattere
particolare o con un certo effetto, le parti testuali vengono inserite come bitmap, o immagini
vuote vengono messe per ottenere spaziature fisse, o si usa l’entità   per inserire
spaziature fisse fra parole.
Anche utilizzando gli editor HTML, che seppure semplificano la redazione delle pagine e ne
rendono possibile la generazione senza conoscere l’HTML, si è spesso indotti a ragionare a
livello di presentazione e non di contenuti e quindi si può incorrere in un utilizzo
inappropriato di alcuni costrutti. Usando questi sistemi si ha la possibilità di controllare la
generazione del codice HTML ma, a lavoro ultimato, questo spesso risulta incomprensibile se
letto con un editor di testo. Diventa quindi difficoltoso riutilizzare i contenuti per mezzi
diversi se non con un pesante intervento umano, o aggiornare i contenuti con strumenti
diversi.
Un altro fattore da considerare è che molto spesso si cerca di utilizzare metodi di
lavoro che appartengono ad altri mezzi di comunicazione. Nella carta stampata l’aspetto
grafico è importante, quindi colore, dimensione e forma dei caratteri, posizionamento nella
pagina dei vari elementi, spaziature sono parametri essenziali per ottenere un buon prodotto
ed inoltre il prodotto finito e stampato è uguale per tutti i lettori e quindi tutti leggono e
vedono la stessa cosa. Tentare di avere una pagina HTML uguale per tutti è piuttosto difficile,
vista la varietà di software ed hardware disponibile e la possibilità per gli utenti di modificare
il comportamento dei programmi utilizzati. La possibilità che le pagine vengano visualizzate
in maniera diversa a vari fruitori viene considerata non un vantaggio ma un problema da
risolvere, fino a decidere una piattaforma specifica per la visualizzazione (i risultati sono i
vari siti “ottimizzati” per Internet Explorer o Netscape, per una certa dimensione di schermo
od un certo numero di colori o che impediscono l’accesso a chi non utilizza una determinata
1. Cenni storici ed approfondimenti Linguaggi per il Web ed Accessibilità
configurazione software) con l’effetto di sensibili vantaggi per la fruizione del sito ma con
l’enorme limitazione data dal fatto di dover imporre all’utente di usare un certo browser.
Ci sono comunque applicazioni particolari, in cui risulta necessario utilizzare tecnologie
disponibili su una determinata piattaforma, come ad esempio programmi Java od ActiveX.
Normalmente queste tecnologie vengono utilizzate nelle intranet, ambienti controllati e
ristretti che non si rivolgono al pubblico di Internet. Nelle Intranet si nota che i browser hanno
letteralmente sostituito l’utilizzo di programmi a terminale per applicazioni di data entry: in
questo caso è facile imporre una configurazione uguale per tutti gli utilizzatori in quanto
l’ambiente di utilizzo è limitato all’azienda che ne fa uso.
Anche i plug-in e le estensioni, come Macromedia Flash, che offrono la possibilità di
inserire filmati ed animazioni in una pagina web, possono essere causa di problemi. Sono
certamente utili ma non bisogna abusarne rendendo obbligatorio l’uso per poter accedere a
servizi e contenuti del sito. In maniera simile l’utilizzo di Javascript quando non strettamente
necessario può causare problemi nella navigazione di un sito (ad esempio se un browser li ha
disabilitati) e rende difficile l’indicizzazione del contenuto da parte dei motori di ricerca.
Il problema che si riscontra, specialmente in siti di tipo commerciale, legato
all’utilizzo di tecniche di comunicazione prese da altri media, è quello di far prevalere la
presentazione a scapito del contenuto. Accade quando il sito web aziendale viene utilizzato
come una versione elettronica di un volantino pubblicitario, oppure di uno spot televisivo, che
deve stupire e colpire il navigatore che arriva sul sito piuttosto che rappresentare una fonte
informativa per i potenziali clienti visitatori. Dicendo ciò non si vuole affermare che gli
elementi grafici siano inutili o che i siti che non li presentino siano migliori di quelli che sono
arricchiti di elementi grafici e multimediali: una buona presentazione grafica ed un corretto
studio di come debbono apparire le varie informazioni sono invece molto importanti per
ottenere una buona fruibilità delle pagine. Bisogna tener presente che una veste grafica troppo
invadente può portare a grosse difficoltà nel reperire le informazioni presenti nel sito. Un
utilizzo sbagliato del colore, dei tipi e delle dimensioni dei caratteri, delle immagini
1. Cenni storici ed approfondimenti Linguaggi per il Web ed Accessibilità
esplicative e del posizionamento del testo possono rendere difficoltosa la navigazione e far
trovare poco piacevole il sito intero.
Quindi è da tener sempre presente, nella progettazione di un sito, l’aspetto funzionale
del sito stesso. Bisogna ricordare che l’informazione che si sta offrendo nel sito deve essere il
più possibile fruibile ed accessibile a tutta la popolazione. Non seguire questa regola
fondamentale risulterebbe ad avere un sito in cui sia difficile trovare le informazioni che
interessano e chi naviga semplicemente cercherà nei siti delle aziende concorrenti ed
eventualmente si rivolgerà a queste ultime. Per un ente pubblico, ad esempio, si vorrà che il
sito che lo rappresenta sia pieno di informazioni riguardo al servizio offerto al cittadino e che
sia facile reperire le informazioni che interessano. Inoltre se necessario, bisognerebbe fornire
documenti in formati standard piuttosto che proprietari, indipendenti dai sistemi operativi o da
programmi che sono a pagamento e magari di costo elevato.
Nel pubblicare informazioni in pagine HTML bisogna tener presente che le
informazioni che si vanno a fornire devono e esser facilmente accessibili a tutti i tipi di
persone anche a quelle che possono avere qualche tipo di disabilità, ad esempio percettive o di
movimento. Oltre a questo occorre considerare la varietà dei browser esistenti e il fatto che
non tutti possono avere le ultime versioni disponibili o che possono esistere browser
particolari per persone con disabilità di qualche genere.
Allo scopo di fornire una metodologia di costruzione di siti accessibili il W3C ha
creato un gruppo di lavoro che si occupa di descrivere le linee guida per creare siti web
accessibili: il WAI (Web Accessibility Initiative).
Le linee guida sono denominate WCAG (Web Content Access Guidelines), sono sviluppate
dal WCAG Working Group e sono state ridefinite alla versione 2.0. Nella prima versione (ma
tuttora supportate nella seconda) i principi fondamentali sono riassunti dalle seguenti regole:
1. Mettere a disposizione alternative al contenuto audio e video
2. Non fare affidamento solamente sui colori
3. Utilizzare markup e fogli di stile, e farlo correttamente
4. Chiarificare l’uso del linguaggio naturale
1. Cenni storici ed approfondimenti Linguaggi per il Web ed Accessibilità
5. Creare tabelle che si trasformino senza problemi
6. Assicurarsi che le pagine che utilizzano nuove tecnologie si trasformino senza problemi
7. Assicurare il controllo utente di elementi di contenuto che cambiano col tempo
8. Assicurare l’accessibilità delle interfacce utente degli oggetti inseriti nella pagina
9. Progettare considerando l’indipendenza dalle periferiche
10. Utilizzare soluzioni ad interim per i sistemi più vecchi
11. Utilizzare le tecnologie e le direttive del W3C
12. Mettere a disposizione informazioni sul contesto nelle pagine complesse
13. Mettere a disposizione meccanismi di navigazione chiari
14. Fare in modo che i documenti siano chiari e semplici.
Costruire un sito accessibile porta vantaggi non solo alle persone disabili ma a tutti. Con la
progressiva diffusione di telefoni cellulari o di computer palmari con un web browser
integrato e con la diffusione dell’UMTS le persone che hanno sistemi per navigare diversi
dalla classica workstation sono sempre di più e potrebbero diventare una percentuale
significativa del target di un sito. Fare un sito accessibile significa renderlo disponibile non
solo a chi usa una telescrivente Braille ma anche ha chi ha l’ultimo modello di cellulare. Una
struttura di navigazione chiara aiuta tutti i visitatori a trovare più rapidamente le informazioni
che gli interessano, aumentando l’interesse verso il sito. Allo stesso modo non usare
Javascript o Flash come unico strumento di navigazione permette ai motori di ricerca di
indicizzare tutto il sito, aumentando quindi il numero di persone che lo visitano.
Le direttive WAI sono ampiamente condivise ed accettate nel mondo del web perché si
rifanno a concetti che da molto sono conosciuti nel campo della programmazione web con il
nome di accessibilità e usabilità, e oltre a questo mettono in risalto il problema
dell’accessibilità dei siti per persone con disabilità cognitive o motorie. Quindi si conoscono
le necessità e i vantaggi pratici ed economici che si possono ottenere nel fornire un sito
accessibile ed eventualmente con interfacce di interazione con l’utente (ad esempio di data
entry) il più possibile usabili.
1. Cenni storici ed approfondimenti Dalle pagine statiche a quelle dinamiche
1.5 Dalle pagine statiche a quelle dinamiche
Un aspetto fondamentale del web è quello di permettere un modo di ricerca e prelievo
delle informazioni di tipo “pull”, ovvero in cui il fruitore delle informazioni va attivamente
alla ricerca di quello che gli interessa quando gli serve, e non di tipo “push” in cui si
recepiscono passivamente le informazioni dopo aver scelto un canale come ad esempio per la
radio, la televisione. Questo significa che per attirare l’attenzione di chi utilizza la rete ed
evitare che la visita sia limitata a qualche minuto è fondamentale che le informazioni presenti
siano interessanti, utili e complete. Non è detto che chi è in grado di creare dei contenuti
conosca gli aspetti tecnici collegati alla pubblicazione su web o viceversa che i “tecnici” siano
sempre a conoscenza i contenuti da inserire. Esistono molti strumenti che permettono di
scrivere pagine HTML senza conoscerlo e con relativa facilità ma presentano comunque delle
controindicazioni. Spesso il codice HTML generato, come già detto, è quasi illeggibile e
difficilmente modificabile “a mano” ed è poco ottimizzato, di dimensione elevata, sia per
l’inserimento di elementi inutili che per la presenza di informazioni del programma
generatore ( è il caso dei Word Processor ed del loro “Salva come HTML”). L’utilizzatore è
libero di utilizzare qualunque stile grafico di base e di sceglierne uno diverso pagina per
pagina, ed andare a modificare ogni singolo elemento in maniera totalmente incontrollata: lo
si può riscontrare normalmente nelle pagine amatoriali (ma non solo) con il rischio di avere
una presentazione difficile da seguire e poco leggibile. Per tentare di avere un aspetto grafico
coerente la soluzione che risulta più semplice è quella, come detto prima, di utilizzare in
modo eccessivo la grafica bitmap, a scapito del testo vero e proprio. Risulta molto difficile
inserire dati prelevati in maniera automatica da altri sistemi informatici. Quando un sito
supera una certa dimensione, e vi devono lavorare molte persone, la gestione ed il controllo
del materiale generato per il sito diventa molto difficoltosa.
Se un sito è statico, cioè il server si limita semplicemente ad erogare le pagine HTML
memorizzate sul file system, non è possibile quindi risolvere questi problemi. Chi scrive il
contenuto deve avere comunque una conoscenza sia pur minima della tecnologia sottostante.
1. Cenni storici ed approfondimenti Dalle pagine statiche a quelle dinamiche
Se un sito supera una certa dimensione anche se si fa passare tutto il materiale da un esperto
di HTML con una buona conoscenza della struttura del sito esistono grosse difficoltà a
mantenere la coerenza delle pagine, sia dal punto di vista della presentazione che della
raggiungibilità e dell’aggiornamento globale.
Per alleviare una parte dei problemi si possono utilizzare le pagine “attive”, o “dinamiche”: il
server risponde ad una richiesta di una pagina eseguendo un programma i cui risultati
vengono mandati al client richiedente. Facendo così si può ad esempio unificare le parti
comuni delle pagine, oppure avere del contenuto aggiornato automaticamente prelevato da
basi di dati esterne o calcolato sul momento.
Allo stato attuale esistono molte tecnologie disponibili allo sviluppatore per poter scrivere
software per generare pagine dinamiche le cui principali sono le seguenti:
Common Gateway Interface - è stata storicamente la prima tecnica utilizzata per avere
interazione dal client verso il server. Vengono utilizzati programmi scritti in un qualunque
linguaggio, sia interpretato che compilato. I dati in ingresso ed in uscita devono seguire un
protocollo ben definito e spesso esistono ulteriori limitazioni dovute a questioni di sicurezza.
Normalmente i programmi risiedono in una particolare directory del server, e vengono
richiamati con il loro nome e percorso nell’URL dal client. In diversi casi si possono
utilizzare i CGI per interpretare linguaggi di scripting i cui sorgenti sono memorizzati
all’interno del sito, configurando in modo appropriato web server. L’uso dei CGI può
generare problemi di scarse prestazioni del sistema sotto carico in quanto ad ogni chiamata
viene generato un nuovo processo separato, che compete con gli altri processi simili per le
risorse del sistema e costringe ad un numero elevato di cambi di contesto. Altro problema è
che tutto l’input e l’output deve essere gestito esplicitamente dal programma, compresa
decodifica delle richieste e generazione completa di HTML, ma comunque è possibile in
molti linguaggi di programmazione utilizzare delle librerie apposite.
Server scripting - si utilizzano dei linguaggi di programmazione progettati per la
generazione di pagine HTML, che hanno caratteristiche che ne rendono decisamente più
semplice l’utilizzo, come ad esempio la decodifica automatica dei dati trasmessi dall’utente
1. Cenni storici ed approfondimenti Dalle pagine statiche a quelle dinamiche
oppure la possibilità di inserire senza problemi spezzoni di HTML da inviare all’utente senza
elaborazione. I programmi scritti con questi linguaggi possono essere utilizzati come CGI, ma
normalmente negli ambienti di produzione sono utilizzati come moduli interni al web server
ottenendo così migliori prestazioni: i processi generati sono in numero molto inferiore rispetto
ciò che accade utilizzando i CGI perchè si evitano troppi cambi di contesto. Si possono
comunque utilizzare in questo modo alcuni linguaggi non pensati per la generazione di
HTML, come ad esempio PERL, Python o TCL, con gli opportuni moduli inseriti nel web
server, se questi sono stati adattati per questo tipo di funzionamento. I linguaggi di server
scripting più noti sono:
ASP – E’ il linguaggio di riferimento per Microsoft ed il suo Internet Information
Server. Le pagine possono essere scritte sia VBScript, in cui il linguaggio è una parte
di Microsoft Visual Basic opportunamente adattata per le esigenze del web, che in
JScript, in cui il linguaggio è simile a serverside Javascript. Si possono integrare con
le pagine ASP oggetti COM e la connettività con basi di dati. Con gli oggetti COM
diventa possibile avere degli oggetti molto simili ai moduli per il server scripting od
utilizzare versioni compilate di pagine ASP per un miglioramento delle prestazioni
(con alcune limitazioni sul tipo delle pagine).
PHP – E’ un linguaggio di programmazione molto adatto per applicazioni web che
può esser inserito dentro parti di HTML. Può essere utilizzato anche per script da riga
di comando od applicazioni grafiche lato client. Sono disponibili versioni per i più
diffusi sistemi operativi e web server, sia come modulo che come interprete CGI. Si
può utilizzare PHP come linguaggio procedurale oppure ad oggetti, od un ibrido fra i
due. Oltre a poter generare HTML, XML od XHTML, si possono generare al volo
immagini, documenti PDF o filmati Flash. Ci si può interfacciare ad un grande numero
di database ed utilizzare vari protocolli di rete, come LDAP, IMAP, SNMP, NNTP,
POP3, HTTP oppure interagire a livello TCP.
J2EE - (Java 2 Platform, Enterprise Edition). Sono una serie di tecnologie sviluppate
da Sun, basate su Java, ovvero i componenti JavaBeans, API per le servlet Java e le
1. Cenni storici ed approfondimenti Dalle pagine statiche a quelle dinamiche
Java Server Page. I JavaBeans permetto di utilizzare pacchetti che implementano
funzionalità verso l’interno del sistema informativo aziendale, mentre le servlet si
possono vedere come classi Java che implementano specifiche funzionalità lato web,
permettendo di avere un’infrastruttura che estende le funzionalità del web server.
Le Java Server Page permettono di creare script in Java inseriti all’interno delle pagine
HTML. Rispetto ad un linguaggio di scripting la differenza maggiore è che il codice
viene compilato nel bytecode di Java una sola volta e non interpretato ogni volta che
viene richiesta una pagina. Inoltre la modularità del sistema permette una forte
integrazione con altri sistemi informativi anche utilizzando architetture complesse.
Negli ultimi anni per la creazione di siti dinamici si utilizzano combinazioni di linguaggi e
sistemi operativi già affermati nel campo della programmazione software offrendo vere e
proprie piattaforme di programmazione per il Web. E’ il caso di citare sinteticamente la
piattaforma che fa uso di strumenti Open Source: la piatta LAMP (Linux – Apache - My SQL -
PHP). E’ una tecnologia che mette insieme componenti con licenze GNU GPL per la messa
in opera di siti o portali. Come sistema operativo usa GNU/Linux, come server web Apache,
come gestore delle base di dati My SQL, e come linguaggi di scripting web il PERL, il PHP o
Python. Oltre ad essa ve ne sono svariate che modificano uno o più dei componenti facenti
parte della piattaforma.
Un’altra tecnologia nata recentemente e che ha avuto un largo successo grazie agli esempi di
implementazioni fatte da Google nei servizi come GMail o Google Maps è AJAX
(Asynchronous JavaScript and XML). Sfrutta le possibilità offerte dai browser di ultima
generazione che offrono due funzionalità nuove: in primo luogo permettono di eseguire
richieste al server che sta offrendo le pagine senza richiedere il refresh della pagina stessa; in
secondo luogo permettono di utilizzare il formato XML per lo scambio di contenuti.
La creazione di script per un particolare sito, sia pur semplificando la gestibilità per quanto
riguarda la parte tecnica, introduce ulteriori strati di complessità. Per chi è digiuno di HTML
o ne ha una conoscenza limitata ciò significa avere dei problemi perchè, come già detto,
anziché dover semplicemente produrre un ipertesto, si deve invece scrivere un programma per
1. Cenni storici ed approfondimenti Dalle pagine statiche a quelle dinamiche
elaboratore con le relative difficoltà di ordine concettuale: non si ha più a che fare con un
word processor evoluto (con concetti come parole, capitoli e sottolineature) ma bisogna si ha
a che fare con variabili, cicli, salti condizionali e funzioni.
Anche per chi conosce bene i linguaggi di scripting dover mettere mano ad un sito dinamico
fatto da un altro spesso può rivelarsi difficoltoso, in particolare quando l’uso delle parti
dinamiche non deriva da un progetto complessivo, ma da una scrittura estemporanea per
risolvere piccole parti. Poichè spesso questi script non sono né documentati né tanto meno
commentati, diventa difficile capire che cosa fanno, e quindi la modifica ed il riutilizzo degli
script e di codice HTML presente nelle pagine diventa un’attività che porta via molto tempo.
Sembrerebbe quasi che per risolvere il problema delle pagine statiche si siano introdotti altri
problemi più gravi ed ancor più difficili da risolvere. In realtà in molti casi l’utilizzo delle
pagine dinamiche risolve i problemi che si hanno con l’uso delle pagine statiche: bisogna aver
però presente che non è detto che siano sempre la soluzione ideale in tutti i casi e che è
necessario sapere che non si ha più a che fare con un “documento”.
1.6 Oltre le pagine dinamiche
Avere in mano la potenza di un linguaggio di programmazione vero e proprio
permette, come visto, di risolvere in maniera elegante il problema della complessità di HTML
e della gestione di un sito, introducendo un maggiore livello d’astrazione.
Si possono scrivere delle procedure che permettono di inserire del testo in maniera semplice
(ad esempio utilizzando form HTML in cui l’utilizzatore va a scrivere quello che dovrà
apparire sul web) e che automaticamente vanno a memorizzare il testo all’interno di una base
di dati.
1. Cenni storici ed approfondimenti Oltre le pagine dinamiche
Altre procedure vanno a recuperare dalla base di dati i testi necessari a comporre una pagina
al momento della richiesta HTTP. In altri termini il contenuto diventa una serie di dati forniti
da un programma che genererà un output opportuno.
Per evitare di dover riscrivere nuovo codice per siti diversi che richiedono prestazioni simili,
sono nate delle librerie che implementano funzionalità standard e che possono essere inserite
nelle pagine dinamiche con eventualmente piccole personalizzazioni. Da qui si è arrivati ad
interi pacchetti applicativi preconfezionati che permettono di avere tutta l’infrastruttura
necessaria per generare un sito web dinamico, semplicemente da personalizzare secondo le
proprie esigenze. Utilizzando questi applicativi è possibile, con relativa facilità, ottenere
risultati molto accattivanti dal punto di vista grafico e si riescono a gestire in maniera coerente
anche siti di una certa dimensione con caratteristiche avanzate.
Grazie alla possibilità di utilizzare componenti già fatti è semplice aggiungere oggetti
come guestbook, calendari o gallerie di immagini. Lo si può fare senza dover intervenire sul
codice, ma semplicemente attivando le librerie già disponibili. Molti degli applicativi
permettono di personalizzare l’aspetto grafico della pagina sia permettendo diverse “viste”
degli stessi dati che di personalizzare le pagine in modo diverso per ogni utente.
Ci si è quindi avvicinati a sistemi in cui risulta centrale il contenuto e non la presentazione, o
meglio in cui questi due aspetti sono gestibili in maniera separata ed eventualmente riciclabili
in contesti diversi: i Content Management System. Infatti sono applicazioni che hanno come
aspetto centrale appunto la gestione dei contenuti: alcuni pacchetti nati nel mondo web hanno
espanso le loro funzionalità fino a poter essere considerati dei CMS. Delle caratteristiche dei
CMS si discuterà più approfonditamente nel prossimo capitolo.
1. Cenni storici ed approfondimenti Verso il Web 2.0
1.7 Verso il Web 2.0
Nel 2005 si è parlato molto di Web 2.0, su riviste o magazine dedicati ad Internet,
come possibile futuro evolutivo della Rete. Il termine è nato dalla casa editrice americana
O’Reilly, specializzata in pubblicazioni riguardanti le nuove tecnologie ed Internet in
particolare, ma non tutti (tra i quali Tim Berners Lee) ne approvano l’uso perché non implica
un cambiamento alla base di tecnologie o strumenti vero e proprio, ma piuttosto è un modo
nuovo di intendere l’evoluzione che sta prendendo piede nel Web.
Quindi non si tratta di una nuova versione di un software o di un’evoluzione tecnologica della
suite di protocolli TCP/IP, come potrebbe far pensare il numero di versione. Semplicemente si
tratta di uno slogan efficace ed appropriato per indicare il superamento del Web così come lo
si intende ora e l’entrata in una nuova fase del Word Wide Web. Volendo semplificare, si
identifica nel Web 2.0 il passaggio dai siti ai servizi, nel senso che Internet, come lo
conosciamo, sta per sparire e per lasciare il posto a un nuovo Web, i cui casi di successo e i
cui parametri saranno diversi da quelli visti finora. Una trasformazione in corso, che durerà
ancora anni e i cui risultati finali sono tuttora sconosciuti. Allora se è vero che questa
trasformazione del Web impiegherà parecchi anni per arrivare ad un qualcosa di stabilito e
consolidato e se i risultati non sono ancora completamente noti, viene da chiedersi cosa abbia
spinto alla formulazione di questo nuovo termine. Da quanto detto dai propositori, i passaggi
intermedi sono sotto gli occhi di tutti e vedono in fenomeni come il blogging, il social
networking, la condivisione e la collaborazione on-line, le nuove forme di comunicazione che
hanno portato a nuovi strumenti applicativi (come i CMS).
Anche sulla nomenclatura si sta dibattendo da un pò di tempo, perché oltre all’equivoco della
versione generato da quel ‘2.0’, altri ritengono limitativo parlare di Web. Infatti, l’annunciata
rivoluzione comporterà l’accesso a Internet da una serie di dispositivi diversi dal PC, dai
cellulari al televisore o la radio, tutto ciò che sfrutterà il digitale. Viene da chiedersi se non sia
meglio la nomenclatura Internet 2.0, ma anche questo termine è già utilizzato dal consorzio
1. Cenni storici ed approfondimenti Verso il Web 2.0
Internet2 o UCAID (University Corporation for Advanced Internet Development),
comprendente numerose università americane e varie aziende del settore, per identificare il
progetto di una nuova rete fatta da nuove suite di protocolli (come l’IPv6), denominata
Abilene Network, che porterà anch’essa a nuovi orizzonti applicativi per il Web.
I propositori del termine Web 2.0 affermano che esso differisce dal concetto iniziale di web,
etichettato con Web 1.0, perché si discosta dai classici siti web statici, dall’e-mail, dall’uso dei
motori di ricerca, dalla navigazione lineare e propone un World Wide Web più dinamico e
interattivo. Il filo conduttore, infatti, del Web 2.0 è proprio la collaborazione e la
condivisione, l'interazione sociale, culturale e professionale realizzata grazie alla tecnologia.
Vediamo allora quali sono le tecnologie alla base del Web 2.0:
XML (Extensible Markup Language) - Linguaggio che è un insieme di regole per la
strutturazione e la comprensione logica dei dati tramite computer. Estensibile,
indipendente dalla piattaforma, supporta i parametri internazionali e locali. Come
suggerisce il nome si compone di tag e attributi, ma si limita a delimitare i dati,
lasciando l'interpretazione all'applicazione che li legge.
API (Application Programming Interface) – E’ un insieme di procedure standard
disponibili per i programmatori e proprie di ogni linguaggio di programmazione. Di
norma, sono raggruppate a formare un set di strumenti specifici per assolvere ad una
data funzione. Possono essere private o pubbliche: in modo un pò semplicistico, si può
dire che le API di un certo programma o servizio consentono agli sviluppatori di
creare software o servizi a complemento di quel linguaggio, programma o servizio.
Web Services - Sistemi software per il Web progettati per supportare la piena
interoperabilità tra diversi dispositivi su una stessa rete. L'interfaccia software di un
Web Service è tale da garantire la piena interoperabilità tra diverse applicazioni su
diverse piattaforme sia software che hardware.
1. Cenni storici ed approfondimenti Verso il Web 2.0
AJAX (Asynchronous JavaScript and XML) – Come già visto è una tecnica per
sviluppare applicazioni Web interattive e dinamiche usando una combinazione tra
diversi linguaggi di programmazione ed oggetti.
Grazie all'uso di queste tecnologie e alle loro combinazioni, sono possibili servizi integrati
che sfruttano singole applicazioni da diversi siti Web. Piena possibilità di comunicazione e
interazione tra i vari siti e servizi, infatti, sono le coordinate su cui si instaurano nuove
applicazioni e servizi, spesso sviluppati o utilizzati in modalità condivisa e collaborativa.
Questo sistema, insieme a tutte le sue derivazioni e a tutte le sue declinazioni (dall’interazione
sociale alla programmazione collaborativa), è il Web 2.0. Una rivoluzione annunciata, ancora
in corso, che cambierà Internet sia per gli utenti sia per le aziende.
Conclusioni
Questo primo capitolo ha voluto rappresentare un’ introduzione al prossimo che parla in
dettaglio dell’argomento di questa tesi, ovvero dei sistemi di gestione dei contenuti a sorgente
aperto. I contenuti di questa introduzione sono stati molto sintetici e non hanno dato largo
spazio ad argomenti che avrebbero meritato un approfondimento maggiore. Ma l’intento è
stato in primo luogo quello di far notare come la nascita del WWW abbia modificato
realmente il mondo dell’informatica andando a toccare anche argomenti di carattere sociale o
economico. Secondariamente si è visto come la Rete abbia introdotto nuove problematiche
risolvibili con nuovi strumenti creati apposta per gestirle permettendo a un numero sempre
maggiore di persone di poter accedere e contemporaneamente creare informazione.
2. Content Management Systems
Al giorno d’oggi chiunque debba creare un portale web o gestire della documentazione
a livello aziendale è facile che si imbatta nella conoscenza di questi strumenti. Sebbene
esistano diverse definizioni è difficile darne una univoca, ma essenzialmente con il termine
CMS, acronimo per “Sistemi di gestione dei contenuti”, ci si riferisce a quegli strumenti che
permettono di gestire una enorme quantità di informazioni di diverso tipo, provenienti da
diverse fonti e prodotte da varie persone, che principalmente si vogliono rendere disponibili al
pubblico attraverso il web. E’, quindi, una categoria di sistemi software per organizzare e
facilitare la creazione collaborativa di documenti e di altri tipi di contenuti da pubblicare su
web, oltre ad essere un sistema che permette la creazione dinamica di pagine web da
informazioni catalogate in data base come link, documenti Html, moduli, gallerie di
immagini, video, audio, etc.
Si può dire che siano nati essenzialmente a cominciare dalla metà degli anni ’90,
quando alcune organizzazioni che producevano e gestivano notevoli quantità di pubblicazioni
su web cominciarono a progettarli e svilupparli per la prima volta. Nel 1995 l’azienda CNET
rese pubblici degli studi su prodotti sviluppati internamente che successivamente decise di
distribuire con l’etichetta Vignette. La compagnia cominciò a mettere a disposizione il
software come un web-based content management system permettendo ad altre aziende di
creare siti con interfacce precostruite di presentazione dei contenuti web su di un software
precedentemente sviluppato allo stesso scopo.
Nel 1998, la Pencom Web Works, una compagnia di consulting, introdusse the Metaphoria
Data Transformation Server, che permetteva agli sviluppatori Java di scrivere applicazioni
che potevano essere collegate con i contenuti e davano la possibilità di distribuire tali
contenuti su differenti canali web. Il prodotto fallì, ma il concetto che era stato introdotto
costituì le basi di ciò che rappresentano i CMS odierni.
34
2. Content Management Systems
Il Web Content Management è maturato bene nel corso degli anni e si può dire che
oggi, dopo aver riscosso un largo successo, è diventato uno strumento essenziale nella
distribuzione di informazioni su web. Si contano numerosissimi CMS, tra proprietari e Open
Source, e si vedono moltissime aziende, ma anche organizzazioni di qualsiasi genere, che ne
fanno uso. L’enorme diffusione si è originata dall’interesse sempre maggiore di molte aziende
che lavorano nel settore dell’ Information Technology e dell’ICT che hanno visto, e
sperimentato su di esse, come i CMS potevano essere la soluzione ideale per i problemi di
gestione distribuita e collaborativa delle informazioni a livello aziendale.
In questo capitolo andremo ad analizzare le componenti fondamentali del Content
Management e vedremo come i sistemi di CM si sono differenziati nell’applicazione a diversi
settori della distribuzione delle informazioni.
35
2. Content Management Systems Il Content Management
2.1 Il Content Management
Sebbene il termine Content Management (CM) sia relativamente nuovo, le pratiche di
gestione dei contenuti sono state introdotte da prima degli anni ‘80 e derivano da tecniche già
esistenti. Finché le grandi aziende non hanno cominciato ad usare questo termine nell’ambito
della pubblicazione di informazioni attraverso il web, esso non si è diffuso, ma il problema
della gestione dei contenuti era già esistente in certi settori aziendali.
Il problema della gestione dei contenuti si può sintetizzare nella necessità di avere mezzi per
recuperare, gestire e pubblicare diversi tipi di contenuto informativo su uno o più strumenti di
comunicazione. Le aziende commerciali e soprattutto quelle di e-business possono trarre
grandi vantaggi dalle tecnologie di Content Management. Ad esempio può aiutarle a
rinforzare la vendita on-line ed a mantenere una presenza elettronica su Internet, oltre al fatto
cruciale di essere utili nella gestione di grandi moli di informazioni.
2.1.1 Definizioni
Abbiamo già detto che essenzialmente in CM si preoccupa delle attività di gestione,
recupero e pubblicazione di contenuti su vari mezzi comunicativi. L’attività di recupero delle
informazioni può essere espletata in due modi: creando le informazioni ex novo o
acquisendole da fonti esistenti. Il recupero è fine all’organizzazione dei dati che avviene, ad
esempio, andando a popolare banche dati progettate appositamente per quel tipo di
informazione. La decisione su quale mezzo di gestione usare per contenere le informazioni è
una scelta cruciale che deve tener conto di come saranno utilizzate le informazioni
memorizzate. Ad esempio un’azienda può decidere di utilizzare un’unica base di dati sui
prodotti finiti per scopi sia interni di gestione sia di pubblicazione sul web, per cui il
36
2. Content Management Systems Il Content Management
progettista andrà a scegliere strumenti adeguati per espletare sia l’una che l’altra funzione. Per
quanto riguarda la pubblicazione del contenuto estrapolato dalla base di dati, questo, a
seconda dello strumento di pubblicazione, verrà convertito nell’uno o nell’altro formato
necessario per la creazione delle pubblicazioni.
2.1.2 Contenuto, dati e informazione
I computers sono stati inizialmente creati per svolgere calcoli matematici complessi o
che richiedono un grande dispendio di tempo. Al loro livello i dati non sono immediatamente
leggibili o intelligibili perché sono rappresentati in formati creati per essere interpretati e
gestiti solo dal computer stesso. Affinché i dati rappresentino un’informazione intelligibile
occorre che siano inseriti in un dato contesto. Infatti la caratteristica più importante del
contenuto è quella dell’aspetto umano. Il contenuto, per esser tale, comporta un processo di
identificazione e di ragionamento che può esser svolto solo dall’intelletto umano, grazie alla
componente intuitiva, il che rende impossibile processare del contenuto attraverso un
computer. I dati possono esser visti come i “mattoni“ che l’intelletto umano usa per costruire
informazione, e il loro scopo essenzialmente è quello di far si che sia possibile elaborare
elettronicamente l’informazione per vari scopi, ad esempio per la trasmissione a distanza.
L’informazione è quindi concepita o creata dall’uomo che “vede” i dati. Per cui
l’informazione è qualcosa soggetto a intuizione, contesto ed interpretazione, ovvero attività
che risiedono nell’intelletto umano e che difficilmente saranno implementate nei calcolatori,
seppure esistano discipline, come l’intelligenza artificiale, che stanno tentando di riuscirvi.
Ma andiamo a vedere il contenuto da un punto di vista pratico. Il contenuto è l’informazione
in un certo formato utile per essere presentata o pubblicata per un dato scopo. La
presentazione è importante per individuare il contesto che fa si che i dati diventino
informazione. Inoltre a tale scopo è importante l’ordine logico del contenuto che messo
37
2. Content Management Systems Il Content Management
insieme va a costruire informazione. L’ordine logico di un giornale, ad esempio, sta nella
suddivisione spaziale della carta e nel modo in cui sono scritte le componenti di un articolo: il
titolo è scritto in caratteri più grandi e il sottotitolo in piccolo, il testo è diviso in paragrafi,
eccetera. Quindi l’ordine spaziale e la presentazione portano con sé un contenuto informativo
di tipo implicito che viene intuito senza porgervi attenzione. Vedremo avanti l’importanza
della presentazione nei sistemi di gestione dei contenuti in quanto lo scopo di questo
paragrafo è quello di chiarire cosa si intenda per dato, contenuto ed informazione in genere.
2.1.3 I metadati per l’incapsulamento del contenuto
Per processare il contenuto mantenendo l’intelligibilità e l’interpretazione umana sono
state sviluppate tantissime tecniche di incapsulamento. Questi metodi cercano di incapsulare
contenuto e informazione rispettando l’aspetto umano in modo da processarli come dati. I
computers non possono capire i significati che si nascondono dietro il contenuto che si sta
processando ma possono elaborare i risultati richiesti per l’utente umano. Questi risultati
conterranno un significato astratto che può essere interpretato solo dall’uomo. Definire i dati
con informazioni e trasformarli in contenuto è un processo simile a quello che si riscontra
ogni giorno in ogni situazione, ad esempio quando cerchiamo un libro in biblioteca o un film
in videoteca andiamo ad estrapolare informazioni da altre di cui siamo già in possesso. Una
biblioteca disporrà di un terminale per interrogare un motore di ricerca che effettua la ricerca
per titolo, categoria e/o per autore, mentre in una videoteca per un film avremo gli attori, il
regista o l’anno di uscita del film. Quindi possiamo vedere una biblioteca come una stanza
piena di dati (i libri) mentre se affianchiamo un motore di ricerca e un data base avremo una
stanza piena di contenuti reali. Quindi i libri sono divenuti più che semplici dati dopo che gli
si è data una descrizione. Dare una descrizione significa assegnare metadati ad altri dati che
vanno a comporre un contenuto.
38
2. Content Management Systems Il Content Management
Quindi i metadati sono “dati sui dati” che servono a definire l’aspetto umano del contenuto.
Il primo utilizzo intensivo dei metadati è nato grazie al web, dove l’immensa mole di dati ha
richiesto metodi nuovi per la gestione e il ritrovamento delle informazioni.
Le tecnologie di assegnazione di metadati si basano su standards di pubblicazione su Internet.
Lo standard tecnologico leader del settore è l’XML che è utilizzato anche per definire l’RDF
(Resource Description Framework), una sintassi raccomandata dal W3C che è alla base del
Semantic Web13.
I CMS, al fine di gestire l’archiviazione e la ricerca dei contenuti, si devono occupare anche
dei metadati e della loro gestione. Ad esempio per un documento di testo i possibili metadati
sono l’autore, la data di pubblicazione o le parole chiave per la ricerca. Invece per un filmato i
metadati possibili sono la durata, la descrizione delle scene iniziali o le persone che appaiono
nel filmato. I metadati sono quindi strettamente legati ai contenuti che descrivono e non
devono variare, ad esempio trasferendo un contenuto da un sistema informativo ad un altro.
Inoltre non devono essere confusi con i dati di servizio che possono cambiare da un sistema
ad un altro, come ad esempio il nome del file che racchiude il contenuto.
2.1.4 Aspetti principali del CM
La gestione dei contenuti può esser vista come un’insieme di tecnologie ed azioni atte a
supportare il ciclo di vita evolutivo dell’informazione digitale. D’ora in avanti chiameremo
generalmente contenuto qualsiasi tipo di informazione digitale (audio, video, documenti
elettronici). Il ciclo di vita del contenuto può esser riassunto principalmente in sei fasi:
creazione, aggiornamento, pubblicazione, traduzione, archiviazione e ritiro. Naturalmente
13 Sematic Web, definito da Berners-Lee, Hendler & Lassila nel 2001 come “un’estensione del web attuale dove alle informazioni è assegnato un ben definito significato, che meglio permette alle persone e ai computers di lavorare in cooperazione”.
39
2. Content Management Systems Il Content Management
possono presentarsi fasi particolari collegate al tipo di contenuto. Nella prossima figura sono
elencate altre tra le operazioni principali facenti parte del ciclo di vita del contenuto:
Figura 2.1- Fasi, componenti del ciclo di vita del contenuto e specializzazioni principali dei sistemi.
Bisogna andare a considerare l’aspetto collaborativo della creazione di un generico contenuto.
Infatti spesso vi è la necessità che una o più persone contemporaneamente possano controllare
ed editare il contenuto, ed eventualmente modificarlo nel tempo. Si parla allora di Concurrent
Managing (gestione concorrente) o di Groupware nel caso dei software applicativi studiati
per realizzare questo scopo.
40
2. Content Management Systems Il Content Management
2.1.4.1 Concurrent Management
La gestione dei contenuti è molte volte, e soprattutto in campo aziendale, un processo
collaborativo di creazione e distribuzione dell’informazione. Principalmente in questo settore
si ritrovano i seguenti ruoli, ma ogni organizzazione può averne altri legati al tipo di
informazione fornita o ai servizi offerti:
Autore – responsabile della creazione e della modifica del contenuto;
Editore – responsabile della messa a punto, dello stile di pubblicazione, della traduzione e della localizzazione del contenuto;
Pubblicatore – responsabile del rilascio del contenuto per gli scopi specifici;
Amministratore – responsabile della gestione dei permessi di accesso al contenuto, generalmente applica e definisce i ruoli per determinati gruppi di utenti. Inoltre ha il compito di supportare gli altri utenti bisognosi di assistenza;
Consumatore o utente esterno – utente che legge o preleva il contenuto dopo che è stato pubblicato e condiviso.
L’aspetto collaborativo è di fondamentale importanza. Se pensiamo, ad esempio, ad una
azienda che sta lavorando ad un progetto, troveremo varie persone organizzate in team che
lavorano su determinati aspetti di quel progetto. Questi gruppi di solito sviluppano parti
separate e/o lavorano in concomitanza sviluppando, integrando e testando il proprio lavoro
separatamente gli uni dagli altri prima di poter mettere il proprio lavoro nel progetto finito. A
volte il lavoro di ogni gruppo è sviluppato in successione al lavoro di altri.
Da quanto detto si intuisce la necessità di avere a disposizione degli strumenti di
organizzazione. A tale scopo, soprattutto in campo aziendale, sono nati software per la
gestione automatica delle attività di collaborazione che vanno sotto il nome di Groupware. La
funzione chiave del groupware è quella di fornire strumenti e metodologie per minimizzare i
conflitti ed organizzare il lavoro di gruppo. I tre principali ambiti di lavoro che il groupware
promette di supportare sono: la comunicazione, il coordinamento e la cooperazione.
41
2. Content Management Systems Il Content Management
L’aspetto più interessante di un sistema di groupware, è la capacità di integrare questi ambiti
rispettando un progetto prestabilito, che si basa su filosofie e metodologie produttive proprie
di una determinata organizzazione.
La gestione concorrente è un aspetto che si ritrova facilmente ovunque vi sia
un’organizzazione di persone che lavorano in concomitanza a progetti comuni.
2.1.4.2 Revision Control
Il controllo di revisione, conosciuto anche come Versioning o come Version Control, è
uno strumento nato nel campo dello sviluppo software per tener traccia dei cambiamenti del
codice sorgente e che si applica anche alla gestione dei contenuti. Rientra nella categoria dei
sistemi di gestione della configurazione software (SCM – Software Configuration
Management) e gioca un ruolo integrale nei progetti di larga e media scala. E’ una
componente fondamentale per tenere traccia dei cambiamenti di un progetto perchè permette
eventualmente di annullarli per tornare ad uno stato precedente. Ad esempio, per quanto
riguarda la gestione dei contenuti in ambito aziendale, molto spesso può capitare che gli autori
o l’editore abbiano la necessità di recuperare vecchie versioni di un prodotto recentemente
modificato che magari ha avuto una serie di modifiche indesiderate.
Altro fattore importante che incombe nella creazione e nel mantenimento dei contenuti è la
necessità di applicare degli standard di revisione. Infatti, dalla creazione dei contenuti fino
alla pubblicazione, può rendersi necessaria l’introduzione di revisioni da parte di un utente, o
di un gruppo, che deve necessariamente avere un ruolo o una serie di responsabilità nello
sviluppo o nella pubblicazione dei contenuti. Ogni utente o gruppo di revisori deve rispettare
una serie di regole precise di revisione per assicurare lunga vita alla consistenza del
contenuto.
42
2. Content Management Systems Il Content Management
2.4.1.3 Deployment
Il Deployment14 nel Software Engineering è usualmente il processo finale di
presentazione del prodotto al consumatore. Include dei sottoprocessi quali: l’installazione del
software, il testing, il training e la messa in opera. Nello sviluppo web si riferisce al processo
di pubblicazione dei contenuti all’utente finale per mezzo dei web server, come accade per le
pagine di un sito o per l’intero sito. Gli strumenti per il deployment permettono di copiare o
spostare oggetti nel server di produzione nella posizione desiderata. Per un progetto
collaborativo occorrono delle regole per definire una metodologia di gestione del server che
permetta ad una persona, o ad un gruppo, di effettuare immissioni di nuovi contenuti in modo
indipendente. Solitamente queste regole sono contenute nel “release agreement” (accordo di
rilascio) e devono esser comprese e seguite da tutti gli sviluppatori.
2.4.1.4 Workflow
Il workflow rappresenta il concetto di automatizzazione (parziale o completa) di un
processo nel corso del quale documenti, informazioni o compiti passano da un partecipante
all’altro, all’interno del gruppo di lavoro, in maniera conforme ad un insieme di regole
predefinite.
Genericamente rappresenta l’aspetto operazionale di una procedura di lavoro e serve a
definire come sono strutturati i vari tasks (compiti), chi li gestisce, qual è il loro ordine, come
sono sincronizzati, qual’è il flusso di informazioni da mantenere e come questi sono
sviluppati.
14 Deploy: termine inglese usato in ambito militare per intendere lo spiegamento di forze in campo.
43
2. Content Management Systems Il Content Management
Nello specifico c’è una distinzione da fare tra il concetto scientifico e quello commerciale di
workflow. La prima riguarda il flusso dei dati attraverso i vari algoritmi o applicazioni,
mentre la seconda riguarda lo scheduling esecutivo dei tasks con le relative interdipendenze
che possono includere agenti umani e non solo dati. In ogni caso il fine dello studio di un
workflow è quello di tenere alto il rendimento in un processo collaborativo. Molto spesso per
modellare ed analizzare il workflow si rendono indispensabili formalismi grafici (come le reti
di Petri).
Una buona realizzazione di un workflow migliora la produttività di un’azienda ottimizzando i
vari processi, minimizzando i tempi tra passi successivi andando ad automatizzare compiti
molto spesso ripetitivi.
2.1.5 Evoluzione del CM
Il CM, e quindi anche i sistemi di CM, si è evoluto e specializzato in vari campi di
applicazione che vanno dal Web CM all’ Enterprise CM (aziendale) o dal Document and
Knowledge al Digital Assets Management (gestione di beni digitali). Quindi l’aspetto della
gestione dei contenuti è un punto cruciale in ogni azienda o associazione che deve gestire un
qualche tipo di informazione. Aziende di varie branche che sono a contatto con l’Information
Technology hanno visto nel CM una disciplina da seguire per ottenere ovvi vantaggi in
termini di gestione, di risparmio di tempo (e denaro) e di ottimizzazione delle informazioni.
Più avanti passeremo in rassegna i sistemi di gestione dei contenuti principali specializzati in
questa o quella branca.
44
2. Content Management Systems Architettura di un CMS
2.2 Architettura di un Content Management System
Avendo visto cosa si intende per gestione dei contenuti andiamo ad analizzare le
componenti fondamentali degli odierni sistemi di gestione dei contenuti. Queste si dividono in
base all’aspetto funzionale che ne deriva e in linea di principio si occupano dell’acquisizione,
della memorizzazione, della gestione del flusso di lavoro, e della pubblicazione dei contenuti.
Un CMS fornisce una serie di processi automatizzati per il supporto delle seguenti funzioni:
Importazione e creazione di documenti e materiale multimediale Gestione del ciclo di vita del contenuto Definizione dei flussi di lavoro Identificazione degli utenti chiave e dei loro ruoli Assegnazione dei ruoli e delle responsabilità a differenti categorie di contenuti Controllo di versione e tracciabilità delle modifiche dei contenuti Pubblicazione dei contenuti in repository per l’accesso ai contenuti Gestione delle ricerche dei contenuti e loro recupero
In un CMS le varie funzioni elencate sono gestite da sottosistemi appositamente creati per
venire incontro alle necessità di organizzazione e gestione, di sicurezza, di flusso di lavoro e
di pubblicazione dei contenuti.
2.2.1 Importazione del contenuto
Questo è il primo aspetto di cui si occupa un CMS. In questa fase è necessario
recuperare contenuto per la pubblicazione e organizzarlo in un insieme strutturato di
informazioni. Principalmente i processi principali che avvengono in questa fase possono
essere la creazione del contenuto ex novo, l’acquisizione da fonti esterne, la conversione da
altri formati, l’aggregazione di contenuti preesistenti. E’ importante che il sistema di recupero
del contenuto sia ben fondato perché il CMS funzioni correttamente altrimenti si rischia di
45
2. Content Management Systems Architettura di un CMS
avere informazioni poco riutilizzabili per la pubblicazione che possono richiedere un pesante
intervento umano di revisione.
2.2.2 Gestione del contenuto
Un CMS si preoccupa di memorizzare e recuperare i contenuti all’interno del suo data
base. Le funzioni principali sono quelle che riguardano la memorizzazione, la selezione, la
cura della sicurezza e della connessione ad altre fonti di contenuti. Solitamente sono presenti
più sottosistemi per gestire singolarmente ed efficientemente i compiti elencati.
Per quanto riguarda la memorizzazione si possono avere vari modi di espletamento di questo
compito. E’ possibile ad esempio l’organizzazione del contenuto in files sul file system dove
risiede il CMS, oppure in una o più basi di dati, o si possono avere entrambe le soluzioni. Se
per esempio si ha del contenuto multimediale, una base di dati può, oltre che fornire i
metadati sul contenuto, indicizzare il contenuto stesso presente sul file system del CMS.
Il processo di selezione prevede la possibilità di recuperare il contenuto in base ai metadati ad
esso associati, una volta che siano stati ovviamente inseriti.
Nella gestione dei contenuti la questione della sicurezza deve essere necessariamente
considerata, come già è stato esposto in precedenza, per ovvi motivi di consistenza e recupero
(da danneggiamenti o modifiche) dei contenuti. Inoltre la gestione della sicurezza prevede
anche il controllo dei diritti degli utenti, come già visto, attori del funzionamento del CMS.
Abbiamo menzionato anche la necessità di connessioni ad altre fonti di contenuti. Infatti al
giorno d’oggi risulta un aspetto fondamentale quello di poter far si che sistemi informativi
differenti possano comunicare l’un l’altro allo scopo di condividere contenuti per popolare
banche dati o per altri scopi specifici.
46
2. Content Management Systems Architettura di un CMS
2.2.3 Flusso di lavoro
Il flusso di lavoro è fondamentale per il rispetto delle varie fasi del ciclo di vita del
contenuto. Serve, quindi, a rendere efficienti i processi di recupero, memorizzazione e
pubblicazione dei contenuti, andando a definire le tempistiche e le azioni possibili per ogni
fase. Il flusso di lavoro è strettamente collegato ai tipi di contenuti da pubblicare ed ai vari
attori del mantenimento del CMS. Deve comprendere tutti i passi del processo di
pubblicazione considerando le varie fasi, le funzioni, gli strumenti adoperati. Quindi è una
scansione temporale del flusso informativo che prevede il controllo delle transazioni e degli
stati possibili per i contenuti. La gestione del flusso di lavoro dà la possibilità di
automatizzare le azioni sul contenuto ad esempio andando a notificare agli attori interessati ad
un determinato compito che viene richiesto il loro intervento.
2.2.4 Pubblicazione dei contenuti
Tra le componenti principali di un CMS vi è quella dedicata alla pubblicazione dei
contenuti, necessaria per creare automaticamente le pubblicazioni ad esempio in formato
Html per la visualizzazione su web o in formati cartacei per la stampa, ad esempio in PDF.
Un aspetto importante di questo sistema è quello di adoperare dei template (modelli) per la
costruzione dinamica di documenti a partire dal contenuto memorizzato nei data base. I
template sono le parti essenziali di presentazione dei contenuti e, a seconda del mezzo di
pubblicazione, possono includere parti testuali, immagini o contenuti multimediali. Queste
parti di presentazione sono dei punti fissi progettati per essere parte integrante del contenuto
pubblicato. La struttura dei template viene definita dal personale dedicato alla presentazione,
come i webmasters nel caso di pubblicazione su web. Una volta definito il template la
47
2. Content Management Systems Architettura di un CMS
pubblicazione avviene in maniera automatica attraverso di essi ad opera di sottosistemi
automatici del CMS. Infatti nel presentare il contenuto informativo i template vengono
popolati automaticamente da elementi presenti nel data base del CMS. Questo rappresenta
quindi l’aspetto di creazione dinamica delle pubblicazioni dei contenuti nei CMS.
2.3 Categorie di Content Management Systems
Abbiamo visto le funzioni principali di un CMS. Adesso andiamo ad elencare
brevemente i tipi di CMS specializzati in determinati campi di applicazione e che per questo
hanno acquisito nominazioni specifiche. Bisogna precisare che pur essendo stati suddivisi non
presentano grosse differenze ma generalmente ognuno di questi sistemi possiede le
caratteristiche principali dei CMS alle quali ha aggiunto determinate funzioni per gli scopi
particolari che vuole ottenere.
2.3.1 Web Content Management Systems
Rappresentano la categoria più diffusa e generica di CMS e sono focalizzati
principalmente sulla pubblicazione di contenuti su web. I WCMS permettono di gestire siti e
portali web che forniscono pagine HTML sia al pubblico attraverso Internet, sia all’interno di
Intranet per scopi aziendali. Com’è facile immaginare l’applicazione più diffusa è quella nel
campo dell’ e-commerce ma si contano numerose applicazioni anche in campi che non hanno
come scopo principale quello della vendita di beni o servizi ma offrono servizi informativi
gratuiti, come ad esempio l’e-government. A questa categoria appartengono anche sistemi più
48
2. Content Management Systems Architettura di un CMS
semplici che permettono di gestire facilmente piccoli siti o siti più complessi come forum e
blog.
49
2. Content Management Systems Categorie di CMS
2.3.2 Document Management Systems
La categoria dei cosiddetti DMS si differenzia dagli altri nel tipo di contenuto gestito
che non è generico ma si riferisce a documenti, in formato elettronico, propri di una azienda o
organizzazione. I documenti possono essere di vario tipo e contenere informazioni di vario
genere, ed è proprio in base alla funzione che hanno che il DMS aiuta a gestirli in maniera
efficiente per mezzo della catalogazione. Quindi un aspetto fondamentale è quello
dell’utilizzo dei metadati per la classificazione dei documenti, oltre alla necessità di gestire i
flussi di lavori ed eventualmente elaborare parti dei documenti. Il DMS gestisce gli archivi
tenendo traccia della storia dei vari documenti ed eventualmente delle relazioni tra di essi,
fornendo mezzi di ricerca e navigazione che facilitano il recupero. Per cui possono aiutare a
gestire bene documenti fortemente strutturati come specifiche tecniche o documentazioni di
tipo legale.
2.3.3 Digital Assets Management Systems
A questa categoria appartengono sistemi applicativi molto simili ai DMS ma che
gestiscono prevalentemente file di tipo binario contenenti audio, video e immagini. Anche qui
i metadati giocano il loro importante ruolo nel catalogare e facilitare la ricerca dei contenuti
che possono essere esterni al sistema stesso, come ad esempio nel caso di un DAMS che tiene
traccia delle videoregistrazioni di un’emittente televisiva facilitando il prelievo e il montaggio
dei materiali video. Nella gestione del flusso di lavoro possono includere strumenti di
authoring video che semplificano l’acquisizione di video analogici in formati digitali o la
conversione in formati utili per la pubblicazione sul web.
50
2. Content Management Systems Categorie di CMS
2.3.4 Learning CMS
A questa categoria appartengono sistemi di CMS e Web CMS che si inquadrano
nell’ambito dell’e-learning, e sono in grado di strutturare il contenuto di pagine web a partire
da blocchi di contenuti base, combinabili per ottenere la distribuzione e la fruizione di
contenuti formativi attraverso la rete. Consentono la costruzione di portali web dedicati alla
formazione distribuita, per cui rappresentano una componente base delle piattaforme di
E-Learning per gestire le attività formative offerte all’utente attraverso la rete. Ad esempio
aiutano a gestire le informazioni sui corsi e sugli utenti registrati ai corsi o mettono a
disposizione di questi ultimi gli strumenti principali di e-learning quali: document repository
per l’accesso a materiali didattici, forum e chat di discussione, lavagne condivise o
collegamenti in videoconferenza.
2.3.5 Enterprise CMS
Rientrano in questa categoria quei sistemi software di supporto all’Enterprise Content
Management (ECM) che forniscono tecnologie e strategie di lavoro per l’industria dell’IT e si
preoccupano della gestione, della cattura, della memorizzazione, del revision control, della
distribuzione, della preservazione o della distruzione di documenti e contenuti aziendali.
I sistemi di ECM sono progettati per gestire contenuti strutturati o non che consentano a
qualche organizzazione, commerciale o governativa, di raggiungere in maniera efficiente i
propri scopi, come il miglioramento dei profitti o la gestione ottima delle risorse, oltre che
aiutare a servire efficacemente i consumatori.
51
2. Content Management Systems Content Management Systems Open Source
2.4 Content Management Systems Open Source
Dopo aver visto quali sono le caratteristiche salienti dei CMS e avendo elencato
brevemente alcune tra le varie specializzazioni, vogliamo andare a vedere alcuni esempi di
applicativi a sorgente aperto presenti sul mercato tra i più conosciuti, per andare infine a
parlare di un applicativo in particolare che è stato scelto per la costruzione di un portale web
dedicato ad un progetto di ricerca. Nell’ambito della costruzione del portale è stato da subito
considerato l’utilizzo di strumenti CMS a sorgente aperto in quanto rientrano nella logica
dello sviluppo scientifico e della condivisione della conoscenza, aspetti fondamentali per un
progetto di ricerca stesso.
Ma prima di cominciare vediamo quali sono le caratteristiche del software a sorgente
aperto e come si rispecchiano nei CMS, quali possono essere i vantaggi ottenibili e le
limitazioni che possono scaturire dall’utilizzo di CMS Open Source.
2.4.1 La filosofia del Software Libero
I primi software sviluppati nei laboratori di ricerca della Bell, della Xerox, o al
laboratorio del MIT (Massachusetts Institute of Technology) venivano diffusi senza alcuna
licenza di uso o di distribuzione secondo la filosofia della ricerca scientifica per cui ogni
scoperta o risorsa appartiene a tutta la comunità scientifica. Infatti la condivisione della
conoscenza è alla base del metodo scientifico e senza di essa non ci può essere progresso
scientifico. Successivamente quando il software cominciò a diffondersi e ad esser visto come
prodotto commerciale piuttosto che scientifico, si iniziò a rivendicarne la proprietà e a
proteggerne i diritti intellettuali attraverso le licenze d’uso, distribuendolo solo in forma
binaria. In questo modo prevalse l’aspetto commerciale a discapito di quello tecnico per cui
52
2. Content Management Systems Content Management Systems Open Source
quello che interessava maggiormente era l’affermazione nel mercato dei prodotti software, e
bisogna dire che questo ha sempre premiato le aziende che riuscivano a vendere bene il loro
prodotto a discapito della qualità del prodotto stesso. La storia è piena di esempi di software
che si sono ben affermati pur avendo concorrenti che offrivano qualità tecniche nettamente
maggiori ma che erano poco noti o poco pubblicizzati. D’altro canto il software libero ha
sempre rappresentato l’altro lato della medaglia, ma è stato poco considerato in quanto era
erroneamente inteso come gratuito e di scarsa qualità.
2.4.1.1 Le libertà del Free Software
Il software libero ha sempre messo in primo piano il concetto di condivisione della
conoscenza ed oggi, dopo che molti software liberi si sono ben affermati, si può dire che
difficilmente può esser pensato come prodotto di bassa qualità, anzi molti pensano il
contrario. Basta considerare la diffusione che ha avuto il sistema operativo GNU/Linux, ideato
proprio come strumento libero in opposizione al software proprietario che è antisociale e
contrario all’etica della cooperazione. Questo è quello che pensavano i padri fondatori della
Free Software Foundation tra cui c’è l’ideatore del progetto GNU (acronimo ricorsivo di
GNU’s Not Unix), Richard Stallman, ricercatore presso il AI Lab del MIT, che nel 1983 creò
il progetto GNU e nell’anno seguente fondò la Free Software Foundation. Stallman diede
quindi vita al progetto GNU per creare un completo sistema (dal sistema operativo agli
applicativi) libero nel quale fosse possibile la cooperazione nel reciproco interesse. Il software
libero è quindi una questione di libertà, non di prezzo. L’espressione Software libero si
riferisce alla libertà dell’utente di eseguire, copiare, distribuire, studiare, cambiare e
migliorare il software. Più precisamente, esso si riferisce a quattro tipi di libertà per gli utenti
del software:
Libertà 0 - Libertà di eseguire il programma, per qualsiasi scopo.
53
2. Content Management Systems Content Management Systems Open Source
Libertà 1 - Libertà di studiare come funziona il programma e adattarlo alle proprie necessità.
Libertà 2 - Libertà di ridistribuire copie in modo da aiutare il prossimo.
Libertà 3 - Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.
Quindi per far si che siano possibili queste libertà l’accesso al codice sorgente è un
prerequisito fondamentale.
Un programma è software libero se l’utente ha tutte queste libertà. In particolare è libero di
ridistribuire copie, con o senza modifiche, gratis o addebitando le spese di distribuzione.
Essere liberi di fare queste cose significa che non bisogna chiedere o pagare nessun permesso.
Bisogna anche avere la libertà di fare modifiche e usarle privatamente nel proprio lavoro o per
divertimento senza doverlo dire a nessuno. Se si pubblicano le proprie modifiche, non si deve
essere tenuti a comunicarlo a qualcuno in particolare o in qualche modo particolare.
La libertà di usare un programma significa libertà per qualsiasi tipo di persona od
organizzazione di utilizzarlo su qualsiasi tipo di sistema informatico, per qualsiasi tipo di
attività e senza dover successivamente comunicare con lo sviluppatore o con qualche altra
entità specifica. La libertà di ridistribuire copie deve includere le forme binarie o eseguibili
del programma e anche il codice sorgente, sia per le versioni modificate che non modificate.
Per esempio, il copyleft, detto in parole povere, impone la regola per cui, quando un
programma viene modificato e ridistribuito, non è possibile aggiungere restrizioni alle licenze
per negare ad altre persone le libertà principali.
2.4.1.2 Le Licenze nel Free Software
Indipendentemente dal fatto che si siano ottenute copie di software GNU a pagamento
o gratuitamente, si ha sempre la libertà di copiare e cambiare il software, e anche di venderne
54
2. Content Management Systems Content Management Systems Open Source
copie. È importante a questo punto chiarire alcuni aspetti delle licenze software. Come tutti i
tipi di software, cioè sia quello libero che quello non libero, la tutela dell’opera è sottoposta
alla normativa sul diritto d’autore e quindi la distribuzione viene regolata da una licenza.
Generalmente questa licenza viene usata per limitare le azioni dell’utente e garantire l’autore.
Le licenze del software proprietario, come ad esempio l’EULA della Microsoft (End-User
License Agreement – contratto di licenza finale), impongono restrizioni a quello che si può
fare con il programma che si acquista:
La copia non è permessa.
Non è possibile modificare il codice e ridistribuire eventuali modifiche.
Ovviamente non è possibile studiare il funzionamento del programma poiché i sorgenti non sono disponibili.
Al contrario, nella comunità del software libero il copyright viene sfruttato per garantire
all’utente finale le quattro libertà fondamentali. Esistono numerose licenze di software libero,
ma la più rappresentativa e utilizzata è senza dubbio la GPL (General Public License). Essa,
oltre a garantire le quattro libertà, impone anche che le modifiche siano rilasciate sotto la
stessa licenza. Questo è effettivamente un vincolo ma serve solamente per garantire la libertà
e per impedire che software derivati siano venduti come programmi proprietari. Per software
con queste caratteristiche è stato coniato il termine copyleft: un gioco di parole (Copyright...
all right reserved; Copyleft... all right reversed) traducibile con il termine “permesso d’autore”
che vuole sottolineare il fatto che i diritti vengono lasciati all’utente. Un programma è quindi
“copylefted” se la sua licenza prevede che le modifiche possano essere distribuite solo con la
licenza del programma originale. Tuttavia esistono moltissime altre licenze di software libero
e che quindi rispettano le quattro libertà fondamentali: ad esempio un’altra licenza piuttosto
utilizzata è la BSD con cui vengono distribuiti sistemi operativi come FreeBSD e NetBSD.
Anch’essa è libera ma si distingue nettamente dalla GPL in quanto non è di tipo copyleft:
questo significa che il software derivato può essere distribuito sotto qualsiasi altra licenza,
anche proprietaria. È fondamentale notare che anche qui il prezzo non c’entra nulla: esiste
55
2. Content Management Systems Content Management Systems Open Source
infatti software libero commerciale, cioè a pagamento (alcune distribuzioni Linux, ad
esempio), così come esiste software proprietario liberamente scaricabile dalla rete e gratuito
(vedi Internet Explorer della Microsoft). Entrambe le licenze citate presentano pregi e difetti.
La GPL, da una parte, riflette l’idea della cooperazione: se si concede ad altri la possibilità di
modificare e ridistribuire il software, costoro sono tenuti a concedere le stesse libertà sulle
loro modifiche. Alcuni considerano questa restrizione insopportabile, anche se il suo scopo è
solo quello di assicurare la libertà degli utenti. La licenza BSD invece, riflette l’idea del dono
liberale: chiunque può fare ciò che meglio crede con il mio programma. Il problema in questo
caso è che chiunque può modificare e ridistribuire il software anche in forma non libera,
togliendo quindi libertà agli utenti.
2.4.1.3 Il movimento Open Source
Il copyleft è una delle caratteristiche chiave che distinguono vari tipi di licenze di
software Open Source. Il copyleft è divenuto l’argomento chiave nella battaglia ideologica tra
il movimento Open source e il movimento Free Software: il copyleft è l’abbreviazione di un
meccanismo legale che assicura che i prodotti derivati da un lavoro coperto da licenza
rimangano liberi (cosa non obbligatoria in un approccio open source). Se il concessionario di
un lavoro coperto da copyleft distribuisce dei lavori derivati che non sono coperti dalla stessa
(o in alcuni casi da una simile) licenza copyleft, allora dovrà affrontare delle conseguenze
legali: per molti lavori in copyleft questo implica che alcune condizioni della licenza cessino,
lasciando il concessionario senza il permesso di copiare e/o distribuire e/o mostrare
pubblicamente e/o preparare prodotti derivati dal software iniziale in copyleft. Molte licenze
software open source, come quelle usate dai sistemi operativi BSD, l’X Window System e il
web server Apache, non sono licenze copyleft in quanto non richiedono di distribuire le opere
derivate con la stessa licenza. Esiste un dibattito in corso su quale classe di licenze fornisce un
più ampio grado di libertà. Questo dibattito è incardinato su questioni complesse quali la
56
2. Content Management Systems Content Management Systems Open Source
definizione di libertà e su quali libertà siano più importanti. Viene talvolta sostenuto che le
licenze copyleft tentano di massimizzare la libertà di tutti i potenziali riceventi futuri (libertà
dalla creazione di software proprietario), mentre le licenze di software libero non-copyleft
massimizzano la libertà del ricevente iniziale (libertà di creare software proprietario).
Purtroppo in inglese il termine free software può risultare equivoco. La parola free ha infatti
la capacità di far preoccupare qualsiasi imprenditore che lavora nell’industria del software.
Oltretutto il mondo del software libero ha come principale priorità quella di salvaguardare la
libertà dell’utente, sacrificando quindi altri aspetti, primo fra tutti l’aspetto economico. Non ci
vuole molto per capire che il fenomeno free software non è stato mai ben visto dal mondo
dell’industria del software. Per cercare di risolvere questa frattura, nel 1998 alcune personalità
importanti del mondo del Software Libero come Bruce Perens e Eric Raymond fondarono il
movimento dell’Open Source (Sorgente Aperto). Il termine fu appositamente scelto per
evitare ogni ambiguità, con il preciso intento di portare il free software nel mondo degli affari.
Decisero quindi di eliminare completamente la carica ideologica concentrandosi
esclusivamente sui vantaggi pratici che può portare lo sviluppo di un software che lasci il
codice sorgente a disposizione di chiunque.
Le argomentazioni a favore dell’open source non sono più quindi la libertà concessa
all’utente, ma la maggiore affidabilità e sicurezza, la conformità agli standard, la facilità di
adattamento alle proprie esigenze e l’indipendenza dai singoli fornitori.
Il movimento dell’Open Source ha avuto un notevole successo, probabilmente anche perché è
proprio negli ultimi anni che GNU/Linux è giunto a piena maturazione. L’esempio
probabilmente più lampante di questo successo è l’atteggiamento di approvazione che un
colosso dell’informatica come IBM ha avuto nei confronti dell’open source, anche se non è
certo l’unico esempio (vedi Amazon, Google, SGI, NSA, Sun). La voluta e ricercata neutralità
del movimento open source nei confronti degli aspetti etici del software libero è la
caratteristica fondamentale che lo distingue dal free software, che pone invece l’accento su
motivazioni ideologiche. Nonostante queste differenze, che spesso sono state oggetto di
57
2. Content Management Systems Content Management Systems Open Source
accese discussioni fra le due parti in causa, nella pratica i due movimenti hanno mezzi e
obiettivi comuni.
Nella realtà, infatti, le licenze software accettate dalla Open Source Iniziative sono le stesse
accettate anche dalla Free Software Foundation (con rare e poco significative eccezioni).
Entrambi i movimenti si basano quindi sulla libertà di accesso al codice sorgente, sulla
possibilità di poterlo liberamente modificare e poterlo ridistribuire altrettanto liberamente.
A conferma di questo, al giorno d’oggi i termini free software e open source sono solitamente
usati come sinonimi. Anche se non è formalmente ed ideologicamente corretto, la cosa è
comunque accettabile, purché si abbiano ben chiare le differenze tra i due movimenti.
2.4.2 I vantaggi del Free Software e dell’Open Source
Lo sviluppo di un software secondo il modello open source prevede quindi la
possibilità di ridistribuire liberamente qualsiasi programma, la disponibilità del codice
sorgente senza nessun costo aggiuntivo e la totale libertà nel modificare il software. Questo
modello di sviluppo porta con sé degli indiscutibili vantaggi. Vediamone nel dettaglio alcuni.
Basso costo iniziale
L’adozione di software open source porta normalmente a un risparmio iniziale in termini di
costi per licenze, ma anche di costi per gli aggiornamenti. I risparmi sono notevoli sugli
aggiornamenti a fronte delle politiche commerciali di alcuni produttori di software
proprietario, che propongono nuove versioni dei propri pacchetti vantandole come
rivoluzionarie rispetto alle versioni precedenti. In realtà, spesso le nuove versioni non portano
vantaggi all’utente in termini di funzionalità aggiuntive, ma l’utente è portato ad acquistarle
58
2. Content Management Systems Content Management Systems Open Source
per incompatibilità con le versioni precedenti, o per non rimanere disallineato nei confronti di
partner o clienti che usano la nuova versione. Un confronto economico più corretto deve
essere però compiuto non solo sulla spesa iniziale, ma tra il TCO (total cost of ownership)
delle soluzioni open source e il TCO delle soluzioni proprietarie. Oltre al costo delle licenze,
nel TCO confluiscono le spese dei servizi di supporto, della formazione, i costi di migrazione,
d’installazione e di gestione. Un noto argomento a favore del software open source è che, con
un minor costo delle licenze, il budget di un’organizzazione può prevedere costi più alti per i
servizi, e dunque in teoria più alti livelli di servizio.
In conclusione, non è detto che il TCO di una soluzione open source sia minore del TCO di
una soluzione proprietaria, ma normalmente la soluzione open source offre una maggiore
flessibilità nell’impiego del budget disponibile.
Indipendenza dai fornitori
Il modello open source impedisce il monopolio da parte dei produttori di software, e permette
un maggiore controllo da parte del cliente, ove il software proprietario costituisce invece uno
strumento di pressione (anche in sede di trattativa) da parte del venditore.
Si pensi ad esempio alla correzione di problemi riscontrati su un pacchetto software. Nel caso
open source, l’esistenza di comunità di sviluppatori diffuse nel mondo permette di ottenere
rapidamente correzioni degli errori rilevati (l’evoluzione di Linux, Apache e degli altri
pacchetti open source è avvenuta appunto in questo modo). Nel caso di software proprietario,
si deve attendere che il produttore rilasci una patch, e nel frattempo non si può intervenire sul
programma con conseguenze che possono risultare disastrose (vedi la questione della
sicurezza in rete). Per ciò che riguarda il software sviluppato su richiesta, l’indipendenza dal
fornitore consiste nel poter affidare il supporto di un prodotto open source a un azienda scelta
dal cliente, laddove nel mondo del software proprietario solo il produttore (o un suo partner
autorizzato) può supportare il proprio software. Oltre ai benefici della concorrenza, ciò
consente anche di favorire imprese locali.
59
2. Content Management Systems Content Management Systems Open Source
L’Italia è da sempre un paese forte consumatore di software, ma scarso produttore: il modello
open source potrebbe invertire questa tendenza, e offrire nuove opportunità in ambito
occupazionale.
Sull’argomento, un’obiezione che spesso viene posta all’open source è che questo modello di
sviluppo metterebbe in difficoltà l’industria del software. Al contrario, se nell’industria del
software si includono anche le aziende locali e non solo le multinazionali produttrici di
software proprietario, l’industria potrebbe nel complesso essere favorita.
Sicurezza
Disporre del codice sorgente dei programmi utilizzati all’interno della propria organizzazione
permette, ma non garantisce, un grado maggiore di sicurezza, specie in presenza di dati
sensibili, come nel caso della Pubblica Amministrazione. Infatti solitamente risultano più
agevoli i controlli interni, cosa che nei software proprietari è affidata ai produttori, alla ricerca
di eventuali bug o debolezze sfruttabili da attacchi esterni.
Flessibilità
È possibile realizzare versioni del software molto specializzate, il che porta facilmente a
implementazioni particolari, ad esempio per dispositivi embedded, o su hardware insufficiente
per altri programmi. In generale, il software open source è più adatto ad essere personalizzato
o esteso come funzionalità rispetto a un software proprietario.
Interoperabilità
In termini di interoperabilità, il software open source è più adatto del software proprietario.
Lo scambio di dati e funzioni tra prodotti diversi implica difatti, in generale, la realizzazione
di interfacce, e in caso di software proprietario solo chi detiene il codice sorgente può
realizzare tali interfacce. Si noti anche, a proposito dell’interscambio di dati, che l’uso di un
60
2. Content Management Systems Content Management Systems Open Source
formato aperto per condividere documenti e/o file non è tecnicamente legato all’open source:
software proprietari possono in teoria utilizzare comunque formati standard per la
condivisione. Tuttavia, per i produttori di software proprietario, l’uso di formati chiusi è una
politica commerciale che può portare ovvi vantaggi. Si pensi ai formati di Microsoft Office,
che impongono di fatto uno standard a cui gli utenti devono adeguarsi, per cui ad esempio un
utente è costretto ad acquistare la nuova versione di Excel (o di PowerPoint, o di Access) per
poter collaborare con altri utenti che la usano.
Portabilità
L’adozione di tecnologie flessibili, in grado di assicurare una completa portabilità a costi
irrisori, è un punto chiave nello sviluppo di servizi on-line. Una scelta di questo tipo si rivela
infatti lungimirante: consente l’upgrade dell’hardware o il cambiamento della piattaforma
software senza affrontare spese (sia in termini di tempo che di denaro) di porting e di adattare
il servizio alle più svariate esigenze.
2.4.3 CMS Open Source, pro e contro
Abbiamo visto cosa si intenda per software distribuiti sotto licenze open source,
andiamo adesso a vedere come il concetto si ripercuote nei sistemi di gestione dei contenuti.
Bisogna constatare che i CMS open source possono essere considerati buoni rivali di quelli
proprietari in quanto sono maturati bene nel corso degli anni parallelamente a questi ultimi ed
hanno sempre rappresentato una valida alternativa in risposta agli alti prezzi storicamente
richiesti dalle soluzioni proprietarie. Quindi si può dire che il primo fattore di interesse è
proprio quello del basso costo iniziale. Infatti il codice dei CMS open source si può ottenere
liberamente, senza costi, come pure il supporto, che molte aziende commerciali offrono per
61
2. Content Management Systems Content Management Systems Open Source
questi prodotti, è tipicamente meno costoso di quello per i CMS proprietari. Questi ultimi
hanno prezzi di licenza che vanno dalle centinaia ai milioni di euro specialmente quando
vengono richiesti servizi professionali. Bisogna ricordare che non tutti i software open source
sono ottenibili gratuitamente. Alcune organizzazioni, ad esempio, rilasciano licenze che
permettono l’utilizzo libero per scopi non commerciali mentre richiedono compensi se
l’utilizzo avviene da parte di organizzazioni commerciali. Ma anche in questo caso l’open
source è la soluzione più conveniente. Il basso costo è la componente che rende
particolarmente attrattivi i CMS open source specialmente per la costruzione di piccoli siti
web, per organizzazioni non-profit, o reparti governativi.
Quindi abbiamo detto che i costi che possono scaturire dall’adozione di soluzioni open
source dipendono unicamente da eventuali servizi professionali richiesti a quelle
organizzazioni che possono offrire supporto e know-how per il mantenimento di questi
strumenti. Ma vediamo quali sono le operazioni principali che bisogna tener conto di
affrontare quando si adottano CMS open source:
personalizzazione del CMS per rispondere alle proprie necessità
integrazione del CMS con eventuali sistemi preesistenti
sviluppo dei template, dell’aspetto grafico e del codice per la pubblicazione
rivisitazione, ristrutturazione ed eventuale creazione di contenuto
realizzazione di test di usabilità per il sito e per la parte riguardante l’amministrazione
formazione all’utilizzo per gli autori e per gli utenti
amministrazione delle attività di sicurezza e di comunicazione
Questi sono i principali fattori che determinano una buona riuscita nell’adozione di CMS a
sorgente aperto, e naturalmente quando non sono gestiti dai diretti fruitori possono far
scaturire dei costi extra che comunque restano più bassi in confronto al supporto a pagamento
offerto da organizzazioni commerciali per i CMS proprietari. Quindi se si vogliono abbattere
anche questi costi occorre adottare CMS a sorgente aperto che oltre a fornire il codice
sorgente offrano una adeguata documentazione al seguito che possa permettere la formazione
62
2. Content Management Systems Content Management Systems Open Source
di personale interno all’organizzazione che ne usufruirà e al tempo stesso possa garantire la
risoluzione di eventuali problemi scaturiti da necessità specifiche per quell’organizzazione.
La disponibilità di codici ben documentati è un fattore importante da considerare nella scelta
di un CMS a sorgente aperto per ovviare a problemi di personalizzazione o di mantenimento.
L’accesso al codice, se ben documentato, è una risorsa che garantisce un alto grado di
flessibilità nella personalizzazione del sistema di gestione dei contenuti, quindi è un vantaggio
non indifferente che presentano solo i sistemi open source, ma che necessita della conoscenza
dei linguaggi adoperati per quel particolare sistema. Nei sistemi proprietari invece il codice è
mantenuto nascosto appositamente per mantenere uniche le proprietà dei prodotti e
preservarne la competitività con quelli di altri fornitori. Per cui nel caso di sistemi proprietari
la personalizzazione è più complessa e richiede ulteriori investimenti come l’acquisto di
licenze sul codice sorgente o la richiesta di specifici pacchetti aggiuntivi di personalizzazione.
Un altro considerevole vantaggio è dato dal fatto che tipicamente i CMS open source
utilizzano sistemi di sviluppo e piattaforme di tipo open, come PHP, PERL, Python, Java e
Linux. In questo modo aumentano il numero di software di supporto e l’esperienza
disponibili, per cui si riduce il peso sugli sviluppatori ed inoltre è possibile non rimanere
legati a un determinato fornitore o software particolare con un conseguente risparmio
economico.
Altri benefici nell’ambito dell’utilizzo di CMS a sorgente aperto possono esser rappresentati
dal fattore dell’interoperabilità e dalla collaborazione reciproca di chi utilizza questi
strumenti. Infatti la condivisione del codice sorgente aiuta a migliorare sempre più il codice
stesso perché consente ad un’ampia comunità di sviluppatori di tutto il mondo di collaborare
allo sviluppo di questi strumenti attraverso la rete, con nuove idee e miglioramenti. Inoltre le
community di sviluppatori di software open source offrono un supporto che non presenta
alcun costo e per i CMS open più popolari si contano migliaia, se non milioni, di sviluppatori
in tutto il mondo. Il supporto che viene a crearsi è molte volte migliore di quello ottenibile dai
produttori di CMS commerciali, ad esempio se si riscontra un problema nel CMS e lo si
comunica al venditore possono passare anche mesi prima che venga risolto mentre per i CMS
63
2. Content Management Systems Content Management Systems Open Source
open source grazie alle ampie community può esser risolto anche in pochi giorni. Tutto ciò ha
contribuito a rendere popolari i CMS come molti altri software open source.
Tra le limitazioni che possono presentarsi nell’adozione di CMS a sorgente aperto bisogna
annoverare il fatto che la maggior parte delle soluzioni open source sono destinate a piccole e
medie implementazioni che difficilmente possono competere con i prodotti commerciali
destinati alle grandi aziende. Inoltre a differenza dei supporti offerti dai produttori
commerciali non è possibile ottenere alcuna garanzia di servizio. Comunque questo non
sempre accade perché bisogna far distinzione tra i CMS open source sviluppati e distribuiti
liberamente da comunità di programmatori “volontari” e quelli che sono distribuiti da aziende
commerciali che offrono supporto nello sviluppo e nella personalizzazione. Nell’ultimo caso
infatti oltre ad avere libero accesso al codice è possibile ottenere garanzie di servizio e di
supporto.
In definitiva possiamo dire che adottare CMS open source può essere molto vantaggioso in
termini di costi rispetto ai rivali proprietari, ma occorre fare una scelta ben accurata che tenga
conto degli aspetti citati .
64
2. Content Management Systems Content Management Systems Open Source
2.4.4 Alcune note implementazioni di CMS Open Source
Dopo aver visto quali possono essere i vantaggi che si possono ottenere dall’adozione di
Content Management Systems a sorgente aperto, andiamo ora a vedere degli esempi di alcune
ben affermate implementazioni evidenziandone gli strumenti di realizzazione utilizzati.
2.4.4.1 Cofax
Cofax è un Web-based content management system che è stato realizzato per semplificare la
presentazione di newspapers on-line ed accelerare la pubblicazione real-time di contenuti
testuali e multimediali sul Web. Cofax è essenzialmente un framework di moduli e strumenti
software adatti a gestire e distribuire notizie provenienti da diverse fonti. E’ nato inizialmente
come applicazione utilizzata internamente al gruppo editoriale “Knight Ridder”, e
successivamente è stato rilasciato con licenza LGPL (Lesser General Public License).
Per quanto riguarda la tecnologia utilizzata, Cofax utilizza le servlet Java, per implementare il
nucleo del suo funzionamento mentre per la memorizzazione dei dati utilizza MySQL
attraverso JDBC. Ha una architettura modulare che si può suddividere in quattro parti. La
prima, Cofax Feed System, si occupa di inserire il contenuto degli articoli, che devono essere
in un semplice formato XML, all’interno della base di dati, occupandosi del versioning degli
stessi e della gestione dei metadati. La seconda, Cofax Data Warehouse, è una API che
permette di avere un accesso uniforme a diverse basi di dati, senza che le altre parti di Cofax
debbano preoccuparsi delle differenze implementative tra un sistema e l’altro. Cofax CMS
gestisce il flusso di lavoro del sistema e permette un controllo redazionale su quanto viene
pubblicato: la versione attuale utilizza Java Servlets e JSP. Cofax Content Display System si
occupa della presentazione dei contenuti mediante l’utilizzo di template HTML ed
implementa un sistema di caching delle pagine per migliorare le prestazioni.
65
2. Content Management Systems Content Management Systems Open Source
2.4.4.2 Midgard
Midgard è un modulo aggiuntivo del web server Apache. Estende il linguaggio PHP
aggiungendo delle funzionalità per la creazione e la gestione di template e per memorizzare e
recuperare contenuto dal database MySQL. E’ rilasciato con licenza LGPL. Esiste anche una
versione, Midgard Lite, scritta completamente in PHP e quindi utilizzabile in caso di hosting
su sistemi generici in cui non è possibile compilare ed installare moduli aggiuntivi per
Apache.
Per mezzo dei template è possibile creare “stili” che rappresentano la struttura delle varie
pagine di un sito. Questi stili hanno un elemento “radice” che definisce la struttura principale
ed è costituito da più sottoelementi, che a loro volta possono essere composti da altri
sottoelementi. Dagli stili possono essere creati dei “sottostili” che ereditano tutti gli elementi
dallo stile superiore, ma che possono avere parti aggiunte o modificate, permettendo una
agevole manutenzione della struttura delle pagine. Midgard può visualizzare sia contenuti
statici che contenuti dinamici recuperati da una base di dati. Si ha a disposizione una struttura
ad albero di argomenti a cui vengono associati articoli ed il corretto template ad ogni nodo,
attraverso l’utilizzo di codice PHP. Midgard ha una serie fissa di oggetti: oltre agli articoli ed
agli argomenti ha ad esempio eventi e calendari, e per questi oggetti sono definite procedure
per la creazione, la modifica e la cancellazione, e metodi per ottenere liste di oggetti, le
relazioni fra essi, eccetera. Per l’amministrazione del sistema sono disponibili alcune
applicazioni di Midgard che permettono di gestire utilizzatori e struttura del sito attraverso
una interfaccia web. L’interfaccia per l’inserimento delle pagine è user-friendly ed è
modellata in modo da somigliare a quella di un tipico word processor.
Midgard è un applicativo molto potente e molto apprezzato ma per importanti
personalizzazioni necessita della conoscenza del linguaggio PHP. Inoltre bisogna considerare
che quando si acquistano spazi per hosting su server Apache non sempre è possibile ottenerne
l’installazione, rendendo necessario avere a disposizione un server personale.
66
2. Content Management Systems Content Management Systems Open Source
2.4.2.3 OpenCMS
OpenCMS è un sistema di content management libero basato su J2EE. Permette di creare siti
web off-line che possono venir pubblicati una volta arrivati ad una versione soddisfacente.
Quando un sito è off-line utenti differenti con differenti permessi possono lavorare su di esso
ed inoltre il project manager può suddividere il lavoro assegnando compiti ai diversi utenti,
che verranno automaticamente informati dei compiti che dovranno eseguire. Il project
manager una volta completato il sito lo mette on-line: le modifiche successive verranno
effettuate sempre off-line, e le parti modificate andranno a sostituire quelle in produzione una
volta pronte. OpenCMS utilizza un motore per servlet Java, come ad esempio
Apache/Tomcat. Il servlet OpenCMS (una singola classe) si occupa sia della presentazione
dei dati, tramite HTTP, che dell’accesso al database tramite JDBC.
Per ogni sito viene definito un frame template che a dispetto del nome non obbliga all’utilizzo
di frame HTML, anche se ovviamente è possibile impiegarli, ma semplicemente definisce la
struttura generale delle pagine del sito, e un content template all’interno del frametemplate
che permette di avere presentazioni differenti in parti diverse del sito. Infine è presente il
bodyelement che è la parte in HTML che definisce il contenuto delle pagine. E’ possibile
aggiungere nuove funzionalità ad OpenCMS mediante l’uso dei moduli aggiuntivi. I moduli
sono costituiti da un file compresso che può contenere classi Java, template, e
documentazione, con una struttura definita. OpenCMS tiene traccia dei moduli installati
rendendo così possibile una facile installazione e rimozione. Per utilizzare gli editor WYSWYG
occorre possedere browser recenti.
67
2. Content Management Systems Content Management Systems Open Source
2.4.4.4 Zope
Zope è più che un CMS, è un application server multipiattaforma, cioè un sistema integrato
per la gestione di applicazioni web che include in un solo prodotto un server HTTP, una
interfaccia di controllo via web, una base di dati ad oggetti, strumenti di connessione ad altre
fonti di dati esterne ed il supporto a linguaggi di scripting come il PERL. Grazie alla sua
struttura modulare, risulta possibile ampliare facilmente le sue funzionalità con caratteristiche
tipiche dei portali o dei CMS oppure costruire in maniera rapida applicazioni di e-commerce.
La differenza principale rispetto ad altre soluzioni è che si tratta di un pacchetto totalmente
autonomo. Dopo averlo installato, per il suo funzionamento non è necessario avere altri
programmi di supporto come web server per la gestione HTTP o DBMS per la
memorizzazione dei dati. E’ realizzato in Python, un linguaggio interpretato, che lo rende
multipiattaforma in quanto può essere portato su qualunque sistema operativo che abbia un
compilatore C ed un interprete Python funzionante. Nel caso si stia già utilizzando
un’architettura diversa per la gestione dei servizi web come per esempio J2EE od IIS/ASP
non è possibile però riutilizzare le parti già esistenti all’interno della struttura di Zope.
Vi è la possibilità di avere supporto commerciale sia dalla Zope Corporation, la società che
gestisce e sviluppa Zope, che da altre imprese commerciali che possono costruire applicazioni
basate su Zope in outsourcing. Se invece si intende sviluppare personalmente una
applicazione, su internet esiste tantissima documentazione a riguardo, nonché varie mailing
list e forum di utilizzatori e di sviluppatori come per tutti i prodotti open source di successo.
Per quanto riguarda la sicurezza, Zope offre un sistema di access listing attraverso il quale è
possibile controllare in maniera molto flessibile i ruoli degli utenti che possono accedervi.
Con Zope è possibile creare virtual host in modo da poter gestire in maniera indipendente
domini e sotto-domini diversi sulla stessa macchina.
Zope mette a disposizione ZEO (Zope Enterprise Objects), un sistema con il quale è possibile
avere più macchine che contemporaneamente fanno girare Zope per gestire il bilanciamento
68
2. Content Management Systems Content Management Systems Open Source
del carico di lavoro e la sincronizzazione tra basi di dati ridondanti o tra siti che si trovano in
luoghi diversi.
Le pagine dinamiche possono essere create utilizzando diversi linguaggi, oltre al Python e al
PERL sono disponibili linguaggi a tag appositamente creati per Zope come il DTML
(Document Template Markup Language) e le ZPT (Zope Page Template, simili allo XSL15).
La gestione e l’amministrazione di tutto il sistema risulta agevole e coerente per chi abbia un
minimo di conoscenze informatiche. Infine va detto che la documentazione disponibile non è
molto completa per quanto riguarda alcuni aspetti e che trattandosi di un prodotto complesso
si può avere qualche difficoltà iniziale nell’utilizzarlo.
L’ impedimento più grande è dato dal fatto che essendo un prodotto indipendente da altri
sistemi è necessario che il fornitore dei servizi di hosting preveda la possibilità di utilizzarlo.
In altri termini una soluzione di hosting basata su Apache, MySQL e PHP oppure IIS,
Microsoft SQL Server ed ASP non può essere utilizzata per Zope.
In conclusione Zope rappresenta un ambiente per applicazioni web molto interessante:
permette di poter aggiungere funzionalità complesse con pochi sforzi grazie alla presenza di
moduli aggiuntivi, come il CMF di Zope che descriveremo piu avanti.
15 The Extensible Stylesheet Language Family (XSL): standard di linguaggi approvato dal W3C adoperato per definire stylesheets di presentazione per documenti XML.
69
2. Content Management Systems Scelta di un CMS Open Source
2.5 Scelta di un CMS Open Source
Bisogna dire che è molto difficile scegliere un CMS sia di tipo commerciale che Open
Source, in quanto se ne contano disponibili a migliaia in tutto il mondo ed è quasi impossibile
conoscerli tutti, anche se in rete sono nati portali tematici (come www.cmsmatrix.org che
conta più di seicento CMS o www.cmsreview.com che recensisce moltissimi CMS) ideati
apposta per facilitare la scelta e aiutare a confrontare i maggiori CMS.
E’ opportuno precisare che nel caso di CMS commerciali, sebbene i prezzi vadano dalle
centinaia alle migliaia di euro e il budget disponibile è un aspetto da considerare, non è
possibile basare una scelta principalmente sul prezzo in quanto le differenze che possono
sussistere da un sistema ad un altro, e l’incontro con le proprie necessità, rendono impossibile
una distinzione di questo tipo. I fattori fondamentali che determinano la scelta di un CMS
dipendono unicamente dall’uso che se ne deve fare, e quindi dalle prerogative che si vuole
che il sistema possieda.
Una punto a favore dei CMS open source rispetto ai proprietari è che quasi sempre è possibile
vedere una demo on-line del CMS sia presso i siti delle comunità o aziende produttrici sia
presso portali ideati appositamente (come www.opensourcecms.com ), cosa che può essere
molto utile per scegliere un CMS in base alle proprie esigenze.
Dicevamo che ovviamente il fattore principale che determina la scelta di un CMS è dato
dall’utilizzo previsto per il sistema stesso. Occorre un’attenta analisi dei requisiti richiesti che
scaturisca da un approfondito studio delle caratteristiche che si vuole che il sistema abbia per
risolvere i propri scopi. Una buona prassi può essere quella di elencare le varie caratteristiche
richieste o i fattori che si ritengono determinanti nell’utilizzo del sistema. Ad esempio un
possibile elenco delle necessità può includere la possibilità di modificare del tutto l’aspetto
grafico iniziale del CMS, la presenza di editor WYSWYG, la possibilità di inserire contenuti
multimediali, il rientro nel budget disponibile per l’acquisto o il supporto, il budget necessario
70
2. Content Management Systems Scelta di un CMS Open Source
per la formazione degli autori dei contenuti. Altre necessità possono esser determinate dalla
disponibilità o meno di web server e/o dal tipo dei sistemi operativi che vi girano sopra.
Conclusioni
Nell’ambito del lavoro svolto per la messa in opera di un portale web dedicato si è scelto di
utilizzare Plone, un CMS a sorgente aperto basato su Zope. La scelta è ricaduta su questo
sistema innanzitutto perché si aveva la disponibilità di hardware dedicato con sistema
operativo Linux (per cui non era necessario l’acquisto di un dominio su server esterno) e
secondariamente perché Zope facilita molto la messa in opera di un portale offrendo un web
server integrato pronto all’uso. Infine cosa non meno importante, Plone dispone già delle
componenti essenziali per il Content Management, come il controllo del flusso di lavoro, la
gestione della sicurezza e dei ruoli, oltre che una serie di tipi di contenuto predefiniti ed un
supporto multilingue.
Nel prossimo capitolo parleremo in dettaglio di come funziona Zope/Plone, dall’installazione
alla personalizzazione, e vedremo quali sono stati i requisiti analizzati nello studio di un
portale dedicato e come sono stati implementati nella personalizzazione del CMS Plone.
71
3 CMS Open Source per grandi portali
3.1 Introduzione a Plone
Plone è un sistema di gestione dei contenuti libero ed a sorgente aperto tra i più potenti
e flessibili. L’obiettivo di Plone è quello di fornire aiuto ad ogni livello di una organizzazione.
È dotato all’origine delle componenti essenziali per il Content Management, come il controllo
del flusso di lavoro, la gestione della sicurezza e dei ruoli, una serie di tipi di contenuto
predefiniti ed un comodo supporto multilingue. Plone inoltre vanta la disponibilità di molti
sviluppatori di tutto il mondo che contribuiscono al suo sviluppo.
La caratteristiche di un sistema CMS varia a seconda dei prodotti, ma nel caso specifico di
Plone esso include un sistema di pubblicazione basato su Web, la gestione dei formati dei
documenti, del controllo di versione, dell’indicizzazione, della ricerca e meccanismi avanzati
di sicurezza.
Il sistema di pubblicazione basato sul web permette di usare dei template (modelli) approvati
dall’ organizzazione, di wizard di configurazione ed altri strumenti per creare e modificare i
contenuti Web. Il sistema di gestione dei formati consente a documenti nei più svariati formati
elettronici di essere formattati in HTML o in PDF (Portable Document Format) per essere
inseriti nel sito Web. Il controllo delle versioni permette ai contenuti di essere aggiornati ad
una nuova versione oppure di ripristinarne una precedente. Inoltre viene tenuta traccia di ogni
cambiamento effettuato ai file dai singoli utenti. Attraverso il sistema di ricerca gli utenti
possono ricercare i dati usando delle parole chiave.
Plone si basa sul CMF di Zope (Content Management Framework), un ambiente di sviluppo
di sistemi di gestione dei contenuti, ed è uno tra i più potenti CMS per Zope conosciuti, per
questo nei prossimi paragrafi andremo a vedere in dettaglio il funzionamento di Zope che è
essenziale per capire le basi su cui si fonda Plone.
72
3. CMS Open Source per grandi portali Zope Application Server
3.2 Zope Application Server
Nel capitolo precedente abbiamo già introdotto brevemente Zope evidenziandone le
caratteristiche principali. Adesso andremo a vedere più in dettaglio le componenti di base del
suo funzionamento per capire meglio come sia implementato e per poter poi parlare di Plone,
uno dei sui prodotti CMS più importante e tra i più diffusi.
Abbiamo già detto che Zope più che un CMS è un application server, questo significa che
possiede un proprio web server e non necessita di sistemi esterni come Apache o IIS, con i
quali comunque è possibile integrarlo. Un application server non è altro che una piattaforma
che permette di costruire applicazioni web (spesso sono chiamati server per applicazioni web
o anche solamente server per applicazioni). Consente quindi la creazione di applicazioni web
che non sono altro che pagine web create dinamicamente dall’applicazione sul server e fornite
ai client mediante i browsers. Questi permettono di comunicare con l’applicazione specifica
che risiede sul server dal quale partono le pagine e sul quale è implementata l’applicazione.
Zope è sviluppato in linguaggio Python, un linguaggio interpretato, per cui si può dire che sia
platform indipendent in quanto è portabile su qualsiasi sistema operativo che abbia un
compilatore C e un interprete Python.
Utilizzare un application server già implementato può essere molto vantaggioso
rispetto al dover scrivere un’applicazione web dal principio in qualche linguaggio di
programmazione salvo nel caso un cui si abbiano esigenze estremamente particolari.
Adoperando una piattaforma di application server è possibile appoggiarsi sui servizi già
offerti dalla quella specifica piattaforma evitando di dover riscrivere da zero alcune
funzionalità essenziali per la gestione delle applicazioni.
73
3. CMS Open Source per grandi portali Zope Application Server
Ad esempio molti server di applicazioni presentano la possibilità di ottenere le seguenti
funzioni e/o caratteristiche:
La presentazione dinamica del contenuto: i contenuti vengono presentati in base alla
funzione degli utenti collegati prelevando il materiale dalle basi di dati
Manutenzione del sito web: quando un sito presenta migliaia di documenti, immagini
o file si rende necessario avere a disposizione un sistema di gestione dei dati
Creazione di un sistema di gestione dei contenuti: un server di applicazioni fornisce
gli strumenti con i quali poter costruire un sistema di gestione dei contenuti
Controllo di sicurezza e dei ruoli degli utenti: quando gli utenti che utilizzano
l’applicazione sono parecchi si rende necessario un meccanismo di gestione dei
permessi dei singoli utenti o di gruppi di utenti
Interoperabilità ed integrazione: un server di applicazioni può fornire servizi e
strumenti di integrazione con altri sistemi ad esempio per permettere la condivisione e
lo scambio dei contenuti gestiti
Scalabilità: un server di applicazioni può fornire sistemi di gestione distribuita del
carico di lavoro
Questo elenco rappresenta delle caratteristiche che è possibile ritrovare in molti server di
applicazioni web, ma bisogna dire che non vi è limite alle possibilità di realizzazione . Basta
aver presente che per mezzo di essi si può ottenere tutta la potenza di un linguaggio di
programmazione per cui si può dire che non vi siano limiti alle possibili realizzazioni di
applicazioni per scopi specifici.
74
3. CMS Open Source per grandi portali Zope Application Server
3.2.1 Caratteristiche e vantaggi di Zope
Zope può essere d’aiuto se si devono creare applicazioni web velocemente, abbattendo
i costi rispetto all’utilizzo di un server di applicazioni web concorrente. Questa asserzione
proviene da un certo numero di caratteristiche di Zope, quali:
Zope è gratuito ed è distribuito secondo una licenza open source. Ci sono molti server di
applicazioni commerciali non gratuiti e parecchio costosi.
Zope è una piattaforma inclusiva. Viene fornito con tutti i componenti necessari per
cominciare lo sviluppo di una applicazione web. Non c’è bisogno di altre licenze per
software aggiuntivo di supporto a Zope (ad esempio un database server relazionale) per
sviluppare le applicazioni. Questo inoltre rende l’installazione di Zope molto semplice.
Tanti altri server di applicazioni implicano spese “nascoste” causate dall’acquisto delle
licenze di costosi software o alla configurazione di complesse infrastrutture di terze parti
prima che lo sviluppo di una applicazione possa avere inizio.
Zope permette ed incoraggia gli sviluppatori a distribuire pacchetti applicativi pronti per
l’uso. Zope è corredato da un’ampia varietà di servizi integrati e di prodotti aggiuntivi per
un utilizzo immediato, come Plone. La maggior parte di questi componenti, come Zope
stesso, sono gratuiti ed open source. La popolarità di Zope ha favorito la formazione di
una grossa comunità di sviluppatori di applicazioni.
Le applicazioni create in Zope possono scalare quasi linearmente utilizzando la soluzione
di clustering Zope Enterprise Objects (ZEO) che Zope mette a disposizione. Utilizzando
ZEO, si può frammentare una applicazione Zope distribuendola su molti computer senza
il bisogno di modificare molto (nel caso in cui sia necessario) il codice dell’applicazione.
Molti server di applicazioni non scalano affatto in modo trasparente o predicibile.
75
3. CMS Open Source per grandi portali Zope Application Server
Zope permette agli sviluppatori di creare applicazioni web utilizzando solamente un
browser web. I browser Internet Explorer, Mozilla, Netscape, OmniWeb, Konqueror e
Opera sono tutti riconosciuti come in grado di visualizzare e manipolare l’ambiente di
sviluppo di Zope (la Zope Management Interface, nota come ZMI). Zope inoltre consente
agli sviluppatori di delegare in modo sicuro i compiti di sviluppo ad altri sviluppatori
“attraverso il web” utilizzando un’interfaccia comune.
Zope fornisce una piattaforma per la sicurezza estensibile e granulare. È possibile
integrare semplicemente Zope con diversi sistemi di autenticazione ed autorizzazione
come, LDAP16, Windows NT e RADIUS, utilizzando moduli preesistenti. Molti altri
server di applicazioni mancano del supporto per alcuni di questi sistemi.
Zope consente a gruppi di sviluppatori di collaborare. Gli ambienti collaborativi
forniscono strumenti che permettono agli utenti di lavorare senza interferire gli uni con gli
altri. Zope possiede una funzionalità di Undo, supporta il versioning, ha una History ed
altri strumenti che aiutano le diverse parti a lavorare in modo sicuro permettendo il
ripristino dagli errori.
Zope è distribuito per i più diffusi sistemi operativi: Linux, Windows NT/2000/XP,
Solaris, FreeBSD, NetBSD, OpenBSD e Mac OS X. Molti altri server di applicazioni
richiedono di essere eseguiti su un sistema operativo scelto dal produttore.
Zope può essere esteso utilizzando il linguaggio di scripting Python. Python è diffuso, di
semplice apprendimento e agevola lo sviluppo rapido. Sono disponibili molte librerie per
Python che possono essere usate nello sviluppo di una applicazione web. Molti altri server
di applicazioni invece vengono estesi mediante linguaggi come Java, rallentando così la
velocità nello sviluppo a causa della loro complessità. Tanti altri invece utilizzano
linguaggi meno noti per i quali non ci sono così tante librerie pronte per l’uso. Esempi di
applicazioni create utilizzando Zope si possono trovare visitando il sito della Zope
Corporation (www.zope.org).
16 LDAP: Lightweight Directory Access Protocol, è un protocollo standard per l'interrogazione e la modifica dei servizi di directory.
76
3. CMS Open Source per grandi portali Zope Application Server
3.2.2 Architettura di Zope
Zope sgrava lo sviluppatore da gran parte dei dettagli onerosi tipici dello sviluppo di
un’applicazione Web, come la persistenza dei dati, l’integrità ed il controllo degli accessi,
permettendo quindi di concentrarsi sul problema in sé. L’utilizzo degli strumenti messi a
disposizione è reso molto più veloce rispetto ad altri linguaggi o piattaforme. Zope consente
di scrivere la logica dell’applicazione web in linguaggio Python, e fornisce un supporto addon
per il Perl. Zope ha anche due soluzioni alternative che permettono di strutturare il testo: il
Document Template Markup Language (DTML) e le Zope Page Templates (ZPT).
3.2.2.1 Orientamento agli oggetti
A differenza dei comuni sistemi Web basati su file, come ASP o PHP, Zope è una piattaforma
di sviluppo fortemente “orientata agli oggetti”. L’orientamento agli oggetti è un concetto
condiviso da molti linguaggi di programmazione, compreso il Python con il quale Zope è
implementato. In Zope tutto è rappresentato da un oggetto specifico, ad esempio lo è anche un
URL immesso nel browser per la richiesta di una pagina. Anche il database interno di Zope è
completamente ad oggetti. Occorre quindi essere familiari con la programmazione Object
Oriented per capire ed utilizzare Zope al meglio.
3.2.2.2 Pubblicazione degli oggetti
La tecnologia con la quale è stato implementato Zope si basa sull’assunzione che il Web è
orientato agli oggetti. Un URL di una risorsa Web, in effetti, è un percorso che conduce ad un
oggetto, attraverso una serie di container. Grazie al protocollo HTTP è possibile comunicare
con tali oggetti. La struttura ad oggetti di Zope è gerarchica, ciò significa che tipicamente un
sito Zope è composto da oggetti che contengono altri oggetti (che a loro volta possono
contenere altri oggetti ancora). Le URL disegnano in maniera naturale la mappa degli oggetti
77
3. CMS Open Source per grandi portali Zope Application Server
all’interno dell’ambiente gerarchico di Zope. Ad esempio, l’URL “/Marketing/index.html”
potrebbe essere usata per accedere ad un oggetto di tipo Documento di nome “index.html”
all’interno dell’oggetto di tipo Folder “Marketing”. Il compito principale di Zope è quello di
“pubblicare” gli oggetti creati, e la maniera in cui lo fa è concettualmente immediata:
1. Il browser invia una richiesta al server Zope. La richiesta specifica un URL nel
formato “protocollo://nomehost:porta/percorso?stringainterrogazione”, ad esempio:
http://www.zope.org:8080/Resources?batch_start=100.
2. Zope divide l’URL nelle sue componenti “nomehost”, “porta”, “percorso” e “stringa
di interrogazione” (rispettivamente, “http://www.zope.org, 8080”, “Resources” e “?
batch_start=100”).
3. Zope individua l’oggetto corrispondente al percorso (/Resources) nel suo database ad
oggetti.
4. Zope “esegue” l’oggetto usando la “stringa di interrogazione” (“?batch_start=100”),
cioè una serie di parametri che possono modificare il comportamento dell’oggetto.
Questo significa che l’oggetto può comportarsi in maniera diversa a seconda dei
parametri presenti nella stringa di interrogazione.
5. Se l’esecuzione dell’oggetto ritorna un valore, il valore è inviato come risposta al
browser. Solitamente un oggetto Zope restituisce dati in formato HTML, file o
immagine.
6. I dati sono interpretati dal browser e quindi mostrati.
La corrispondenza URL/oggetti non è una nuova idea. Server Web come Apache e Microsoft
IIS fanno la stessa cosa, traducendo le URL in file e directory sul file system. Zope
similmente fa corrispondere le URL agli oggetti nel proprio database ad oggetti. L’URL di un
oggetto Zope è basata sul suo “percorso”. È composta dagli “id” dei folder che lo contengono
e dall’id dell’oggetto, separati dallo slash. Ad esempio, se c’è un oggetto Folder chiamato
“Enrica” nel folder principale (root folder), il suo percorso sarà “/Enrica”. Se “Enrica” è in
un folder inferiore al principale chiamato “Amici”, il suo URL sarà “/Amici/Enrica”.
78
3. CMS Open Source per grandi portali Zope Application Server
Nel Folder “Amici” potrebbero esserci altri Folder, chiamati “Anna”, “Giulia”, “Vincenzo”.
Le URL per accedervi sarebbero:
/Amici/Anna
/Amici/Giulia
/Amici/Vincenzo
L’URL di un oggetto è semplicemente composto dal suo nomehost, porta e percorso. Così
l’oggetto Zope con percorso “/Bob” sul server Zope “http://localhost:8080” avrà per URL
“http://localhost:8080/Bob”. Visitare l’URL di un oggetto Zope significa richiamare l’oggetto
attraverso il web.
3.2.2.3 Gestione via web
Per creare e manipolare gli oggetti Zope si accede via browser all’interfaccia di gestione, la
ZMI (Zope Management Interface). La gestione e lo sviluppo dell’applicazione possono
essere fatti completamente via Web, attraverso il solo browser. La Zope Management
Interface (vedi figura seguente) fornisce una vista del sistema ad oggetti di Zope strutturata ad
albero. Con l’interfaccia di gestione uno sviluppatore può creare e modificare oggetti Zope o
anche definire nuovi tipi di oggetti, senza che sia necessario accedere al file system del server
web.
Gli oggetti possono essere collocati ovunque nella gerarchia. Gli amministratori del sito
possono manipolarli cliccando sui “tab”, che rappresentano differenti “aspetti” (view) di un
oggetto. Le “view” variano a seconda del tipo d’oggetto. Un oggetto Zope di tipo “DTML
Method”, ad esempio, ha un tab “Edit” che ne permette di modificare il codice sorgente,
mentre un oggetto “Database Connection” fornisce “view” che permettono di modificarne la
stringa di connessione o i parametri di caching. Tutti gli oggetti hanno, inoltre, un tab
“Security” che consente di gestire il controllo degli accessi.
79
3. CMS Open Source per grandi portali Zope Application Server
Figura 3.1 - Zope Management Interface
3.2.2.4 Sicurezza e deleghe
Una delle cose che rende Zope diverso dagli altri application server è che sin dall’inizio è
stato concepito per essere strettamente legato non solo al modello ad oggetti del Web, ma
anche al modello di sviluppo di applicazioni Web. Il successo di una applicazione Web
richiede la partecipazione di molte persone all’interno di un’organizzazione con molteplici
aree di competenza. Un sito Web di successo richiede la collaborazione di molte persone in
un’organizzazione: sviluppatori di applicazioni, esperti di progettazione e gestione database,
responsabili dei contenuti e anche utenti finali. Zope è pensato specificatamente per
conformarsi a questo modello, permettendo agli amministratori del sito di delegare il
controllo agli esperti di design, di database ed ai content manager. Su un sito Web
convenzionale, la manutenzione e la sicurezza possono rapidamente divenire problematici.
I privilegi del responsabile dei contenuti devono essere limitati e non devono influire sulla
sicurezza.
80
3. CMS Open Source per grandi portali Zope Application Server
Gli oggetti in Zope forniscono un insieme molto più ricco di gestione dei permessi rispetto ad
un sistema basato su files. I permessi variano in base alle caratteristiche dell’oggetto. Questo
rende possibile implementare un accurato controllo degli accessi. Ad esempio è possibile
impostare un controllo d’accesso tale che i responsabili dei contenuti possano usare gli oggetti
“SQL Method” ma non possano né cambiarli né visualizzarne il sorgente. E’ possibile
impostare restrizioni tali che un utente può solo creare un certo tipo di oggetti, ad esempio
“Folder” e “DTML Document”, ma non “SQL Methods” o altri tipi.
Con Zope è possibile gestire gli utenti via Web, grazie agli “User Folder”, che sono speciali
“folder” contenti informazioni sugli utenti. Sono disponibili molti add-on che forniscono
“User Folder” estesi, che leggono i dati da risorse esterne, come database relazionali o
directory LDAP. Il privilegio di aggiungere nuovi “User Folder” può essere concesso ad
utenti entro un “subfolder”, permettendo, in sostanza, di delegare la creazione e la gestione di
sottosezioni del sito Web a utenti semi-fidati senza preoccuparsi che possano modificare gli
oggetti al di sopra del loro “folder”.
3.2.2.5 Persistenza nativa degli oggetti e transazioni
Gli oggetti Zope sono memorizzati in un database ad oggetti ad alte prestazioni conosciuto
come Zope Object Database (ZODB). Ciascuna richiesta Web è gestita dal database ad
oggetti come una singola transazione. Se nell’applicazione si verifica un errore a causa di una
richiesta tutte le modifiche fatte durante la richiesta saranno automaticamente annullate. Il
database ad oggetti fornisce un ripristino a più livelli, dando la possibilità all’amministratore
del sito di annullare le modifiche effettuate con un semplice click. L’ambiente Zope rende
tutti gli aspetti della persistenza e delle transazioni completamente trasparenti allo
sviluppatore. I database relazionali utilizzabili con Zope possono agganciarsi al sistema di
transazioni.
81
3. CMS Open Source per grandi portali Zope Application Server
3.2.2.6 Acquisizione
Uno degli aspetti più potenti di Zope è l’“Acquisizione”, e la sua idea base è che gli oggetti
Zope sono contenuti all’interno di altri oggetti (come i “Folders”). Gli oggetti possono
“acquisire” attributi e comportamenti dai loro “container” (gli oggetti che li contengono).
Il concetto di acquisizione funziona con tutti gli oggetti Zope, e fornisce in maniera
estremamente funzionale gli strumenti per centralizzare risorse comuni. Una query molto
usata o frammenti di HTML, ad esempio, possono essere definiti in un “Folder” e gli oggetti
nei “subfolders” possono automaticamente usarli grazie all’acquisizione. Se la query va
cambiata, è possibile modificarla in un posto una sola volta. Poiché gli oggetti sono acquisiti
partendo dal livello corrente nella gerarchia di contenimento e cercati verso l’alto, è facile
specializzare aree del sito con il minimo lavoro. Ad esempio, se si ha un folder “Sport” con
contenuti riguardanti lo sport, si può creare nel folder un nuovo header e/o footer HTML per
ridefinire il layout grafico nel solo folder “Sport”. Il contenuto nel Folder “Sport” e nei
“subfolder” userà il layout specializzato trovato nel folder “Sport” piuttosto che quello
definito dal “Folder” superiore a “Sport”.
3.2.2.7 Estendibilità
Zope è altamente estendibile, infatti utenti esperti possono creare nuovi tipi di oggetti, sia
scrivendo Zope add-ons in Python che costruendoli completamente attraverso l’interfaccia
Web. Zope fornisce molti strumenti utili agli sviluppatori, compreso un insieme robusto di
classi framework che si prende cura degli aspetti tipici dell’implementazione di nuovi oggetti
Zope.
Sono disponibili molti Zope add-on che permettono la gestione di argomenti di discussione
sul Web, desktop data publishing, strumenti XML ed integrazione con strumenti di
e-commerce. Molti di questi sono stati scritti da membri molto attivi della comunità Zope, ed
in gran parte sono open source. Un prodotto molto potente per la gestione dei contenuti sul
web è Plone che è stato utilizzato per lo sviluppo del progetto.
82
3. CMS Open Source per grandi portali Componenti fondamentali di Zope
3.3 Componenti fondamentali di Zope
Zope è costituito da più componenti che lavorano insieme per costruire
un’applicazione web. Le componenti fondamentali di Zope sono mostrate nella figura e
spiegate di seguito:
Figura 3.2 – Architettura di Zope
83
3. CMS Open Source per grandi portali Componenti fondamentali di Zope
ZServer. Zope è distribuito con un web server integrato che fornisce i contenuti agli utenti.
Questo web server fornisce contenuti anche via FTP, WebDAV, and XML-RPC (web service
per la chiamata di procedure in remoto).
Web Server. Se si possiede già un web server come Apache o IIS, Zope può funzionare con
essi e in generale con tutti i web server che supportano Common Gateway Interface (CGI).
Zope Core. È il meccanismo che coordina tutto, gestendo l’interfaccia web ed il database ad
oggetti.
Object Database. E’ il database integrato di Zope completamente orientato agli oggetti e
costruito tramite Python. Presenta numerose features, alcune di queste sono: un’interfaccia di
storage, il supporto per transazioni corpose, l’undo, e una potente cache per gli oggetti.
Relational database. Se non si intende memorizzare le informazioni nel database ad oggetti
di Zope, è possibile usare altri database relazionali come Oracle, PostgreSQL, Sybase,
MySQL ed altri.
File System. Zope può naturalmente utilizzare documenti ed altri file memorizzati sul
filesystem del server.
ZClasses. Zope consente agli amministratori del sito di aggiungere nuovi tipi di oggetto
attraverso l’interfaccia Web. Questi tipi di oggetto sono denominati ZClasses.
Zope Products. Zope permette l’aggiunta di nuovi tipi di oggetto resa possibile attraverso
l’installazione di “Prodotti”(così vengono chiamati in Zope) scritti in Python.
84
3. CMS Open Source per grandi portali I linguaggi di Zope
3.4 I linguaggi di Zope
La potenza e flessibilità di Zope deriva dal fatto che offre la possibilità di creare
contenuti dinamici o applicazioni web per mezzo dei sui linguaggi. Allo scopo sono stati
definiti dagli svilupatori due linguaggi, il DTML e le ZPT. Oltre ad essi per la creazione di
script lato server è possibile utilizzare, con alcune restrizioni, il linguaggio di
implementazione di Zope, il Python. Le restrizioni sono state introdotte per garantire la
sicurezza dei server in quanto, essendo Python un linguaggio di programmazione vero e
proprio, tramite di esso è possibile accedere a tutte le risorse del sistema operativo.
Di seguito introdurremo questi linguaggi, importanti per la creazione di applicazioni web e/o
la personalizzazione dei prodotti come Plone.
3.4.1 DTML
Il Document Template Markup Language è una modalità di modellazione dei
documenti che supporta la creazione di HTML dinamico e testo generico. Tipicamente viene
utilizzato in Zope/Plone per creare pagine web dinamiche. Ad esempio è possibile utilizzare il
DTML per creare una pagina web nella quale le celle di una tabella HTML, posta al suo
interno, vengono popolate con dati reperiti da un database.
Il DTML è un linguaggio di scripting e rappresentazione di contenuti basato su tag propri.
Ciò significa che i tag DTML (come ad es. <dtml-var name>) inclusi nel codice HTML
determinano la sostituzione di parti della pagina con contenuti generati da una elaborazione.
Il DTML è un linguaggio di scripting lato-server. Questo significa che i comandi DTML sono
eseguiti dal server di Zope e il risultato di questa esecuzione viene inviata al browser. Di
85
3. CMS Open Source per grandi portali I linguaggi di Zope
contro, i linguaggi di scripting lato-client come JavaScript, non vengono elaborati dal server,
ma inviano il codice al browser, che lo esegue sulla macchina locale.
Il DTML ha funzioni simili ai linguaggi di scripting “server side” incorporati nell’HTML
delle pagine come JSP, PHP, o Perl. Differisce da questi in quanto non permette di creare
costrutti Python in linea (if, then, else) ma consente di includere espressioni Python
all’interno di tag simili a quelli HTML. E’ dotato di controllo di flusso e logica condizionale
che implementa tramite “speciali” tag.
È possibile usare i comandi DTML in due tipi diversi di oggetti di Zope, nei DTML
Documents e nei DTML Methods. Vi è una sottile differenza tra questi due tipi di oggetto,
che a volte confonde molti programmatori sulla decisione di usare uno piuttosto che l’altro. I
DTML methods non hanno proprietà intrinseche, sono usati per eseguire delle azioni. Sono
oggetti da “presentazione”. Se si vogliono mostrare le proprietà o gli attributi di un oggetto
sono la scelta adatta.
I DTML documents sono oggetti-contenitori. Se si vuole creare un documento di testo
standalone si utilizza questo tipo di oggetto che permette di inserire al suo interno codice
HTML o testo. I DTML documents hanno delle proprietà intrinseche e altre totalmente
personalizzabili dall’utente a differenza dei metodi che non ne possiedono.
3.4.2 Zope Page Template
Le Page Template sono degli strumenti per la generazione di pagine web. Il loro scopo
è quello di favorire la collaborazione tra programmatori e designer nella produzione di pagine
web dinamiche per le applicazioni web di Zope. Per mezzo di esse i designer non devono
rinunciare ai loro strumenti usuali, come gli editor HTML di tipo WYSWYG (what you see is
what you get), mentre un programmatore può modificarle per renderle parte di
un’applicazione web. Nel caso sia necessario, i designer possono riprendere e manipolare i
86
3. CMS Open Source per grandi portali I linguaggi di Zope
modelli nel loro ambiente di sviluppo svolgendo ulteriori cambiamenti alla struttura e
all’aspetto. Gli editor WYSWYG considerano le Page Template come codide XML, per cui
non lo modificano permettendo di non corrompere il funzionamento dinamico
dell’applicazione.
Zope già possiede un linguaggio di creazione dinamica server side, il DTML. Quindi ci si
potrebbe chiedere quale é la ragione che ha spinto alla creazione di un nuovo linguaggio di
template. Prima di tutto il DTML non é dedicato ai designers, infatti quando una pagina
HTML é stata resa dinamica incorporando del codice DTML, per un editor WYSWYG
risulterà codice HTML invalido e quindi non sarà interpretato andando a creare problemi per i
designers. Secondo, DTML soffre di problematiche intrinseche relativamente alla separazione
dei livelli di presentazione, logica e contenuto. Tutto ciò riduce la scalabilità del gestore dei
contenuti (Zope) nonché gli sforzi dei sviluppatori che usano questi sistemi. In fine, lo spazio
dei nomi DTML aggiunge troppo codice per la gestione degli oggetti senza fornire ulteriore
controllo su di essi (mascheramento profondo).
In cambio il DTML può svolgere attività che le Page Templates non possono, ad esempio la
generazione dinamica di messaggi di posta elettronica (le Page Templates possono generare
solo HTML e XML), cosicché non possiamo considerare inutile il DTML. Tuttavia, le Page
Templates saranno usate per tutto quanto riguarda la gestione e manipolazione della
presentazione in HTML/XML. Le Page Templates usano il Template Attribute Language
(TAL, Linguaggio degli Attributi di Modello). Il TAL consiste di speciali attributi
modificatori (tag). Ad esempio, il titolo di una pagina dinamica potrebbe apparire in questo
modo: “<title tal:content="here/title">Titolo Pagina</title>”.
Tutte le dichiarazioni TAL consistono di attributi marcatori i quali nomi cominciano con
“tal:”. Il valore di una dichiarazione TAL è mostrato in modo quotato. Ai designer di codice
HTML che usano editor visuali, il titolo dinamico nell'esempio é un HTML valido che verrà
mostrato nel proprio ambiente di sviluppo come un titolo deve apparire. In poche parole le
Page Templates sono state create per lavorare con gli strumenti di editing.
87
3. CMS Open Source per grandi portali I linguaggi di Zope
3.4.3 Python
Per ultimo presentiamo il linguaggio più importante, il Python, con il quale è stato
sviluppato Zope. Abbiamo detto che Python è un linguaggio di programmazione utilizzato per
lo scripting lato server come concorrente di altri linguaggi di come Perl o TCL. In Zope è
usato a tale scopo ma principalmente è il suo linguaggio di sviluppo, utile quindi per la
comprensione di Zope e per la creazione di estensioni specifiche per Zope.
Vediamo brevemente com’è nato e come funziona Python.
Il linguaggio Python nasce ad Amsterdam nel 1989, dove lavorava come ricercatore il suo
creatore Guido Van Rossum. Nei suoi dieci anni di vita, si è diffuso in tutto il mondo. Python
è innanzitutto un linguaggio di script pseudocompilato. Questo significa che, similmente al
Perl ed al Tcl/Tk, ogni programma sorgente deve essere pseudocompilato da un interprete.
L'interprete è un normale programma che va installato sulla propria macchina, e si occuperà
di interpretare il codice sorgente e di eseguirlo. Quindi, diversamente dal C++, non abbiamo
una fase di compilazione-linking che trasforma il sorgente in eseguibile, ma avremo a
disposizione solo il sorgente che viene eseguito dall'interprete.
Il principale vantaggio di questo sistema è la portabilità: lo stesso programma potrà girare su
una piattaforma con un qualsiasi sistema operativo (Linux,Mac,Windows,BSD) purché vi sia
installato l'interprete.
Python è un linguaggio orientato agli oggetti. Supporta le classi, l'ereditarietà e si caratterizza
per il binding dinamico. La memoria, come in Java, viene gestita automaticamente e non
esistono specifici costruttori o distruttori; inoltre esistono diversi costrutti per la gestione delle
eccezioni.
Osserviamo nel dettaglio le caratteristiche salienti del linguaggio:
Python è free. Questo per utenti Linux è normale, non lo è invece per gli utenti di MS
Windows che possono avvalersi di questa caratteristica Open Source. In ambiente
88
3. CMS Open Source per grandi portali I linguaggi di Zope
Windows Python potrebbe anche sostituire Visual Basic, liberandosi da tutti i problemi di
licenza. È sufficiente consultare periodicamente il sito www.Python.org per rendersi conto
come Python, pur essendo distribuito gratuitamente, ha un notevole supporto tecnico e ha
una comunità in costante crescita.
Python è portabile. Python è stato scritto in ANSI C, quindi la sua portabilità deriva
direttamente da quella del C. Questo ha permesso di scrivere presto un interprete Python
per le principali piattaforme. Esiste un interprete Python per Unix, Linux, MS-DOS, MS
Windows, Macintosh, Amiga, BeOS, OS/2, VMS, QNX. E’ stato sviluppato anche un
interprete in java per i sistemi Palmari. Basta avere un interprete Python per il sistema
operativo che si utilizza, prendere un sorgente Python ed eseguirlo con fiducia, il risultato
sarà identico a quello sulle altre piattaforme.
Python è veloce. Python è un linguaggio interpretato. In questo caso "interpretato" non è
sinonimo di lento, infatti Python "compila" il proprio codice in un bytecode molto
efficiente. Questo permette di raggiungere prestazioni vicine ai linguaggi in codice nativo.
Inoltre Python implementa molte strutture dati e funzioni come componente intrinseca del
linguaggio. Queste strutture sono dette "built-in types and tools" e sono state sviluppate
con accurata efficienza.
Python gestisce la memoria automaticamente. Analogamente a ciò che avviene in Java, in
Python esiste il meccanismo di "garbage collection", il quale permette di liberare il
programmatore da un utilizzo grossolano della memoria che comporta seri problemi di
allocazione.
Python ha una sintassi chiara. Python presenta una sintassi pulita e sintetica. L'idea
migliore è rappresentata dalla indentazione, che non serve più al programmatore per
ordinare meglio il codice, ma diventa l'unico strumento per strutturare il codice. Questo
permette un apprendimento più veloce e una maggiore facilità a leggere il codice scritto
da altri.
89
3. CMS Open Source per grandi portali I linguaggi di Zope
Python è ricco di librerie. Solo la dotazione standard offre numerose librerie alle quali si
aggiungono moduli di terze parti che crescono continuamente. In internet si trova
90
3. CMS Open Source per grandi portali Il Content Management Framework di Zope
materiale relativo a HTML, PDF, XML, formati grafici, CGI e perfino interi web servers,
come nel caso di Zope.
3.5 Il Content Management Framework di Zope
Il Content Management Framework di Zope è un ambiente di sviluppo di applicazioni
web che comprende una serie di strumenti di Zope. Questi strumenti formano una piattaforma
che fornisce molti dei servizi chiave che servono per implementare un CMS, un sistema di
gestione dei contenuti. Il CMF può essere usato come prodotto a sé stante per creare CMS
personalizzati o può esser usato per costruirvi sopra un altro prodotto, come accade nel caso
di Plone. Il CMF fornisce gli strumenti di base per costruire CMS, come quelli per il controllo
di flusso, la personalizzazione e la catalogazione. Il CMF di Zope fa largo uso delle Zope
Page Template. Lo sviluppo del CMF è a cura della Zope Corporation ed è un prodotto a
sorgente aperto che usufruisce del contributo di moltissimi sviluppatori di tutto il mondo.
3.6 Plone Content Management Framework
Plone oltre ad essere un CMS pronto e funzionante è considerato anche un ambiente di
sviluppo di applicazioni web perchè utilizza tutte le potenzialità offerte dal CMF di Zope.
Plone infatti, poggiando su Zope, permette di servirsi di tutte le sue componenti per esser
personalizzato in base alle proprie esigenze. Contrariamente a questo Plone è stato sviluppato
in modo da poter essere utilizzato anche senza una conoscenza accurata di Zope. Questo fatto
dimostra la volontà degli sviluppatori di Plone di fornire uno strumento che sia flessibile ma
91
3. CMS Open Source per grandi portali Il Content Management Framework di Zope
allo stesso tempo facile da usare. Per cominciare a utilizzare Plone, infatti, basta far
riferimento alla sua documentazione e non necessariamente a quella di Zope.
92
3. CMS Open Source per grandi portali Plone Content Management Framework
La prossima figura mostra le componenti necessarie per il funzionamento di Plone:
Figura 3.3 – Piramide di funzionamento di Plone
Per quanto riguarda Plone considerato come entità distinta da Zope, si deve dire che può esser
ravvisato come qualcosa di più di un generico CMS basato su Zope. Infatti Plone aggiunge a
Zope due caratteristiche che lo rendono molto interessante:
Un efficace ed elegante framework per la navigazione basato sulle cartelle e sul loro
contenuto, piuttosto che su collegamenti tra documenti Html (che necessitano di essere
aggiornati), coadiuvato da strumenti come il Bullettin che serve a notificare agli utenti
gli ultimi oggetti creati e le eventuali modifiche recenti ai documenti già presenti;
Uno strumento semplice per la creazione di documenti strutturati anche complessi che
consente di gestire in base ai ruoli degli utenti le differenti parti visibili di ogni
documento, e inoltre con percorsi di approvazione completamente personalizzabili.
La prima funzionalità rende un sito basato su Plone straordinariamente facile e veloce da
usare; la seconda lo rende utilizzabile per compiti amministrativi, a differenza della maggior
parte dei CMS che sono adatti primariamente alla pubblicazione piuttosto che alla
elaborazione dei contenuti.
Interprete PYTHON / Compilatore C
Zope Architecture
Zope Content Management Framework
Plone
Sistema Operativo (Linux/Windows/Mac OS/Solaris/FreeBSD/…)
93
3. CMS Open Source per grandi portali Plone Content Management Framework
Conclusioni
In questo capitolo abbiamo visto in sintesi il funzionamento di Zope, la sua architettura e i
suoi linguaggi. E’ stato evidenziato come una caratteristica principale di Zope sia quella
dell’ “Orientamento agli oggetti” proveniente dal linguaggio Python con il quale è
implementato, caratteristica da tener sempre presente nell’utilizzo di questo completo sistema
di gestione dei contenuti.
E’ stato necessario introdurre Zope in quanto è la piattaforma su cui poggia Plone, il CMS
scelto per lo sviluppo del portale web dedicato al progetto di ricerca DiCSI.
Nel prossimo capitolo parleremo del progetto di questo portale e mostreremo più in dettaglio
il funzionamento di Plone, dalla sua installazione alla personalizzazione delle sue componenti
essenziali, come l’aspetto, i permessi degli utenti e il flusso di lavoro.
94
4. Progetto di un portale basato sul CMS Plone
Nei capitoli precedenti è stata introdotta la teoria del content management, poi si è
andati a vedere cosa offrono i sistemi di gestione dei contenuti, quali vantaggi si possono
trarre dalla loro adozione, quali sono le funzioni fondamentali che si prefiggono di svolgere.
Si è focalizzata l’attenzione sui sistemi a sorgente aperto analizzandone le caratteristiche ed i
privilegi rispetto alle soluzioni proprietarie. Successivamente, dopo aver visto alcune
implementazioni di CMS a sorgente aperto, è stato introdotto il funzionamento di un CMS di
questo tipo, Zope/Plone, che è stato scelto per il progetto di un portale web.
In questo capitolo vedremo in particolare lo studio di un portale web tematico dedicato
ad un progetto di ricerca di interesse nazionale, il progetto DiCSI. Questo progetto vede
impegnati docenti universitari e ricercatori di diverse facoltà italiane, per cui è stato
necessario disporre di un portale web per venire incontro alla esigenza di uno strumento di
collaborazione e pubblicazione di articoli scientifici sviluppati membri interessati al progetto.
Lo sviluppo del portale rientra nel lavoro di tirocinio svolto presso il Dipartimento di
Elettronica, Intelligenza Artificiale e Telecomunicazioni (DEIT) della Facoltà di Ingegneria
dell’Università Politecnica delle Marche. Dopo aver introdotto le necessità riscontrate per il
portale del progetto di ricerca ne vedremo l’implementazione e il funzionamento attraverso il
CMS Plone.
95
4. Progetto di un portale basato sul CMS Plone Il progetto di ricerca DiCSI
4.1 Il progetto di ricerca DiCSI
Il progetto di ricerca DiCSI, acronimo per “Le dinamiche della conoscenza nella
società dell’Infomazione”, è un progetto PRIN (Progetto di ricerca di interesse nazionale)
interuniversitario che vede coinvolti docenti e ricercatori provenienti dai dipartimenti di
cinque diverse università italiane. Da come si può leggere nell’abstract del progetto, questo
“indaga le dinamiche della conoscenza nella società dell'informazione, sia a livello cognitivo
(come la conoscenza si acquisisce, si consolida, si modifica e si perde nella mente di un
agente individuale sottoposto a molteplici fonti di informazione), sia a livello sociale (come la
conoscenza emerge, circola, si diffonde e si differenzia nei gruppi sociali, siano essi
aggregazioni spontanee o organizzazioni stabili), sia nell'interazione fra questi due livelli
(emergenza della conoscenza sociale dalle interazioni individuali, effetti sociali sulle
dinamiche conoscitive dell'individuo). Per affrontare temi così ambiziosi in modo efficace, il
programma di ricerca si servirà delle competenze multidisciplinari delle varie unità coinvolte,
provvederà a una definizione preliminare di aree prioritarie di interesse, e si articolerà
secondo una struttura a fasi, funzionale al raggiungimento degli obiettivi scientifici [...]”.
Il progetto di ricerca interuniversitario DiCSI è organizzato in cinque unità alle quali
fanno capo docenti e ricercatori provenienti dai dipartimenti delle diverse facoltà coinvolte
nel progetto, nello specifico le unità sono le seguenti:
Unità 1 - Università degli Studi di Siena, Dipartimento di Scienze della Comunicazione
Unità 2 - Università IUAV di Venezia, Dipartimento delle Arti e del Disegno Industriale
Unità 3 - Università degli Studi di Bologna, Facoltà di Giurisprudenza
Unità 4 - Università Politecnica delle Marche, Dipartimento di Elettronica, Intelligenza
Artificiale e Telecomunicazioni
Unità 5 - Università degli Studi di Siena, Dipartimento di Economia Politica
96
4. Progetto di un portale basato sul CMS Plone Il progetto di ricerca DiCSI
4.1.1 Necessità di un portale web
Ogni programma di ricerca PRIN prevede che le attività siano gestite da più persone
con i seguenti ruoli: un coordinatore nazionale (denominato coordinatore scientifico del
progetto) che svolge le attività di gestione, controllo e coordinamento; tanti responsabili
scientifici locali quante sono le unità di ricerca. Il coordinatore nazionale, per il tramite di una
propria unità operativa, è anche impegnato direttamente nella ricerca come responsabile
scientifico locale.
Per quanto riguarda il progetto DiCSI si è detto che sono coinvolte cinque unità facenti capo a
dipartimenti di cinque diverse facoltà italiane. Oltre al coordinatore nazionale si presentano,
quindi, cinque responsabili locali ed un numero variabile di ricercatori e dottorandi impegnati
nel progetto. Per cui un’informazione che si può trarre è che il progetto di ricerca vede
coinvolte diverse persone con diversi gradi di conoscenze informatiche.
Visto il coinvolgimento di vari ricercatori di diverse facoltà italiane, si è resa necessaria
l’adozione di un portale web come strumento di supporto alle attività di collaborazione e di
coordinamento del progetto. Inoltre il portale web rappresenta per il progetto stesso una
“vetrina” attraverso la quale le persone coinvolte possono confrontarsi e presentare al
pubblico e alla comunità scientifica i risultati ottenuti.
Il portale web è stato sviluppato mediante un sistema di gestione dei contenuti a sorgente
aperto ed in particolare si è già parlato del motivo per cui la scelta sia ricaduta sul CMS Plone.
Infatti, come già spiegato nei capitoli precedenti, i CMS implementano in modo nativo molte
funzioni di supporto ad attività collaborative di pubblicazione di contenuti via web previste
per un portale, per cui permettono di concentrarsi sullo studio degli aspetti specifici e delle
necessità richieste per il raggiungimento dei propri scopi.
97
4. Progetto di un portale basato sul CMS Plone Il progetto di ricerca DiCSI
4.1.2 Obiettivi e requisiti del portale
Il portale dedicato al progetto di ricerca DiCSI è stato sviluppato cercando di pervenire ai
seguenti obiettivi:
raccogliere e organizzare le informazioni e i dati relativi al progetto di ricerca, inclusa la documentazione prodotta dai partecipanti ed i principali risultati scientifici conseguiti;
rendere tale materiale visibile alla comunità scientifica e ai valutatori dell’attività di ricerca svolta;
fornire al gruppo di ricerca uno spazio condiviso per le attività di coordinamento, negoziazione e gestione dei contenuti scientifici e delle attività organizzative relative al progetto;
favorire l'inquadramento del progetto nell'ambito della ricerca nazionale e internazionale sulle dinamiche della conoscenza.
Il portale è stato personalizzato per conseguire in maniera ottimale gli obiettivi preposti.
Bisogna dire che esisteva già una prima implementazione del portale per cui è stato
abbastanza semplice sviluppare il nuovo portale andando a ripassare l’organizzazione prevista
dal progetto iniziale. Quindi la fase di progettazione che prevede la definizione dei requisiti
per il portale è stata piuttosto rapida in quanto si disponeva già di una struttura organizzativa
per i contenuti del portale, che è stata rivista ed applicata. In definitiva nella personalizzazione
del sistema di gestione dei contenuti sono stati considerati i seguenti requisiti:
Suddivisione del portale in sezioni specifiche
Accesso per la pubblicazione dei contenuti riservato ai soli membri del progetto
Definizione dei ruoli dei membri del progetto
Creazione di una guida all’uso per i membri del portale
L’organizzazione interna, necessaria a caratterizzare gli aspetti specifici dei contenuti
pubblicati nel portale del progetto, prevede la suddivisione dello stesso nelle seguenti sezioni
con gli scopi elencati:
98
4. Progetto di un portale basato sul CMS Plone Il progetto di ricerca DiCSI
Progetto: sezione che vuole servire per presentare il progetto al pubblico e alla
comunità scientifica. Qui vi troveremo l’abstract descrittivo e altri documenti
espositivi del progetto di ricerca.
Incontri: sezione riservata alla esibizione al pubblico di eventuali workshop di
progetto o altri tipi di evento inerenti al progetto di ricerca.
Documenti: sezione riservata alla pubblicazione della documentazione prodotta dai
membri del progetto e messa a disposizione dei partner, dei revisori scientifici e del
pubblico.
Pubblicazioni: sezione atta a fornire una lista esaustiva e aggiornata dei risultati e delle
pubblicazioni scientifiche realizzate nell'ambito del progetto.
Notizie: sezione riservata alle news ritenute importanti per gli aspetti del progetto.
Risorse: sezione del portale riservata a fornire una webgrafia aggiornata sulle risorse
online, bibliografiche, o in generale per la bibliografia scientifica di riferimento per il
progetto di ricerca.
Queste sono le sezioni ideate per dare una prima suddivisione interna al portale in base a
quelli che saranno i contenuti pubblicati. Più avanti sarà mostrato come è stato personalizzato
il portale e quali mezzi mette a disposizione Plone per implementare le sezioni specificate.
99
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
4.2 Implementazione del portale
Dopo aver approfondito gli aspetti necessari allo sviluppo del portale web per il
progetto di ricerca DiCSI, si andrà a descrivere l’implementazione fatta attraverso il sistema
di gestione dei contenuti a sorgente aperto Plone. Come è stato spiegato nei capitoli
precedenti, Plone per funzionare necessita dell’application server Zope, per cui si vedrà come
si è proceduto all’installazione di Zope e Plone su di un server dedicato ad ospitare il portale
di supporto al progetto DiCSI. Dopo di ciò sarà osservato in dettaglio come un portale
generico basato su Plone è stato personalizzato per i fini preposti.
4.2.1 Installazione di Zope/Plone
Come spiegato nel capitolo precedente, quando si è parlato della scelta di un CMS a
sorgente aperto, per l’implementazione del portale dedicato al progetto di ricerca si disponeva
di un server dedicato. Sia per questo motivo sia perché Plone, girando sull’application server
Zope, dispone di un web server integrato (preconfigurato e funzionante), si è scelto di adottare
questa soluzione.
Il server è un PC con sistema operativo Linux (Mandrake ver.10.2) e hardware di una normale
workstation PC di medie prestazioni (Processore AMD 2600+, memoria RAM di 256MB).
Zope non impone requisiti hardware minimi di funzionamento, ma naturalmente, come
suggerisce la documentazione di Plone, se si prevede che il server in produzione gestisca un
grosso portale è necessaria una macchina con un processore da almeno 1,5Ghz ed un minimo
di 1Gb di memoria RAM, senza considerare la memoria di massa la cui occupazione è
variabile in dipendenza della quantità di contenuti e va un minimo di installazione di 25MB.
100
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
L’installazione avviene dai sorgenti e per questo richiede che sulla piattaforma di destinazione
siano presenti un compilatore C/C++ (come ad esempio gcc, gcc-c++ o g++) ed un interprete
Python, che viene installato sulla macchina compilando i sorgenti in C.
Il pacchetto di installazione è stato scaricato direttamente dal sito di Plone (www.plone.org)
ed include i sorgenti di installazione di Python e di Zope. E’ un pacchetto unificato universale
per tutte le distribuzioni di Linux, BSD e UNIX, ed offre un comodissimo installer, che non è
altro che uno script eseguibile dalla shell (tipo bash o sh) tramite il comando ‘sudo’ (o ‘sh’ da
utente root). Il pacchetto unificato di installazione è stato scelto tra le ultime release stabili
disponibili, ed in particolare è relativo alla versione:
“Plone 2.5-final”, comprendente i necessari “Zope 2.9.3” e “Python 2.4.3”.
Il file scaricato è un file compresso che una volta estratto presenta alcuni files tra cui un file di
testo (readme.txt) con le istruzioni per l’installazione, ed ovviamente quelli necessari
all’installazione stessa.
Le istruzioni indicano che per installare basta aprire la console di Linux e lanciare lo script di
installazione (install.sh) attraverso il comando:
“sudo ./install.sh”
Lo script, una volta lanciato, va a compilare i sorgenti e posiziona i file di destinazione alla
radice del file system sotto le cartelle “/opt/Plone2.5/”.
Lo script di installazione genera automaticamente una password che servirà per accedere la
prima volta alla interfaccia di gestione di Zope (la ZMI) in qualità di amministratore. Il nome
utente dell’amministratore è admin mentre la password è una stringa alfanumerica che lo
script memorizza all’interno di un file di testo nella cartella di destinazione dei file. Il file è
rintracciabile sotto il nome “adminPassword.txt”. In questo file sono presenti anche le
informazioni per il primo avviamento di Zope. Infatti abbiamo detto che Zope viene eseguito
grazie all’interprete del Python, per cui l’installer fornisce alcuni script che servono a
richiamare l’interprete Python e a sottoporgli i files di avvio di Zope (con estensione .py,
101
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
come “zope.py”). Vengono forniti tre script, uno per avviare Zope, uno per il restart del
processo, ed uno per arrestarlo.
Per avviare l’istanza del processo di Zope/Plone sotto Linux occorre avviare lo script
“startcluster.sh” dalla console mediante il comando:
sudo /opt/Plone-2.5/zeocluster/bin/startcluster.sh
Per stoppare l'istanza:
sudo /opt/Plone-2.5/zeocluster/bin/shutdowncluster.sh
Per riavviare:
sudo /opt/Plone-2.5/zeocluster/bin/restartcluster.sh
Lanciando lo script di avvio entra in funzione tutta l’architettura di Zope. Per configurare le
componenti di Zope, come ad esempio il webserver HTTP, occorre che a fine installazione
vengano riveduti alcuni file, in particolare:
/opt/Plone-2.5/zeocluster/server/zeo.conf/opt/Plone-2.5/zeocluster/client1/zope.conf/opt/Plone-2.5/zeocluster/client2/zope.conf
Il primo file, “zeo.conf”, permette di settare i parametri di configurazione del componente
ZEO, il plug-in di clustering di Zope. Il clustering dei siti serve per diminuire i tempi di
risposta del server quando questo è molto trafficato o contiene una grande mole di pagine
visitabili, oppure per riunire istanze di Zope che risiedono su macchine diverse per il
bilanciamento del carico di lavoro. ZEO è stato già introdotto nel capitolo precedente quando
parlavamo delle caratteristiche di Zope e nel particolare della sua scalabilità. Ai fini del
progetto del portale web non è stato necessario configurare ZEO ma ci si è serviti dei file di
configurazione per attivare la modalità di debug del framework Zope e per impostare il server
Http in ascolto sulla porta predefinita per i server web, la porta 80, anziché quella che per
default in Zope è impostata ad 8080. La modalità di debug fa sì che le modifiche apportare,
all'interno della ZMI, sulle componenti di Zope/Plone, come ad esempio quelle per la
personalizzazione dell'interfaccia grafica, siamo subito eseguite e disponibili al
102
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
programmatore senza dover riavviare il framework dopo ogni modifica. Unico inconveniente
è che la modalità di debug aumenta considerevolmente i tempi di risposta del framework
(compreso il web server), per cui quando le modifiche sono completate deve esser disattivato.
4.2.2 Accesso all’interfaccia di gestione
Dopo il corretto avvio di Zope è possibile accedere attraverso il browser all’interfaccia
di gestione di Zope, la ZMI, per svolgere la configurazione del framework ed altre attività
avanzate di amministrazione. E’ possibile interagire con Zope anche attraverso altri tipi di
connessione: FTP o WedDAV (Web Distribuited Authoring and Versioning, Pubblicazione e
Revisione Distribuita sul Web), ma non entreremo nel dettaglio di questi sistemi.
Per accedere alla ZMI dal computer sul quale è installato basta aprire il browser e
digitare:
http://localhost:8080/manage.
Invece per accedervi da una macchina remota occorre che il webserver di Zope sia
configurato in ascolto sull’ indirizzo IP dell’interfaccia di rete collegata ad Internet. In questo
caso basta inserire l’indirizzo IP (oppure il nome di dominio nel caso sia presente un server
DNS) della macchina visibile dall’esterno seguito dal percorso “/manage”.
In seguito alla richiesta compare la maschera di autenticazione alla ZMI. Qui è necessario
inserire l'utente "iniziale" (admin) e la password fornita, come abbiamo già visto, al momento
dell'installazione. Se i dati sono corretti viene caricata l'interfaccia di manutenzione di Zope.
103
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Figura 4.1 - Zope Management Interface
Attraverso la ZMI un amministratore può aggiungere nuovi oggetti oppure può visualizzare il
pannello di controllo di Zope che fornisce informazioni e comandi di manutenzione che
possono essere di interesse. La ZMI è il mezzo con cui è possibile amministrare gli oggetti
creati in Zope. Si ricorda che Zope è fortemente orientato agli oggetti, per cui ogni elemento
di programmazione o di contenuto per Zope è un oggetto. Gli oggetti sono contenuti in un
database, lo ZODB (Zope Object DB), che sta per “DataBase ad Oggetti Zope”. Quando viene
installato, lo ZODB crea un file con nome “Data.fs” nel quale sono contenuti gli oggetti di
Zope. L’interfaccia ZMI è la via principale per interagire con gli oggetti Zope che sono
immagazzinati in questo database.
104
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Figura 4.2 - Pannello di controllo di Zope
Il Pannello di Controllo mostra le informazioni relative a Zope, come la versione in
esecuzione, la versione di Python utilizzata da Zope, la piattaforma di sistema, ed altre
variabili che indicano:
“SOFTWARE_HOME”: la cartella di installazione delle librerie di Zope;
“INSTANCE_HOME”: la cartella dove risiede Zope;
“CLIENT_HOME”: la cartella "var" dove risiede il database ad oggetti di Zope;
“NETWORK_SERVICES”: i servizi di rete attivati da Zope.
Inoltre sono presenti altre informazioni utili come l'identificatore del processo di Zope ed il
tempo di esecuzione dall’avvio del processo con la possibilità di riavviare o stoppare del tutto
Zope. Nel pannello di controllo troviamo anche i collegamenti alle pagine di gestione delle
componenti di base del framework come il database integrato (ZODB), il sistema di
versioning, quello di traduzione e quello per l’aggiunta dei “Products” di Zope.
105
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
4.2.3 Creazione del portale DiCSI
Una volta che si ha l’accesso all’interfaccia di gestione di Zope è possibile aggiungere
alla “root folder” tutti gli oggetti di Zope, compresi i siti Plone, semplicemente scorrendo il
menù a tendina che compare affianco al pulsante “Add”. Nel nostro caso abbiamo selezionato
l’oggetto “Plone Site” e cliccato su “Add”, come si vede dalla figura seguente:
Figura 4.3 – Esempio di inserimento di un sito Plone
Come si può leggere dalla documentazione di Plone, questa è la prima operazione che bisogna
effettuare per creare ex novo un portale web.
Dopo aver cliccato su “Add” compare una pagina che chiede l’inserimento:
del nome da dare al portale,
di una stringa di identificazione (Portal ID),
di una eventuale descrizione del sito.
106
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Nello specifico si è inserito come nome “dicsi”, id “DiCSI”, e come descrizione quella del
progetto di ricerca, ovvero “Le dinamiche della conoscenza nella società dell'Informazione”.
Questi parametri saranno visibili nelle proprietà del portale e sono successivamente
modificabili attraverso il tab “properties” del nuovo oggetto creato.
Dopo questa operazione Zope rende disponibile all’amministratore un portale con
l’interfaccia standard e le caratteristiche intrinseche di Plone. Ciccando sul tab “view” è
possibile vedere l’interfaccia standard di Plone, che è mostrata nella figura seguente:
Figura 4.4 – Esempio di interfaccia generica di un nuovo sito Plone
Da come si vede in figura accedendo al sito Plone appena creato si presenta subito la pagina
iniziale che dà il benvenuto al nuovo sito. Per default Plone popola l’albero di navigazione
(riquadro “navigazione” sulla sinistra) con il link alla cartella contenitrice delle cartelle
personali dei membri del portale (Members) e i link a due sezioni create automaticamente,
“news” ed “events”.
107
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Quanto visto rappresenta il punto di inizio per la personalizzazione di un portale web basato
sul sistema di gestione dei contenuti Plone.
4.2.4 Personalizzazione della grafica
Plone permette di modificare il suo aspetto grafico di default in vari modi e in varie
misure. Nell’ambito della personalizzazione del portale per il progetto DiCSI si è scelto di
non modificare pesantemente la componente grafica e ci si è limitati solo alla modifica dei
colori predefiniti di Plone e all’inserimento di un logo particolareggiato per il portale del
progetto DiCSI.
Per inserire un logo particolare per il portale è necessario entrare nella ZMI e spostarsi nella
cartella “portal_skin/custom”, relativa al portale. Plone permette di raccogliere in questa
cartella tutti gli elementi di personalizzazione delle sue componenti visuali. Qualsiasi oggetto
inserito dall’amministratore in questa cartella va ad aggiungersi od a sovrascrivere gli
elementi di base di Plone. Per cambiare il logo predefinito di Plone basta inserire
un’immagine nella cartella descritta con un particolare id: “logo.jpg”. Così facendo viene
rimpiazzato il logo predefinito di Plone e dal successivo accesso l’immagine scelta diventa il
logo del portale.
Per quanto riguarda invece la personalizzazione dei colori, dei caratteri e delle tabelle Plone
mette a disposizione un semplice metodo che, sfruttando i CSS, permette di modificare
l’aspetto del sito in poco tempo. Per utilizzarlo è sufficiente entrare nella cartella
“/portal_skin/plone_style” del portale e modificare le proprietà (attraverso il tab ‘properties’)
dell’oggetto “base_properties”. Il cambiamento dei colori predefiniti è avvenuto in questa
maniera. La prossima tabella mostra in dettaglio la configurazione data a “base_properties”:
108
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
fontFamily "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
fontBaseSize 69%fontColor BlackfontSmallSize 85%backgroundColor WhitelinkColor #436976linkActiveColor RedlinkVisitedColor PurpleborderWidth 1pxborderStyle solidborderStyleAnnotations solidglobalBorderColor BlackglobalBackgroundColor #CECCFEglobalFontColor #436976headingFontFamily "Lucida Grande", Verdana, Lucida, Helvetica, Arial,
sansserifcontentViewBorderColor BlackcontentViewBackgroundColor
#FFC0FF
contentViewFontColor BlackinputFontColor BlacktextTransform lowercaseevenRowBackgroundColor
#EEF3F5
oddRowBackgroundColor transparentnotifyBorderColor #FFA500notifyBackgroundColor #FFCE7BdiscreetColor #76797ChelpBackgroundColor #FFFFE1portalMinWidth 70emcolumnOneWidth 16emcolumnTwoWidth 16em
Tabella 4.1 – Configurazione delle proprietà del testo, dei colori e delle tabelle
Per alterare del tutto la grafica predefinita Plone permette di ridefinire i fogli di stile che
utilizza o, in alternativa, di modificare od aggiungere le page template scritte in ZPT o DTML
per personalizzare ulteriormente la struttura di una pagina, di una sezione o l’intero aspetto
del portale. I template predefiniti di Plone sono raggiungibili nella ZMI attraverso la cartella
“portal_skins/plone_template”. Plone permette anche di creare ed utilizzare complete skins
che comportano il cambiamento totale della grafica di base. Esistono varie skins realizzate dai
sviluppatori di Plone o da aziende commerciali che offrono supporto a pagamento per Plone.
109
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Queste ed altre operazioni di personalizzazione del “look&feel” di Plone sono descritte nella
documentazione ma non sono state prese in considerazione in quanto si è ritenuta l’interfaccia
standard di Plone più che sufficiente per gli scopi prefissati.
4.2.5 Implementazione delle sezioni
Per un portale web è utile definire delle sezioni interne per dare un’organizzazione ai
contenuti pubblicati dai membri. Precedentemente abbiamo elencato le sezioni ideate per il
portale del progetto DiCSI, ovvero: Progetto, Incontri, Pubblicazioni, Documenti, Notizie e
Risorse. Plone offre un sistema di organizzazione dei contenuti basato sulle cartelle. E’
possibile creare delle sottocartelle della radice del sito in modo da poter definire delle sezioni
interne al portale (portlet). Queste cartelle possono esser create solo dagli amministratori del
portale dopo l’accesso al sistema. Con il loro label vanno a popolare l’albero di navigazione e
la barra di navigazione del portale definendo le sezioni del portale (portlet) e funzionando da
container per i diversi tipi di contenuto che si vogliono pubblicare. Alla base del portale
visualizzando la scheda relativa ai contenuti, un amministratore può aggiungere un oggetto
cartella, come si vede dalla seguente figura:
Figura 4.5 – Scheda dei contenuti, esempio di inserimento di una cartella/sezione
110
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
La figura di seguito mostra come vengono popolati il tab della barra di navigazione e l’albero
di navigazione con i nomi dati alle sezioni del portale:
Figura 4.6 - Detteglio della Home Page realizzata per il portale del progetto DiCSI
La cartella dei membri (Members) è una caratteristica offerta da Plone e serve a racchiudere le
cartelle messe a disposizione per ogni singolo utente (membro) registrato del portale. Per
default Plone dà alle cartelle personali il nome del membro del portale fornito all’atto della
registrazione. Infatti ad ogni accesso un utente ha a disposizione la sua cartella (e le cartelle
condivise) per creare qualsiasi tipo di contenuto a scopo personale. All’interno di esse un
membro può decidere, ad esempio, di creare dei documenti di bozza che una volta completati
possono essere pubblicati in determinate sezioni del portale semplicemente andandoli a
spostare dove si ritiene opportuno. Le cartelle personali possono anche essere rese accessibili
al pubblico; Plone pubblica le cartelle personali all’interno della cartella “Members”
assegnandole i nomi di ogni membro. Un utente anonimo può visualizzarne i contenuti se il
membro possessore di ogni singola cartella ne ha dato il permesso. Più avanti vedremo in
dettaglio come Plone permette di gestire i permessi degli oggetti (cartelle, documenti) e
definiremo cos’è lo stato di un oggetto e come Plone permette agli utenti di gestirlo.
111
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
La home page, come si vede nella figura, dà il benvenuto al visitatore ed gli mostra gli
obiettivi del portale e le coordinate del progetto di ricerca, rimandando alla sezione Progetto
per i dettagli.
4.2.6 Applicazione delle restrizioni
Come impostazione predefinita Plone permette ai visitatori anonimi di registrarsi al
portale fornendo nome utente, password e indirizzo email. La possibilità per un utente
anonimo di registrarsi è una caratteristica non prevista per il portale dedicato al progetto
DiCSI. Al contrario l’accesso al portale è stato volutamente ristretto ai solo membri del
progetto, per cui si è dovuto procedere con la disabilitazione di questa impostazione
predefinita di Plone. Per farlo è bastato accedere alla ZMI e sull’oggetto rappresentante il
portale si è selezionato il tab “security”. Il tab apre una pagina in cui è possibile modificare i
permessi degli oggetti per gli utenti di Zope, tra cui la voce “Add portal members”.
Figura 4.7 - Particolare della pagina relativa alla sicurezza degli oggetti di Zope
Questa voce serve per controllare la funzione di registrazione al portale che, nei nuovi portali
Plone, è predefinitamene abilitata agli anonimi. Basta togliere la spunta relativa al permesso
per gli anonimi lasciando invariata quella relativa ai “Manager” e disabilitare la proprietà di
acquisizione di Zope. Così facendo solo gli utenti con i permessi di amministrazione possono
andare ad aggiungere nuovi utenti al portale. Inoltre scompare automaticamente
dall’interfaccia del portale il link alla pagina di registrazione per gli utenti anonimi, visitatori
del portale.
112
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Per quanto riguarda le operazioni di gestione dei permessi di accesso e pubblicazione dei
contenuti nelle cartelle identificative delle sezioni del portale, queste possono essere effettuate
dagli amministratori direttamente dal sito, senza accedere alla ZMI. Infatti l’uso della ZMI
comporta uno studio del funzionamento di Zope mentre Plone semplifica di molto la gestione
di queste operazioni permettendo agli amministratori di effettuare le operazioni di sicurezza e
manutenzione direttamente dal portale.
4.2.7 Aggiunta degli utenti e definizione dei ruoli
Avendo eliminato dal portale Plone del progetto DiCSI la possibilità di registrazione
per gli utenti anonimi, è stato necessario inserire manualmente gli utenti del portale
assegnando loro dei ruoli. Plone usa il meccanismo dei ruoli per definire cosa possono fare e
vedere i diversi utenti.
I ruoli predefiniti in una installazione di default includono l’anonimo, il collaboratore, il
possessore, il revisore e il manager. Chiunque acceda al sito senza farsi riconoscere assume il
ruolo di anonimo. I manager (amministratori del portale) possono accedere a tutte le sezioni e
hanno un completo controllo dei contenuti, inoltre possono modificare le impostazioni di
configurazione del portale. I revisori possono confermarne la pubblicazione dei contenuti
messi a loro disposizione dai collaboratori. I collaboratori possono creare contenuti nella
propria cartella personale o in cartelle condivise dai manager, e sono possessori della propria
cartella e dei documenti ivi creati.
Inoltre Plone mette a disposizione degli amministratori un meccanismo di raggruppamento
degli utenti per assegnare ruoli comuni a gruppi di utenti facilitando la condivisione dei
contenuti o le operazioni di sicurezza.
Per il portale implementato si è scelto di dare al coordinatore del progetto DiCSI il ruolo di
amministratore mentre agli altri membri i ruoli di collaboratori e di revisori dei contenuti.
113
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Questi sono stati inseriti in un gruppo di utenti, denominato “Pubblicatori”, per facilitare la
condivisione delle sezioni. Per quanto riguarda i permessi di pubblicazione nelle sezioni del
portale, questi sono concessi dall’amministratore a tutti i membri ad eccezione delle cartelle
“Progetto” ed “Incontri”. Queste sezioni, infatti, sono riservate al coordinatore del progetto di
ricerca, per cui solo lui può inserire annunci di incontri di progetto o modificare e/o
aggiungere i documenti esplicativi del progetto.
4.3 Funzionamento del portale
Dopo aver visto qual’è l’utilizzo previsto per il portale web dedicato al progetto DiCSI
e come è stato configurato a tal fine un sito basato su Plone, andremo a vedere altri aspetti
fondamentali del funzionamento di un completo sistema di gestione dei contenuti a sorgente
aperto qual è Plone. Vedremo quali sono i tipi di contenuto che mette a disposizione e come
permette ai membri di gestirli.
4.3.1 Accesso al portale
Al primo accesso al portale da parte dei membri compare una pagina iniziale che
mostra le caratteristiche di base del portale ed invita ad effettuare le modifiche preliminari. La
barra di navigazione si modifica automaticamente presentando il nome dell’utente che ha
effettuato l’accesso e permettendo di raggiungere la cartella personale o le proprie preferenze
personali. Plone, come già detto, dispone della possibilità di effettuare l’‘Undo’ delle ultime
modifiche. Questo permette ai membri di annullare gli ultimi cambiamenti fatti. Per farlo un
utente ha a disposizione nella barra del portale il link 'annulla' che serve ad aprire una pagina
114
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
particolare dove Plone memorizza tutti gli ultimi cambiamenti fatti nel portale, tra cui
l’aggiunta, la modifica, lo spostamento o l’eliminazione di oggetti.
Figura 4.8 – Dettaglio della barra di navigazione di Plone
Al primo accesso al portale occorre che ogni membro riveda le impostazioni personali che
Plone mette a disposizione.
Impostazione delle preferenze personali
Cliccando su ‘preferenze personali’ è possibile specificare delle informazioni personali, come
il nome e cognome visualizzati nella firma degli oggetti creati, il ritratto personale, l’home
page personale, la località, la lingua, una breve biografia e l’indirizzo email. Sono presenti
anche dei campi per opzionare se rendere visibile al pubblico la propria cartella personale.
Rinomina della cartella personale e costruzione di una homepage personale
La cartella personale è un contenitore di oggetti per l'utente che possono esser resi pubblici e
accessibili attraverso la cartella Members o in alternativa privati e nascosti anche ai membri
del portale. Il nome della cartella personale è lo stesso della login al sito. Per modificare il
nome della cartella occorre accedervi tramite il link sulla barra di navigazione e cliccare sulla
scheda 'modifica'. Compare un modulo di modifica con il nome attuale per la cartella e la sua
descrizione, quindi modificando entrambe i moduli e salvando le modifiche si cambia il nome
della cartella personale.
Per creare una home page personale occorre aggiungere alla cartella un oggetto di tipo
'pagina'. Una volta salvata, la pagina sarà visibile nella cartella personale. Per far si che
diventi la homepage personale occorre sceglierla come vista predefinita per la cartella. Questa
operazione si può svolgere dalla scheda 'visualizza' o 'contenuti' cliccando sul menù 'vista' e
selezionando, sulla pagina destinata a diventare la home page personale, 'scegli elemento
come vista predefinita'.
115
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
In questo modo ogni utente anonimo che accederà alla cartella personale di un utente
attraverso Members vedrà la pagina scelta come home page del membro selezionato.
In alternativa nelle preferenze personali è possibile scegliere se rendere nascosta ai membri e
al pubblico la cartella personale, altrimenti raggiungibile attraverso la cartella Members o dal
form di ricerca del sito. Se si vuole rendere privata la cartella occorre togliere la spunta a
'Visibile nelle ricerche fra i collaboratori' dalle preferenze personali, oppure mettere in stato
'privato' la cartella (più avanti vedremo come modificare lo stato di un oggetto).
Una volta effettuato l'accesso è possibile aggiungere contenuti nelle sezioni aperte ai membri.
Si ricorda che le sezioni aperte ai tutti i membri sono: Documenti, Pubblicazioni, Notizie e
Risorse.
4.3.2 Principi di funzionamento di Plone
Spostandosi nella cartella personale o nelle sezioni aperte alla pubblicazione di
contenuti da parte dei membri del progetto si nota che compare una nuova barra che permette
di effettuare le operazioni principali di pubblicazione. Di seguito una immagine di esempio
della barra:
Figura 4.9 – Dettaglio della barra dei contenuti accessibile ai soli membri
La barra si modifica in base alle operazioni che è possibile effettuare sull'oggetto corrente (in
questo caso la cartella Pubblicazioni) e ai permessi per l'utente collegato.
116
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Occorre notare che Plone mette in risalto l'oggetto che si sta modificando mostrando subito
dopo la barra dei contenuti il titolo dell'oggetto corrente (la cartella Pubblicazioni).
La barra è formata da varie schede:
La scheda Contenuti permette di vedere e gestire singolarmente o in blocco i contenuti
della cartella corrente (ad esempio è possibile selezionare più documenti per
l'eliminazione) ma è possibile anche aggiungere nuovi oggetti o modificare lo stato della
cartella corrente.
Figura 4.10 – Dettaglio del portale mostrante la scheda dei Contenuti
La scheda predefinita è Visualizza che permette di vedere gli oggetti contenuti nella
cartella. Questa scheda serve anche per decidere cosa vedranno i visitatori anonimi.
Infatti nella scheda Visualizza è presente il menù Vista che serve a scegliere cosa
vedranno nella cartella corrente i visitatori anonimi ed i membri registrati.
Se ci si trova in una cartella si può scegliere una pagina contenuta nella cartella come Vista
predefinita per quella cartella. Così facendo ogni utente che accede alla cartella vede subito la
pagina prescelta invece che i provini dei contenuti della cartella.
117
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Figura 2.11 – Scelta di un documento come vista predefinita per una cartella
Cliccando su 'scegli un elemento come vista predefinita' dal menù vista compare la pagina
seguente che permette di scegliere un oggetto di tipo 'pagina' tra quelli presenti nella cartella
corrente.
Figura 4.12 – Opzioni di scelta di una pagina come vista predefinita
In questo modo anche gli utenti anonimi, cioè il pubblico, vedranno il documento scelto come
Vista predefinita per quella cartella. Questa operazione avviene, ad esempio, se si clicca su
'Progetto': si nota che a differenza delle altre sezioni del portale qui si leggerà direttamente la
pagina con l'Abstract del progetto invece di vedere i contenuti presenti nella cartella.
118
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Occorre fare attenzione alla vista che si sceglie perchè sarà quella visibile anche dagli utenti
anonimi che non hanno i permessi per modificarla.
La scheda Modifica permette di modificare l'oggetto corrente. Serve a riportare l'utente al
modulo di inserimento dati dell’oggetto selezionato, lo stesso modulo che viene
visualizzato quando si aggiunge un qualsiasi oggetto di Plone.
La scheda Proprietà permette di impostare delle opzioni sull'oggetto corrente e alcuni
metadati. Qui è possibile decidere se mostrare al pubblico un documento dopo una certa
data o se nasconderlo dopo una data di scadenza. Basta leggere attentamente i dettagli
nella pagina per capire come usare le opzioni.
La scheda Condivisione permette al possessore di un oggetto (o all’amministratore) di
impostare la condivisione dell'oggetto tra utenti e gruppi.
Come visto per ogni scheda selezionata compaiono delle opzioni possibili nella cartella o
sugli oggetti selezionati, basta fare attenzione alle intestazioni presenti nella pagina, per capire
su quale oggetto si sta operando.
4.3.3 Tipi di contenuto
Plone mette a disposizione un meccanismo di pubblicazione di vari tipi di oggetto. Per
aggiungere oggetti ad una sezione del portale occorre semplicemente posizionarsi in quella
sezione tramite i link e cliccare su 'aggiungi un nuovo elemento', quindi scegliere il tipo di
elemento. Una volta scelto un tipo di oggetto si apre una nuova pagina con dei moduli di
inserimento predefiniti.
119
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
I tipi predefiniti di Plone sono:
Pagine - Pagina del sito generica. Contiene in generale del testo editabile mediante l'editor integrato WYSWYG o direttamente in Html.
Immagine - Consente l'upload di immagini e l’inserimento di un testo descrittivo.
Evento - Consente l'inserimento di eventi quali meeting o incontri con relativa descrizione. Un evento è un tipo di dato di Plone che una volta inserito viene messo in risalto nel sito e indicato nel calendario.
Notizia - Consente di mettere in risalto una notizia importante per il progetto. E' un tipo di dato che Plone mette in risalto nel portale.
Collegamento - Consente l'inserimento con relativa descrizione di link esterni al portale.
Cartella - Contenitore per organizzare i contenuti.
File - File con estensione nota uploadabile per essere scaricato dal pubblico.
Vediamo in dettaglio i principali tipi di oggetto di Plone.
Pagine
Una pagina è un documento con contenuto testuale, immagini e link interni od esterni al
portale. Anche se ogni oggetto aggiunto in Plone è accessibile attraverso le pagine web del
portale, le pagine sono tipi di contenuto intesi come pagine web vere e proprie. Plone
consente di utilizzare l’HTML per la personalizzazione delle pagine. Ad esempio la pagina
iniziale del portale è un oggetto di tipo pagina, cioè un documento di testo. I metadati
associati alle pagine sono il titolo (obbligatorio) e la descrizione.
File
I file sono documenti esterni uploadabili all'interno del portale. Il modulo di inserimento di un
file richiede un titolo descrittivo del contenuto, una breve descrizione, e infine presenta un
pulsante per la scelta del file da uploadare.
120
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Notizie
Il tipo di contenuto 'Notizia' presenta un modulo di inserimento/modifica simile alle pagine
ma inoltre permette di aggiungere un'immagine uploadabile con relativa didascalia ed
eventuali link a contenuti correlati.
Eventi
Per il tipo 'Evento' Plone permette di definire ulteriori informazioni opzionali oltre alla
descrizione quali: il luogo, un URL esterno, un contatto con relativo numero telefonico e
email, delle parole chiave, i partecipanti e cosa più importante un range di tempo in cui
l'evento è valido e comparirà, una volta pubblicato, nel calendario del portale e nel riquadro
'prossimi eventi' simile a quello 'ultime notizie'.
L’aspetto più interessante dei tipi di contenuto ‘Notizia’ ed ‘Evento’ è che questi tipi di
oggetto vanno a popolare automaticamente determinati slot di Plone. Nello specifico le notizie
riempiono lo slot “ultime notizie”, mentre gli eventi lo slot “ultimi eventi”, come evidenziato
dalla prossima figura:
Figura 4.13 - Slot forniti dal CMS Plone
121
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Gli slot non sono altro che box particolari, posizionabili a piacimento nell’interfaccia del
portale, che vengono popolati automaticamente con determinati tipi di oggetto. Nello
specifico Plone permette di utilizzare i seguenti slot per gli scopi elencati:
Esplorazione del file system del portale (slot contenente l’albero di navigazione)
Informazioni sull’elemento visualizzato
Link agli ultimi oggetti pubblicati
Ultime revisioni richieste (per chi ha i privilegi di revisore)
Calendario con le date degli eventi non decaduti
Per modificare gli slot occorre accedere alla ZMI e all’interno della root principale del sito
Plone selezionare il tab “Properties”. Al suo interno ci sono una serie di scelte che
definiscono l’immagine e il comportamento del sito. Nelle sezioni “left_slots” e “right_slots”
sono stati scelti i seguenti box:
Figura 4.14 – ZMI, dettaglio della scheda “properties” relativa al portale.
122
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
4.3.4 Stato degli oggetti e flusso di lavoro
Ogni contenuto di Plone ha uno stato di pubblicazione. Gli stati di pubblicazione
servono a definire il flusso di lavoro. Gli stati predefiniti sono: “bozza pubblica”, “pubblico”,
“privato” ed “in revisione”. Ad eccezione dello stato privato i contenuti in qualsiasi stato si
trovino sono visibili al pubblico.
Gli stati predefiniti in Plone sono i seguenti:
Privato: stato di un oggetto che non si vuol rendere visibile a visitatori anonimi; in questo modo solo i membri del portale possono vedere e modificare un oggetto privato nelle cartelle condivise.
Revisione: mette in risalto ai membri del portale un contenuto nuovo da rivedere. L'oggetto in revisione è comunque visibile agli utenti anonimi. In questo stato ogni volta che un utente si autentica al portale vede al lato destro del sito un promemoria (slot ‘da revisionare’) che indica che un nuovo oggetto è stato inserito da un altro utente e che quest’ultimo ne richiede l'approvazione da parte di qualche membro revisore.
Bozza pubblica: stato predefinito per i nuovi oggetti. In questo stato l'oggetto è visibile a chiunque e modificabile dai membri del portale.
Pubblico: stato finale dell'oggetto. In questo stato un contenuto è visualizzabile da chiunque ma non modificabile. Per modificarlo è necessario passare ad un altro stato.
Figura 4.15 – Grafico degli stati e delle azioni sugli oggetti
123
4. Progetto di un portale basato sul CMS Plone Implementazione del portale
Tutti gli oggetti quando si trovano in uno stato tra i quattro descritti sono evidenziati ai
membri del portale con colori diversi. Nello stato 'pubblicato' gli oggetti presentano il titolo di
colore azzurro. Nello stato 'privato' il colore del titolo dell'oggetto è il rosso. In 'bozza
pubblica' il colore dei titoli è il verde mentre 'in revisione' è l’arancione.
Come spiegato nel paragrafo relativo alla definizione dei ruoli, tutti i membri del progetto
hanno il ruolo di Possessori e Revisori per le sezioni condivise. Per cui essi possono sempre
modificare lo stato di un oggetto ogni volta che lo ritengano necessario. Si ricorda che solo
nello stato 'privato' i documenti sono nascosti al pubblico.
Per quanto riguarda la personalizzazione del portale del progetto DiCSI si è preferito lasciare
intatto il workflow predefinito di Plone, andando ad assegnare a tutti i membri il ruolo di
revisori oltre a quello di normali collaboratori. La scelta si riconduce al fatto che in questo
modo si rende possibile ai membri del portale la collaborazione alla stesura di un documento
comune. Infatti, qualora lo vogliano, possono creare documenti nelle cartelle condivise ed
iniziare la stesura di un documento di bozza che può essere posto nello stato ‘in revisione’ in
modo che tutti gli altri membri, dopo l’accesso al portale, lo vedano in evidenza nello slot “da
revisionare”. Nelle cartelle condivise, appunto, tutti i membri del progetto sono possessori dei
contenuti, oltre che revisori, per cui possono modificare anche i contenuti creati da altri
membri.
Conclusioni
In questo capitolo si è parlato dell’oggetto specifico di questa tesi, ovvero dello studio e
dell’implementazione di un portale web tematico attraverso Plone, un noto sistema di gestione
dei contenuti a sorgente aperto. Dopo aver introdotto lo scopo e le necessità del portale sono
state mostrate le principali operazioni eseguite per la messa in opera e la personalizzazione
del portale, accompagnate da una panoramica del funzionamento di Plone nell’ambito
dell’utilizzo previsto per il progetto di ricerca. Sebbene molti aspetti considerati avrebbero
meritato un ulteriore approfondimento, si è cercato comunque di essere completi nella
presentazione degli argomenti che sono stati oggetto di studio.
124
5. Considerazioni finali
L’esposizione degli argomenti di questa tesi ha rappresentato un completamento allo
studio condotto nell’ambito del lavoro di tirocinio, lavoro che ha visto la realizzazione di un
portale web con strumenti software specifici quali sono i CMS. Se lo scopo del tirocinio è
quello di avvicinare gli studenti alla pratica e al mondo del lavoro, bisogna ammettere che
dover sviluppare un portale web con prospettive reali di utilizzazione è stato molto stimolante
in questo senso. Il lavoro è stato svolto con l’ausilio di un sistema di gestione dei contenuti a
sorgente aperto, e questo ha comportato la conoscenza e l’applicazione di strumenti
appartenenti ad un settore che può offrire interessanti prospettive nel mondo del lavoro. Infatti
la gestione dei contenuti digitali è, per molte aziende ed organizzazioni, un problema attuale
ma anche futuro, in quanto il continuo sfruttamento di Internet, dovuto alla crescente
domanda di connettività, porterà sempre più aziende ad investire nelle possibilità offerte dalla
rete e le vedrà competere su questo piano.
Molti Web Content Management Systems a sorgente aperto come Plone, il WCMS
che è stato studiato ed utilizzato nell’ambito del lavoro svolto, sono sviluppati da comunità
volontarie di programmatori che da anni lavorano in questo campo e che hanno permesso una
buona maturazione di questi strumenti tale da renderli ottimi concorrenti dei prodotti
proprietari disponibili nel mercato dei sistemi di gestione dei contenuti. Difatti sono stati
mostrati i vantaggi offerti dall’adozione di software a sorgente aperto, vantaggi che per una
organizzazione vanno oltre il semplice abbattimento dei costi e che sono derivanti proprio
dalla filosofia dell’Open Source di dare libera accessibilità al codice sorgente. Infatti
adoperare questi strumenti consente ad una organizzazione, principalmente, di essere
indipendente dai fornitori del servizio in quanto questi non detengono i diritti d’autore sul
codice sorgente del software. Ma adoperando sistemi open source è anche possibile essere
totalmente indipendenti da fornitori esterni andando ad impiegare personale interno
all’organizzazione stessa, formato a tale scopo.
125
5. Considerazioni finali
Quanto visto è attuabile grazie al fatto che molti WCMS Open Source mettono a disposizione
tutta la documentazione dei sorgenti ed in alcuni casi, come per Plone, anche delle guide per
gli amministratori e per gli utenti finali.
Un altro punto a favore dei CMS a sorgente aperto rispetto ai proprietari, è quello della
garanzia dell’evoluzione del software. Infatti anche se la comunità di sviluppatori dovesse
abbandonare lo sviluppo del software per qualsiasi motivo, sarebbe comunque possibile
continuare ad utilizzare e personalizzare il software per i propri scopi avendo a disposizione il
codice sorgente con licenze open source, che danno la possibilità di sviluppo libero ed
indipendente. Questo di certo non accadrà nel caso di organizzazioni che usano soluzioni
proprietarie, perchè in caso di mancato supporto, dipendendo da un unico fornitore che può
esser soggetto a fallimento, dovrebbero necessariamente abbandonare il software utilizzato
subendo le dannose conseguenze che possono derivare.
Il CMS a sorgente aperto oggetto di studio, Plone, è un CMS completo e si è mostrato
più che sufficiente per gli scopi previsti. Plone è molto flessibile e rappresenta l’ideale come
sistema di gestione dei contenuti per intranet, come sistema di web publishing e come
strumento di groupware per collaborazioni via internet. E’ un CMS molto versatile che può
essere utilizzato in molteplici situazioni permettendo la creazione veloce ed organica di siti e
portali dinamici, evoluti ed anche di grandi dimensioni. Offre in modo nativo molti elementi
essenziali per un CMS, come il motore di workflow, la gestione della sicurezza e degli utenti,
una serie di oggetti preconfigurati per la gestione di contenuti (notizie, documenti, eventi,
ecc.) ed il supporto multilingua. Plone può vantare di essere adoperato sia da moltissime
aziende commerciali che da importanti organizzazioni educative, governative, e non-profit. A
titolo di esempio si possono citare la NASA, il governo Brasiliano, la Free Software
Foundation, molti centri di ricerca di tutto il mondo ed università come quella dello stato
americano dell’Utah. Si può dire che Plone sia molto apprezzato in tutto il mondo perchè
rappresenta un ottimo esempio delle possibilità offerte dagli strumenti a sorgente aperto e
delle derivanti libertà.
126
5. Considerazioni finali
Plone è risultato un ottimo CMS ed è stato più che sufficiente per raggiungere gli
scopi previsti per il portale web dedicato al progetto di ricerca DiCSI. Il portale, grazie alle
possibilità offerte da Plone, si presta bene ad essere gestito autonomamente dai membri del
progetto di ricerca, ma qualora dovessero nascere delle esigenze particolari può essere
facilmente ampliato e personalizzato.
Ringraziamenti
In conclusione, seppure molti degli aspetti osservati avrebbero meritato un ulteriore
approfondimento, si può affermare che sia stato molto interessante ed educativo poter trattare
gli argomenti di questa tesi. Infatti il lavoro svolto rappresenta un ottimo inizio per un
approfondimento futuro degli argomenti trattati. Per questo un ringraziamento particolare va
al relatore, il Prof. Aldo Franco Dragoni, docente del dipartimento di Elettronica, Intelligenza
Artificiale e Telecomunicazioni dell’Università Politecnica delle Marche, che ha reso
possibile il tirocinio e che ha supportato con fiducia il lavoro svolto.
Infine il ringraziamento più grande va alla mia famiglia, che ha tenuto molto alla mia
istruzione, ed a tutte le persone che hanno creduto in me e che mi sono state vicine e di aiuto,
grazie alle quali la mia esperienza universitaria ha potuto raggiungere questo traguardo.
127
Bibliografia e Webgrafia
“Living Internet” - Copyright 1996 - 2006 William Stewart, link: www.livinginternet.com
Tim Berners-Lee, Robert Cailliau: “WorldWideWeb: Proposal for a HyperText Project”, CERN Internal Memo, Geneve, 1990, disponibile on line: www.w3.org/Proposal.html
Aldo Necci, Networking, Dipartimento di Informatica ed Automazione – Università degli studi Roma TRE, Roma. Link: www.dia.uniroma3.it/~necci/storia_internet.htm,
“History of Internet” – Facoltà di Lettere della Leiden University (Netherlands): www.internethistory.leidenuniv.nl
Consorzio W3C – WAI Guideline: Web Accessibility Initiative – www.w3.org/WAI/
What Is Web 2.0 – Tim O’Reilly - www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html
Internet2’s New Backbone Network - Rick Summerhill - http://docs.internet2.edu
[Dimitrios Michelinakis, 2004] Open Source CMS, An Argumentative Approach - Dimitrios Michelinakis –University of Warwick - www.michelinakis.gr/Dimitris/cms/
[Bob Boiko, 2005] Content Management Bible, Bob Boiko, II Edizione Wiley - ISBN: 0764573713
[Glasshaus, 2003] Content Management Systems - Phil Suh, Dave Addey, David Thiemecke, James Ellis - Apress, ISBN:190415106X
Open-source content management systems – On-line Review, link: www.steptwo.com.au
GNU General Public License (GPL) - www.gnu.org/licenses/
Free Software Foundation –sito: http://www.fsf.org/
Open Source Initiative – sito: www.opensource.org/docs/definition.php
The definitive guide to Plone – link: http://plone.org/documentation/manual/definitive-guideTraduzione italiana - link: http://docit.bice.dyndns.org/Plone/PloneBook2/it/index.html
The Zope Book – Edizione 2.6 – link: www.zope.org/Documentation/Books/ZopeBook/
128