airtlab.dii.univpm.itairtlab.dii.univpm.it/en/system/files/thesis/grasso-gianluc…  · Web...

213
Università Politecnica Delle Marche Facoltà 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

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

Relatore Candidato Prof. Aldo Franco Dragoni Gianluca Grasso

Anno Accademico 2005-2006

Ai miei cari

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à &nbsp 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