# Zope 3

Zope 3 è la terza versione del popolare ambiente Zope, una piattaforma che permette a sviluppatori con differenti livelli di competenza di costruire applicazioni web. Zope 3 è oggi un sistema di produzione a tutti gli effetti ed è il frutto di una riscrittura da zero del codice sorgente, usando un'architettura a componenti e implementando una vasta libreria di componenti Python riutilizzabili. Zope 3 è distribuito sotto licenza Zope Public License ed è quindi software libero.

## Storia di Zope 3

Il progetto Zope 3 prende vita nel febbraio 2001 ed ha l'obiettivo di riscrivere completamente il software, mantenendo le caratteristiche vincenti di Zope 2, ma sopperendo alle sue mancanze. L'efficace modello di Zope, il cui fine ultimo è mettere persone non tecniche in condizione di creare siti web dinamici, necessitava infatti di una evoluzione. Il nuovo progetto inizia con lo sviluppo di un'architettura a componenti, permettendo così di frazionare il software in unità pulite e riutilizzabili. Zope 3 ha introdotto inoltre un pacchetto interfaccia al fine di fornire un'interfaccia utente che si vede dal web, consentendo di interagire più facilmente con il linguaggio Python senza essere necessariamente programmatori esperti.

## Caratteristiche di Zope 3

L'obiettivo del progetto Zope 3 era permettere ai programmatori di usare Zope per pubblicare oggetti Python senza imporre nessuna restrizione su di essi, come classi di base speciali, attributi particolari e così via. Il codice di presentazione è separato dal codice che si occupa della logica, ad unirli ci pensa l'architettura a componenti.
Zope 3 viene considerato da alcuni più una collezione di utili librerie per lo sviluppo di applicazioni web, piuttosto che un vero server per applicazioni web. Zope 3 include pacchetti separati per le interfacce, architettura a componenti, server HTTP, publisher, Zope Object Database (ZODB), Zope Page Templates, I18N, politiche di sicurezza, e così via. Tutti questi componenti sono tenuti assieme con ZCML, un file di configurazione in linguaggio XML, e possono essere usati separatamente rispetto ad altre parti di Zope.
Il progetto segue rigorosamente un metodo basato sull'attività di test, tutto il codice è stato adeguatamente testato. È anche stata adottata l'abitudine di documentare tutte le fasi di progettazione, producendo dei testi che includono dei frammenti di codice eseguibili, simili a trascrizioni di sessioni Python interattive. Rispetto alla normale documentazione, questo tipo di testi è molto più leggibile, mantenendo comunque la loro utilità in quanto a testaggio.
Zope 3 utilizza gran parte dei nuovi metodi di sviluppo e delle tecnologie più interessanti; il progetto è cresciuto grazie soprattutto alla pratica degli sprint, ovvero sessioni intensive di sviluppo, che possono durare un paio di giorni o anche settimane, in cui sviluppatori provenienti da diverse parti del mondo collaborano insieme, unendo conoscenze ed idee.
Zope 3 è tuttora in continuo sviluppo, è oggi considerato un framework stabile e affidabile, usato in progetti di varia natura e livello in tutto il mondo. La nuova tendenza di sviluppo è rendere Zope 3 scaricabile come moduli separati più piccoli, gli utenti potranno così installare solo i moduli che servono per i loro progetti, usando la nuova tecnologia dei Python egg per la distribuzione di pacchetti.
Il progetto Five ha l'obiettivo di facilitare la transizione da una generazione all'altra di Zope in progetti che usano Zope 2, facilitando gli sviluppatori che voglio trarre vantaggio dalle nuove conquiste effettuate. Five permette infatti di usare buona parte dei concetti e delle tecniche di Zope 3 all'interno di Zope 2.