# Zope

Zope è una piattaforma che permette a sviluppatori con differenti livelli di competenza di costruire applicazioni web. Piattaforme di questo tipo sono spesso chiamate server per applicazioni web, o a volte solamente server per applicazioni. Zope è quindi un server per applicazioni web, così come prodotti concorrenti come BEA WebLogic, Macromedia ColdFusion e (in alcune estensioni) Vignette StoryServer.

## Storia di Zope

Nel 1996 Jim Fulton (l'attuale CTO di Zope Corporation, i distributori di Zope) venne selezionato per tenere un corso sulla programmazione CGI, malgrado non ne sapesse molto al riguardo. La programmazione CGI o Common Gateway Interface è un modello di sviluppo web comunemente utilizzato che permette agli sviluppatori di costruire siti web dinamici. Jim ha studiato tutta la documentazione esistente sui CGI durante il tragitto ma al ritorno dal corso, Jim valutò che gli ambienti di programmazione basati su CGI non erano di suo gradimento. Il cuore di Zope venne scritto in seguito a queste considerazioni sull'aereo durante il volo di ritorno.
Zope Corporation (nota come Digital Creations) pubblicò tre pacchetti software open source per supportare la pubblicazione web, Bobo, Document Template e BoboPOS. Questi tre pacchetti vennero scritti in un linguaggio chiamato Python, e rispettivamente offrivano uno strumento per la pubblicazione su web, il templating del testo e il database ad oggetti ZODB. Digital Creations ha sviluppato un server di applicazioni web commerciale basato su questi loro tre componenti open source. Il prodotto venne chiamato Principia. Nel novembre del 1998, l'investitore Hadar Pedhazur convinse la Digital Creations a rendere open source Principia. Questi componenti si sono evoluti negli attuali componenti base di Zope.
L'acronimo "Zope" sta per Z Object Publishing Environment (ambiente Z per la pubblicazione di oggetti"); la "Z" non significa nulla in particolare. La maggior parte di Zope è scritta nel linguaggio di scripting Python, ed in C nei frammenti di codice critici per le prestazioni.

## Caratteristiche di Zope

Zope è distribuito con una licenza open source, la Zope Public License o ZPL. I termini della licenza ZPL stipulano che è possibile avere e modificare il codice sorgente di Zope.
È da notare che la ZPL è stata certificata come aderente a Open Source Definition da Open Source Initiative ed è elencata come conforme alla GPL dalla Free Software Foundation.
Zope è una piattaforma inclusiva. Viene fornito con tutti i componenti necessari per cominciare lo sviluppo di una applicazione. Non occorrono altre licenze per software aggiuntivo di supporto a Zope (ad esempio un database server relazionale) per sviluppare applicazioni. Questo inoltre rende l'installazione di Zope molto semplice.
Zope permette ed incoraggia gli sviluppatori a pacchettizzare e di distribuire applicazioni pronte per l'uso. Grazie a ciò, Zope è corredato da un'ampia varietà di servizi integrati e di prodotti aggiuntivi per un utilizzo immediato. 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.
L'applicazione più diffusa basata su Zope è il Content Management System Plone.
Le applicazioni create in Zope possono scalare quasi linearmente utilizzando la soluzione di computer cluster Zope Enterprise Objects (ZEO) che Zope mette a disposizione. Utilizzando ZEO, è possibile frammentare una applicazione Zope distribuendola su molti computer senza dover modificare pesantemente il codice dell'applicazione.
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, anche 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 dalla sicurezza estensibile e granulare. È possibile integrare semplicemente Zope con diversi sistemi di autenticazione ed autorizzazione come, LDAP, Windows NT e RADIUS simultaneamente, utilizzando modelli esistenti.
Zope consente a gruppi di sviluppatori di collaborare. Gli ambienti collaborativi richiedono strumenti che lascino lavorare gli utenti senza interferire gli uni con gli altri, quindi Zope ha la funzionalita di Undo, supporta le Versioni, la History ed altri strumenti che aiutano le diverse parti a lavorare in modo sicuro assieme permettendo il ripristino dagli errori.
Zope gira sui più diffusi sistemi operativi per microcomputer: GNU/Linux, Microsoft Windows NT/2000/XP, Solaris, FreeBSD, NetBSD, OpenBSD e macOS. Zope funziona anche su Windows 98/ME (consigliato in questa configurazione solo per scopi di sviluppo).
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 utilizzate nella creazione di un'applicazione.

## Zope 3

Nonostante il successo della linea software originale (oggi chiamata Zope 2) la comunità degli sviluppatori ha deciso che per superare alcuni limiti nel design iniziale del sistema era necessario un sostanziale cambio di paradigma e una conseguente riscrittura da zero del codice sorgente. Dopo un lungo periodo di sviluppo il 6 novembre 2004 è stata pubblicata la prima versione stabile del nuovo Zope 3 completamente ridisegnato e riscritto usando un'architettura a componenti che rende molto più semplice utilizzare insieme prodotti di origine diversa.

## Five

Il problema della radicale differenza tra Zope 2 e Zope 3 dal punto di vista dello sviluppatore di applicazioni web è stato risolto dal progetto Five che permette di usare buona parte dei concetti e delle tecniche di Zope 3 all'interno di Zope 2. Grazie a Five uno sviluppatore può migrare le proprie applicazioni Zope 2 all'uso della architettura a componenti di Zope 3 poco per volta seguendo un percorso continuo. Five è entrato a far parte della distribuzione originale di Zope 2 e a ogni successiva pubblicazione integra un numero crescente di funzionalità di Zope 3.
Il nome Five deriva dal gioco di parole: Zope 2 + Zope 3 = Five.

## A chi è destinato Zope

Organizzare il processo di sviluppo per siti a larga scala può essere un compito difficile. Spesso impegna molte persone a lavorare assieme per creare, strutturare e manutenere applicazioni web.
* Architetti dell'informazione: prendono le decisioni sulla piattaforma da adottare in base ad una "visione panoramica" del progetto.
* Sviluppatori dei componenti: creano le strutture per il riutilizzo del software e per la distribuzione.
* Sviluppatori del sito: integrano il software scritto dagli sviluppatori dei componenti e i servizi nativi del server di applicazioni.
* Disegnatori del sito: creano l'aspetto grafico del sito.
* Organizzatori dei contenuti: creano ed organizzano i contenuti del sito.
* Amministratori: mantengono funzionante l'ambiente ed il software.
* Consumatori: utilizzano i contenuti del sito.
Tra i ruoli sopra elencati, Zope è maggiormente indicato agli sviluppatori di componenti, agli sviluppatori del sito e ai disegnatori del sito. Questi tre gruppi di persone possono collaborare nella produzione di una applicazione usando i servizi nativi di Zope e i Prodotti di Zope di terze parti. Produrranno applicazioni utili agli organizzatori dei contenuti e ai consumatori sotto la guida degli architetti dell'informazione. Gli amministratori struttureranno e cureranno l'applicazione dopo che è stata creata.

## Che cosa non è Zope

Zope è un ambiente per la costruzione di applicazioni web che i programmatori con diversi livelli di esperienza possono usare per creare applicazioni basate sul web. Non è in sé una applicazione pronta per l'utilizzo "a scatola chiusa" adatta ad ogni tipo di sviluppo di applicazione. Per esempio, Zope non è un'applicazione di weblog, un sistema per la gestione dei contenuti o un negozio elettronico (e-shop).
Tuttavia, i prodotti gratuitamente disponibili costruiti sulla base di Zope offrono questo tipo di servizi. Esistono centinaia di prodotti disponibile tra i quali prodotti per il logging web, per la gestione dei contenuti (per esempio Plone) e per il commercio elettronico.
Zope non è uno strumento di disegno visuale. Strumenti come Adobe Dreamweaver o Adobe GoLive permettono ai disegnatori di creare l'aspetto grafico. Potete utilizzare questi programmi per gestire siti web basati su Zope, ma Zope non è in grado di rimpiazzarli. Potete modificare il contenuto "attraverso il web" usando Zope, ma le limitazioni poste dagli attuali browser impediscono a Zope di offrire gli strumenti per compiere questo tipo di lavoro così bene come possono invece fare strumenti dedicati alla creazione della presentazione grafica.

## Supporto a Zope

La comunità di sviluppatori è responsabile per la manutenzione e l'estensione del server di applicazioni Zope. Molti contributori della comunità sono consulenti professionali, sviluppatori e gestori di siti che sviluppano applicazioni usando Zope per un tornaconto personale. Altri sono studenti e hobbisti curiosi. Zope Corporation è un contributore di questa comunità. Zope Corporation controlla la distribuzione delle versioni "canoniche" di Zope e consente tanto ai propri sviluppatori quanto agli altri di modificare il codice sorgente della distribuzione.
La comunità Zope si incontra occasionalmente a conferenze, ma passa la maggior parte del tempo a discutere sulle molte mailing list e siti web relativi a Zope.