Que lire pour faire du Plone


Plutôt que de faire une revue des deux ouvrages paru cet été sur Plone je vais vous présenter l’état des lieux des publications autour de Plone.

Du développement à la documentation

En quelques années la communauté Plone a évolué, s’est structurée.Il n’y a pas plus de contributeurs mais des contributeurs plus réguliers qui se concentre sur des plateformes. Le renouvellement de la communauté a démarré avec l’arrivée de Plone 3 et du livre de Martin Aspeli «Professional Plone Development». Plone 3 a apporté un niveau de complexité supplémentaire dans le développement ce qui a forcé nombre de contributeurs à faire un bilan de leurs compétences et réapprendre de nouvelles techniques, non sans heurts.

«Professional Plone Development» fut le premier livre à présenter les nouvelles techniques de Plone 3. Son succès dans la communauté a suscité des vocations et a encouragé l’éditeur à continuer avec cette technologie. Depuis les ouvrages ont fleuri et Plone 4 n’est pas sorti qu’ils abordent déjà certaines technologies développées pour cette plateforme. La liste des ouvrages publiés chez Packt est éloquente : Packt books about Plone.

Le site web de http://www.plone.org aussi a évolué avec la création d’un groupe de travail sur la documentation qui met à jour en permanence les techniques à connaitre et les bonnes pratiques. D’ailleurs nombre des contributeurs de ce groupe ont aussi publiés le ouvrage.

Au moment où je relis ces lignes, le blog Plonemetrics publie un article sur les statistiques de vente des ouvrages sur Plone chez Amazon. Sachant que Packt vend énormément en direct sur sur site, ses statistiques ne sont que la face émergée de l’iceberg. Cela montre tout de même l’engouement réel dans Plone de nombre d’utilisateurs et de développeurs.

Tableau récapitulatif

Titre Date de
parution
Cible Commentaires
Professional Plone Development Sept 2007 Développeur connaissant Plone 2.5 ou Zope 3 Ce livre a vieilli. Même si tous les concepts présentés sont toujours utilisés dans Plone 3.3 et Plone 4.0 la plupart des exemples ne fonctionnent plus.
A User’s Guide to Plone: Updated for Plone 3 Août 2008 Utilisateurs et créateurs de contenu Quasiment rien n’a changé entre Plone 3.0 et 3.3. C’est l’ouvrage idéal pour l’autoformation des nouveaux webmaster.
Practical Plone 3 Fév 2009 Développeurs débutants et webmasters Didactique et bien agencé il me sert pour préparer des ateliers pratiques lors des rencontre entre utilisateurs de Plone.
The Definitive Guide to Plone 2 Edition Avr 2009 Développeurs débutants à expérimentés Une référence à garder dans un coin. Le livre continue à être mis à jour régulièrement sur son site dédié.
Plone 3 Theming Juil 2009 Webmasters et intégrateurs C’est l’ouvrage qu’il manquait depuis des années dans le monde de Plone. Il synthétise les bonnes pratiques pour Plone 3 et présente certaines techniques de Plone 4. A garder sous le coude.
Plone 3 for Education Déc 2009 Intégrateurs des grandes écoles et des universités C’est le premier livre dédié à un groupe de utilisateurs particuliers et il atteint bien sa cible. Au final même le MIT a migré sous Plone pour son projet Open Couserware.
Plone 3 Multimedia Mai 2010 Intégrateurs de sites orientés multimedia Vidéo, Flash, géolocalisation, et tous les gadgets présents dans les sites 2.0 sont présentés dans cet ouvrage.
Plone 3 Products Development Cookbook Mai 2010 Développeurs expérimentés et Responsables SI Cet ouvrage présente toutes les techniques à connaitre pour monter une site à haute performance sous Plone. Maheureusement par manque de place certains passages manquent de détails utiles. Tous les chefs de projets et les responsables de site Plone devraient l’avoir lu sinon l’avoir à portée de main.
Plone 3.3 Site Administration Juil 2010 Webmasters et intégrateurs C’est le complément de « Plone 3 Theming » orienté sur l’administration d’un site au jour le jour. A posséder.
Plone 3 Intranets Août 2010 Intégrateurs débutants à confirmés Cet ouvrage est plus orienté sur les aspects de configuration de la sécurité et des outils de communications standard des intranets : blogs, newsletter, prévisualisation de documents.

Pourquoi aucun ouvrage en français ?

Pour le moment il n’y a plus de réel leadership dans la communauté française de Plone. Les personnes impliquées sont tous au même niveau et il est difficile de prendre en charge la rédaction d’un ouvrage à partir de zéro seul ou pour une petite équipe dispersée en France. Malgré tout le projet de rédaction suis son cours et aboutira bientôt.

En théorie il serait possible de traduire les ouvrages en anglais mais le partenaire français de Packt préfère avoir un ouvrage original plutôt qu’une traduction.

Plone, un outil en plein essor

Il y a 18 mois certains rangeaient déjà Plone dans les dinosaures du web et je recevais des messages me demandant d’évaluer la pertinence de choisir cet outil pour les projets à long terme. Le développement de l’offre en documentation démontre que Plone a su s’adapter et se diversifier depuis la sortie de sa troisième version majeure. Le démarrage a pu paraitre difficile car de nombreux nouveaux outils ont du être mis en place par la communauté. Celle-ci à su rebondir et répondre aux demandes de ses utilisateurs. La communauté française elle s’organise autour de nouveaux acteurs qui émergent et sortira bientôt de l’ombre avec un certain nombre d’outils en cours de préparation.

Plone 4 ne sera pas une révolution comme l’a été Plone 3 mais plutôt une évolution importante qui a justifié son renommage en cours de réalisation de Plone 3.5 à Plone .40. Elle introduit quelques ruptures de compatibilité mais ne nécessite aucun apprentissage supplémentaire. Elle est une vitrine technologique pour des outils qui seront incontournables dans Plone 5.0 (Dexterity, deco.gs, XDV, WSGI, RelStorage, etc).

How to get log files rotate in Zope with buildout


— Update : this tip requires Zope 2.11 or Plone 4 —

Zope server includes natively some undocumented option since Zope 2.10 2.11 that allows to rotate log files. They started from the Gilles Lenfant work for iw.rotatezlogs.

The only documenation I found was in ZConfig module test by searching about ‘max-size’ : http://svn.zope.org/ZConfig/trunk/ZConfig/components/logger/tests/test_logger.py?view=markup

To use it in your buildout you should add following code in each intance part :

event-log-custom =
    <logfile>
        path ${buildout:directory}/var/log/instance.log
        #max-size = 5mb
        when D
        old-files 366
    </logfile>

access-log-custom =
    <logfile>
        path ${buildout:directory}/var/log/instance-Z2.log
        #max-size = 5mb
        when D
        old-files 366
    </logfile>

That’s all folks !

Using WingDBG as egg for Zope buildout – updated


For Wing IDE user I start a mercurial branch for the WingDBG product that allow you to make live debugging in the editor in Zope/Plone. It’s just an eggification of the official WingDBG product and stay under the MIT licence.

You can easily add it in your buildout:

[buildout]

eggs += WingDBG
#auto-checkout += WingDBG
find-links += http://plone.org/products/simple

#[sources]
#WingDBG = hg http://bitbucket.org/encolpe/wingdbg

[instance]
zcml += WingDBG
enable-product-installation = on

It was tested successfully under Plone 3.3 and Plone 4 with Wing 3.2.5 and 3.2.6.


Now WingDBG is available as egg for Wing 4.0.1.

Python package dependencies displayed


Few days ago we talked about dependencies in Plone and how about they become complex when several ‘Known Good Set’ are competing on the same eggs. Today Victor Lin released Gluttony that renders a package dependencies as we wanted to:

Gluttony 0.2

I tried to create such graph for  Plone 4.0 alpha 5 and Zope2 2.12.

The first renders a Segmentation Fault with more than 35,000 dependencies…

The second give us the complexity of the Zope framework:

The next step should to plug this on zc.buildout to find conflicts easily.

2010 : liens de la semaine 3


Cette rubrique hebdomadaire va bientôt changer. Pour éviter les doublons elle va être fusionné avec celle de Youenn Boussard sur le site de l’AFPY. Elle continuera sur le signe de l’ouverture avec des sujets moins centré sur Python ou avec des ressources plus techniques que celles de l’AFPY.

Heuristique

Les cartes heuristiques ou mindmapping sont au centre de recherche diverses et variées. Voici un article intéressant sur un débordement de cette technologie :

Carte heuristique et résolution de problème assistée par ordinateur, une révolution annoncée

Python

Tout d’abord une initiative amusante avec un site qui essaye de regrouper tous les logos utilisés autour de Python :

Python Logos Part II: Free Form

Une dédicace particulière pour le logo des lillois : PYthon LUnch LillE

Sinon, j’ai découvert ce petit éditeur live de reStructured Text écrit comme un service Python. Un projet à suivre et à aider :  reStructuredText editor

Zope

L’heure est au recensement des ressources avec le renommage de la partie Web du framework Zope 3 en Bluebream. cet article écrit par Baiju Muthukadan permet de faire la synthèse  sur l’état actuel :

BlueBream

Plone 4 aussi est annoncé dans les starting blocks avec la préparation de la première béta. Une nouvelle version implique souvent une migration. Maarten Kleen a écrit un article très intéressant sur la migration d’objets dont la classe de base a changé :

Trying zodbupdate

Enfin un article intéressant sur la résolution de la recherche des interfaces dans Zope 3 :

Zope Views: should have been « request, context »; not « context, request »

Plone

La huitième conférence annuel de Plone aura lieu en Europe, à Bristol, du25 au 31 octobre. À vos carnets :

Bristol 2010

Nettuts+

Un certain nombre de tutoriel que je présente viennent de ce site. Une grande partie de leur contenu est payant et les tutoriels mis en ligne sont souvent de très bonne qualité. Tout d’abord une video sur les outils en lignes permettant de tester le rendu de vos sites sur les navigateurs :

Quick Tip: Top 5 Ways to Browser-Test your Website

Un bon tutoriel sur l’utilisation des transformation XSL pour transformer des données XML enpage web :

Getting Started with XSL(T)

2010 : liens de la semaine 2


Pas beaucoup de liens en français cette semaine encore.

Logiciel Libre

Free Software Licenses Iconified

Un initiative intéressante pour essayer de résumer en images les différentes licences libres. Il manque les licences de classe Cecill qui commencent à être utilisées pour des projets français et européens.

Plone

on Zope, multiple cores, and the GIL

Encore un article sur les problèmes de performances liés au verrou global de l’interpréteur Python (GIL). Cela valide le fait qu’il faut essayer de multiplier les instances clients ZEO plutôt que d’essayer d’augmenter le nombre de processus (zthread) d’une instance.

main_template as BrowserView

Cet article montre comment surcharger un template Zope qui se trouve dans les skins par un vue à la Zope 3.

Plone 4 faster than WordPress

Des tests réalisés avec Plone 4+Deliverance face à WordPress montrent que sans cache web la dernière mouture de Plone est plus rapide que l’incontournable WordPress.

Plone 4 – How much faster is it?

Encore des comparaisons mais cette fois entre Plone 3.3.3, Plone 4 alpha1 utilisant les classiques Zope Page Template et Plone 4 alpha 1 utilisant Chameleon (le moteur de template initié par Malthe Borch). Les gains sont de 50% à 70% en faveur de Plone 4 avec net avantage pour Chameleon.

Why Plone architecture must change


I proposed a conference on this theme but it was not keeped for PloneConf2008. Here comes a short work on its, and I will hope it create a debate.

Plone is born with a goal: make Zope 2 and CMF simple. Those two are frameworks and allowed you to create a website… a so rustic website. With Plone you only needed to fill one form to have a cool site ready to use and to custom. At that time Plone was CMFPlone, an other implementation of CMFDefault.

Some new products were inserted in the bundle like GroupUserFolder in a such way that they cannot be separated from the base implementation of Plone.

The second step was the Archetypes framework: a new manner to manage object’s attributes as schema. With all informations stored in the schema,  mutators and accessors are generated on boot time and forms are generated from schema’s widgets. It was cool, but not perfect. Then the product ATcontentTypes was created to be the glue to upgrade CMFPlone as Plone: all base types from CMF are now overloaded by a type from ATContentTypes.

So came Zope 3 and Five. Five is the glue that allows Zope 2 developpers to use component architecture from Zope 3 in their code. Plone 2.5 and Plone 3 are using Five.

Another product came from Zope ‘renegades’: PluggableAuthService and its implementation in Plone: PlonePAS. It should replace the old GroupUserFolder but users and groups management templates were never refactored.

Plone 3 introduces new component in plone.app to our greatest happiness.

What part of Plone needs CMF?
Why Plone needs to know about Archetypes storage and CMFEditions strategy?
Why GroupUserFolder is always in the bundle as PlonePAS fit is API?

Now Plone is like the linux kernel: a big monolithic Plone with a lot of modules that create a base Plone 3 site. And so much glue! GroupUserFolder is always here because nobody knows and wants to work on the portal_group replacement.
If you are following Plone4Artist or PloneGov you can see that a part of these projects needs to overload Plone base configuration.

CPS 3, an other CMF-based CMS, was conceived with the thinking that components need to be independant to be reusable and maintainable:

  • CPSSchema depends only on Zope
  • CPSCore depends only on Zope
  • CPSDocument depends only on CPSSchema
  • CPSDefault depends on CPSCore and CPSSchema, and implements the CPS site.

After 2 years it was divided into platforms:

  • CPS Legacy
  • CPS Courier
  • CPS Groupware

In front of that Plone propose at single product with a lot of glue that depends on others products or components that use their own glue and so on…
There’s no plone.core and plone.default and we cannot create a plone.artistsite or a plone.govsite.
Do you think that everyone need an openid or an ldap integration in Plone ?

Plone 4 must be a reimplementation, not only a new glue with new concepts. I don’t want any new functionality in Plone 4, I want modularity and scalability.

My participation on Plone 4 threads


1. Product or framework

Harry Porter: Is Plone a framework or a product ?

Encolpe: Both, Sir.

HP: Then why I cannot see which part of Plone is a framework, and which one is the Plone product ?

E: Eh !

E: Hum…

E: I guess there’s something wrong in the architecture. But there no fatal issue.

HP: OK, then where the base content implementation ?

E: Archetypes propose schema, filed and widget implementation with some basic implementation for the content object (unit, folder too).

HP: Now what do ATContentTypes ?

E: … some advanced implementation of content objects. I guess what you want me to say: basic implementation of content object should move from Archetypes to ATContentTypes to make a real separation between how a content object is stored and how it is displayed with additional functionalities.

HP: I wasn’t thinking so deep. I suppose that replacing Archetypes by something else would be easier if you choose this design.

HP: I tested NuPlone theme product and it was cool. But why the basic Plone theme cannot be separate from the CMFPlone product ?

E: Here I guess you reach the root of the problem. CMF have two base products to separate the framework from its basic implementation: CMFCore and CMFDefault. Plone doesn’t have such a trick: the CMFPlone product does both. I guess it comes from its will to be usable out of the box with only one click. To anwser to your original question split Plone in two products will not be enough to have a specific product for the basic theme: this one must be integrated in the default Plone product implementation then other Plone theme can be relied on it.

HP: Something hurt me recently when I discovered that CMFCore contains no skins directory.

E: We reach again a design choice and you may find another examples in Plone 3. The Plone architecture design must be a critical point in Plone 4 more than what’s the new cool feature we will add.

2. Out of the box versus ready to be customized

HP: Now, imagine that I’m a newbie in web and I want my website with cool theme. Where can I find themes for Plone and how can I customize it ?

E: You want site for Plone theme ?

HP: Not really. I want interactivity. Browse themes in a site (plone.org or somewhere else), then download an archive, put it in the PMI ad finally restart Zope (do we really need this step ?). Now I can choose my theme in the PMI. I want to be able to choose and use a theme like I do with my desktop theme.

E: Wooh. And you think that should be enough ?

HP: No.

E: …

HP: I want to be able to customize it simply. Without learn python or any template language. I just want an editing tool for viewlet and for basic stylesheet properties without having to go in the ZMI or to know an hide feature.

E: Only that ?

HP: If I can only learn HTML, CSS to customize my theme it really would be cool. Imagine a theme community around Plone.
E: It’s far from big projects I lead today, but I can see the benefit for the whole Plone community.

HP: It is like having Plone translated in the 40 most important languages: the goal is to raise interest in Plone with basic stuff to finally create business.

E: But you can use Plone out of the box right now and add tons of functionalities.

HP: Finally, i’am just an user, may be something like an advanced user, of system softwares. I don’t want to know anything around buildout, it’s to low level for me. Like for eclipse plugin I want to be able to browse plonepi within the PMI and choose a functionality or a product to add. Then plone should make an easy_install for me. I don’t care if it use zc.buildout in backend. I want my customization to be transparent.

E: Oh. You want Pypi integrated in Plone.

HP: Something like that, yes.

E: And if the egg that Plone download and install for you breaks the site, what shall Plone do ?

HP: In an ideal world it should run unittests and functional tests before to install it, shouldn’t it ?

E: Yes, but test coverage isn’t the priority in lots of projects. We need some code reviewer to elect some products and something to declare possible conflicts between eggs.

HP: It’s your work, not mine.

E: I can see the point. Is that enough for today?

HP: Yes. I may have some other questions or needs tomorrow.

E: And tomorrow is an other day.