article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
T echnologie<br />
De Zope 2 à Zope 3<br />
Zope est un serveur d'application complet, écrit principalement en Python, et en C pour certaines<br />
parties, disponible comme logiciel libre <strong>de</strong>puis 1998, date à laquelle Digital Creations,<br />
la société à l'origine du produit, l'a mis à disposition <strong>de</strong> la communauté. Zope a rapi<strong>de</strong>ment<br />
évolué vers une version 2,sortie en 1999.Le succès <strong>de</strong> cette plate-forme a été immédiat,aussi<br />
bien chez les intégrateurs que chez les développeurs, grâce à <strong>de</strong> nombreux atouts.<br />
Caractéristiques <strong>de</strong> Zope<br />
Le premier atout <strong>de</strong> Zope est bien évi<strong>de</strong>mment<br />
l'utilisation du langage Python, qui rend le<br />
développement très agile, grâce à une syntaxe<br />
concise et claire, et à <strong>de</strong>s types <strong>de</strong> base très<br />
puissants. Zope propose un système <strong>de</strong> publication<br />
d'objets. Chaque objet stocké sur le serveur<br />
peut être publié grâce à une traduction <strong>de</strong><br />
l'URL, saisie par un chemin dans une arborescence<br />
d'objets représentant le site. Ce mécanisme,<br />
appelé traversal, parcourt l'arbre stocké<br />
sur le serveur. Pour stocker ces objets, Zope<br />
possè<strong>de</strong> un système transparent <strong>de</strong> persistance<br />
transactionnelle d'objets appelé ZODB<br />
(Zope Object <strong>Data</strong>Base). Ce système est équivalent<br />
à Caché ou db4o.<br />
Zope fournit également un système <strong>de</strong> template<br />
basé sur XML, le ZPT (Zope Page<br />
Template), qui permet d'enrichir une <strong>de</strong>scription<br />
<strong>de</strong> page HTML. Le ZPT introduit un système<br />
<strong>de</strong> macros et quelques fonctionnalités<br />
<strong>de</strong> transformation <strong>de</strong> façon similaire à XSLT.<br />
Le cas d'utilisation le plus fréquent du<br />
moteur ZPT est bien sûr la génération HTML,<br />
mais il peut être employé pour d'autres types<br />
<strong>de</strong> markups. Un système <strong>de</strong> greffons est proposé,<br />
et permet au développeur <strong>de</strong> créer <strong>de</strong>s<br />
produits pour enrichir les fonctionnalités du<br />
serveur. Ces produits définissent en général<br />
<strong>de</strong>s nouveaux types d'objets publiables,<br />
accompagnés <strong>de</strong> vues décrites en ZPT.<br />
Ainsi, pour développer un produit Foire Aux<br />
Questions, on peut créer un type d'objet FAQ, et<br />
un type Question. La FAQ étant représentée par<br />
une instance <strong>de</strong> FAQ contenant un certain nombre<br />
d'instances Question, qui contiennent ellesmêmes<br />
le texte <strong>de</strong>s questions et <strong>de</strong>s réponses.<br />
Enfin, un <strong>de</strong>s atouts majeurs est la licence:<br />
Zope est un logiciel libre, distribué sous licence<br />
ZPL (équivalent BSD, compatible GPL). Le<br />
système propose, grâce à cette ouverture, un<br />
modèle <strong>de</strong> développement communautaire<br />
appelé fishbowl process. Ce modèle, similaire<br />
à ce qui est pratiqué dans la plupart <strong>de</strong>s projets<br />
libre <strong>de</strong> cette envergure, donne la possibilité<br />
à chacun <strong>de</strong> contribuer au développement.<br />
Cette approche est basée sur le respect <strong>de</strong><br />
quelques pratiques agiles, comme l'écriture et<br />
la discussion par la communauté <strong>de</strong> spécifications<br />
minimums, et la programmation dirigée<br />
par les tests. Pour consoli<strong>de</strong>r le développement<br />
pratiqué à distance, les développeurs<br />
les plus actifs se réunissent régulièrement<br />
dans <strong>de</strong>s sprints, sortes <strong>de</strong> journées <strong>de</strong> développement<br />
intensif.<br />
Par ces principes, Zope a acquis <strong>de</strong> manière<br />
structurée un panel complet <strong>de</strong> fonctionnalités.<br />
En outre, il existe plusieurs centaines <strong>de</strong> produits<br />
d'extensions disponibles sur le site <strong>de</strong> Zope.<br />
Le Content Management Framework<br />
Le CMF (Content Management Framework), initié<br />
par Digital Creations, <strong>de</strong>venu Zope Corp, est<br />
un ensemble <strong>de</strong> produits permettant <strong>de</strong> fournir<br />
un nouveau paradigme <strong>de</strong> programmation,<br />
CPS en action<br />
Programmez n°85 58 avril 2006<br />
orienté vers la gestion <strong>de</strong> contenu. Il définit,<br />
entre autres, la notion <strong>de</strong> vue, <strong>de</strong>s types <strong>de</strong><br />
contenu et un système <strong>de</strong> workflow. Le CMF a<br />
remporté un franc succès auprès <strong>de</strong>s développeurs<br />
: il a notamment été choisi par les projets<br />
Zope majeurs comme le CMS (Content<br />
Management System) Plone, et Nuxeo CPS<br />
(plate-forme complète <strong>de</strong> gestion documentaire<br />
et <strong>de</strong> travail collaboratif).<br />
Développement <strong>de</strong> Zope 3 :<br />
Pourquoi Zope 3 ?<br />
Parallèlement à Zope 2, la communauté a commencé<br />
à réfléchir au développement <strong>de</strong> Zope 3,<br />
en essayant <strong>de</strong> prendre un recul constructif.<br />
Une <strong>de</strong>s critiques récurrentes <strong>de</strong>s développeurs<br />
à l'égard <strong>de</strong> Zope 2 est son éloignement <strong>de</strong><br />
l'esprit <strong>de</strong> Python. En effet, le mécanisme d'extension<br />
par produits oblige le développeur à<br />
reproduire une quantité importante <strong>de</strong> boilerplate<br />
co<strong>de</strong>, c'est à dire du co<strong>de</strong> « magique »,<br />
repris d'un produit à l'autre, qu'il faut obliga-