Zope
Zope est un serveur d'applications web orienté objet, libre, écrit en langage de programmation Python et gérable à partir d'une interface Web. Zope publie sur le réseau des objets Python enregistrés dans une base de données objet, ZODB. Des types d'objet élémentaires, tels que des documents, des images, des patrons (templates) de page, sont à la disposition des utilisateurs pour être créés et gérés via l'Internet. Des types d'objets spécialisés, tels que les wikis, les blogs, les galeries de photos, sont disponibles en tant que greffons tiers (nommés produits) et il existe une communauté grandissante de petites entreprises créant des applications web sur mesure à base de Zope.

Il existe 2 versions de Zope :
 La branche historique 2.x, successeur de la 1.x. C'est celle-ci qui est utilisée, par exemple, pour les CMS Plone et CPS. Elle se décompose en sous-branches 2.8.x, 2.9.x, et 2.10.x. 
 La branche 3.x, réécriture totale du serveur d'applications. Fruit de l'expérience du projet Zope 2 et de 10 ans de développement de serveur d'applications, Zope 3 se veut plus efficace, plus léger et beaucoup plus puissant.

À la date de , les versions sont 2.9.8, 2.10.5 et 3.3.1. Depuis 2005, le projet est passé en . Une version majeure sort tous les 6 mois.

Histoire 
Zope apparut lorsque son entreprise créatrice, Digital Creations (aujourd'hui Zope Corporation), a libéré le code source de leurs produits phares, Bobo puis Principia, en 1998. La combinaison des deux produits a été renommée Zope lors de leur diffusion. Cette décision transforma Digital Creations en société de services, et donna à Zope bien plus de publicité et d'influence que Principia n'avait jamais eu. Le nom Zope vient d'un poisson : la brème (Cyprinus ballerus).

Zope est désormais maintenu par la fondation Zope qui est composée de membres de la communauté de développeurs. Elle est actuellement, indépendante de tout lien avec la Zope Corporation.

Depuis 2001, deux versions de Zope sont maintenues séparément par la communauté Zope. La branche 2 (actuellement 2.12 et 2.13) qui intègrent des éléments de la version 3 via le composant Five et la version 3 qui a été finalement renommée Bluebream (ou brème bleue) en 2010.

Caractéristiques techniques 
Un site Zope est composé d'objets dans une base de données objet, et non dans des fichiers comme d'autres systèmes de serveurs web. Cette approche exploite les technologies objet comme l'encapsulation. Zope relie les URL aux objets par la hiérarchie de contenu de tels objets. Ces objets possèdent comme il se doit des méthodes.

Zope est fourni avec une base de données d'objets Zope Object Database (ZODB), qui sérialise de manière transparente les objets dans une base de données transactionnelle.

Zope emploie fréquemment l'acquisition. Cette technique ressemble à l'héritage de classe : les objets "héritent" du comportement de leur contexte dans une hiérarchie de composition et non de leur classe supérieure dans une hiérarchie de classes. Cela permet de structurer le code source de façon plus simple, et peut encourager la décomposition d'application. On peut par exemple structurer la manière dont des éléments sont placés sur une page web. L'acquisition implantée dans Zope 2 est aussi parfois source de bugs, car elle peut entraîner des comportements inattendus. Son utilisation a été fortement restreinte dans Zope 3 afin d'éviter les résultats non désirés.

Zope fournit plusieurs procédés pour appliquer des patrons à de l'HTML : le DTML (Dynamic Template Markup Language, Langage de Balisage de Patron Dynamique ) et ZPT (Zope Page Templates, Patrons de Pages de Zope). Le DTML est un langage de balisage permettant d'implanter des scripts simples dans les patrons. Le DTML permet l'inclusion de variables, de conditions et de boucles. Toutefois, le DTML a des inconvénients majeurs : les marqueurs DTML mélangés au HTML forment des documents HTML non valides, et l'inclusion inattentive de logique dans les patrons produit du code illisible. ZPT est une technologie qui résout ces problèmes. Les patrons ZPT peuvent être soit des documents XML ou HTML bien formés, dans lesquels tout le marquage spécial se présente sous forme d'attributs dans le domaine de nom TAL (Template Attribute Language, Langage d'Attributs de Patrons). ZPT offre un ensemble limité d'outils pour l'inclusion conditionnelle ou répétitive d'éléments XML, ainsi les patrons sont habituellement assez simples, avec la majorité de la logique implantée en Python. Un avantage non négligeable des patrons ZPT est qu'ils peuvent être édités dans la plupart des éditeurs HTML graphiques. ZPT offre également la prise en charge directe de l'internationalisation.

Zope 2 sert de fondation aux systèmes de gestion de contenu Plone, Silva, Nuxeo CPS, Zwook et Chubaka.

Zope utilise des métadonnées.

Zope 3 alias Bluebream 
Une nouvelle version de Zope, Zope 3, est en développement depuis 2001. Zope 2 s'est avéré être un framework utile pour le développement d'applications web, mais son utilisation a révélé quelques défauts. Pour en citer quelques-uns, créer des produits pour Zope 2 requiert de copier une grande quantité de code d'initialisation, du code "magique" qui a juste besoin d'être là, et la logique du domaine est hautement liée à la logique de la présentation, ce qui rend difficile la création et la maintenance de versions sur mesure.

Zope 3 est une réécriture du logiciel qui vise à régler ces problèmes tout en gardant les avantages de Zope qui lui ont valu sa popularité. De plus, sa conception se veut moderne, avec une architecture à composants (délégation de tâches), utilisant massivement les interfaces et les adaptateurs (pour "connecter les composants entre eux"). Un objectif majeur est la qualité d'écriture du code (test unitaire, test fonctionnel, doctest, simplicité).

Une première version de Zope 3, Zope X3, a été diffusée le . Le X signifie eXpérimentale. Néanmoins le déploiement à grande échelle par plusieurs développeurs ayant donné satisfaction, la lettre fut abandonnée. Se sont succédé les versions 3.1, 3.2 puis 3.3. Ces deux dernières se voient dotées du framework Python Twisted et d'une traduction complète en français.

Tirant les enseignements des premiers déploiements de Zope 3, la version 3.3 a vu une simplification de plusieurs éléments, et une volonté de se rapprocher de la communauté Python. Cet objectif passe par la publication des composants et l'utilisation des œufs (format Eggs, simplifiant grandement leur installation). Cet objectif est atteint avec la version 3.4 et en parallèle avec la version 2.12.

En 2010, pour clarifier la différence entre Zope 2 et Zope 3 Le projet Zope 3 est divisé en Zope Toolkit (ZTK) qui rassemble les bibliothèques de base qui sont aussi utilisées par Zope 2 et Bluebream qui rassemble toutes les autres composants spécifiques à Zope 3.

Le , la version 1.0 de Bluebream est distribuée. Elle est basée sur la version 1.0.1 Zope Toolkit et correspond à la version 3.5 de Zope 3.

Remarques 
Si l'une des finalités de Zope est la création de sites web dynamiques, sa philosophie orientée objet plutôt que pages web demande une certaine phase d'apprentissage. D'où le terme « ZopeZen », qui décrit le moment où une personne a parfaitement compris le mode de fonctionnement de Zope.

Entre autres, Zope peut être utilisé comme serveur ftp, xml-rpc, WebDAV, http, mais peut facilement être utilisé avec un serveur web frontal, comme Apache. L'ajout du framework Twisted dans Zope 3.2 permettra à terme de créer ses propres protocoles.

Voir aussi

Articles connexes 
 ZODB
 Plone
 Nuxeo CPS
 Zwook

Liens externes 
  Site officiel
  Zope 3

Notes et références 

Serveur web
Application web
Logiciel sous licence libre