Comment migrer depuis un vieille version de Plone vers la dernière version

La première chose à faire lors de la migration d’un CMS est de regarder si la documentation contient le nécessaire à connaître pour se lancer. La documentation de Plone est très bien fournie avec des conseils pour chaque version majeure depuis la 1.0 :


Il est indiqué quels sont les produits impactés et quels sont les modifications à apporter dans le code tierce.

Il y a deux conseils qui manquent souvent pour le développeur qui manque d’habitude :

  1. Il faut passer par toutes les versions majeures
  2. Dans une même version majeure il faut faire la migration depuis la première version mineure vers la dernière version mineure avant de migrer à la prochaine version majeure id est 3.3 vers 3.3.6 avant de faire 3.3.6 vers 4.0

En suivant ces deux règles supplémentaires il est possible de passer de Plone 2.1 à Plone 4.3 et bientôt

English: The logo of Plone, and Open Source Co...

English: The logo of Plone, and Open Source Content Management System (Photo credit: Wikipedia)

Plone 5 sans avoir trop de surprises.






How to setup your Plone core sprint

I promised to published this article last year but… well, no excuse. The topic is still hot as we work on in Arnhem in November 2013, 11 to 15 to finish it for Plone 5.

Here in Arnhem – Ploneconf 2012 Sprints – we are making a lot of sprint about a lot of different topics. As a newcomer in  sprint lead I did some mistakes.

  1. If you are working in the Plone core you must should a plip before the beginning of the sprint. It will be easier for other people  to follow your work some months later.
  2. For commiters, the main point is to check if you already give your contributor agreement back to the Plone Fundation. If you’re not there should be someone with blank agreements in your sprint to make things go easy.
  3. Once you know how many sprinters you have on your topic you must organize the area to be comfortable for all.
  4. Fing a way to show everybody the tasks that are on going and who is working on. My way is a whiteboard with post-its
  5. Prepare the technical parts before to start coding:
    • Identify all the packages you’re working on and create a remote branch for your plip. We were working at first on Products.CMFPlone,,, and after we also include in the list.
    • Don’t make a branch in buildout.coredev create a plips configuration file in the ‘plips‘ folder.Then run your buildout using this configuration file as master: bin/buildout -c plips/plip13260-cpy-removal.cfg
  6. Check if everybody have commit rights.
  7. If there’s a change in the plip configuration file notice it to everyone fast.
  8. Make regular internal reports to know who needs help or work 🙂
  9. Write down what’s you’re doing on

For commiters, the main point is to check if you already give your contributor agreement back to the Plone Fundation.  If you’re not there should be someone with blank agreements in your sprint to make things go easy.
Commiters should also follow a process to make the pull going right:

  1. Have  fun
  2. After each plip configuration file update check if all plip eggs are well checkouted and if they are in the good branch
  3. When you start a task  create a local branch to avoiding conflicts before your merge
  4. Commit early, often
  5. Fetch and pull others commits before to merge
  6. Run tests without ‘-t
  7. Merge your work in the plip branch, not the master
  8. Test again before the push
  9. If you need help asks (I know, git is overcomplicated 😉 )
  10. Have fun! Did I say it before?
  11. Have  a follow up plan and stay in touch

Thanks to Eric Steele for the first setup, Liz as the proposer of the sprint topic, Maurits as the technical leader and for all people around there that were working on that sprint.

How to use curl to test a REST API with a beautiful JSON indentation

How to get indented JSON with curl output

You need to install simplejson Python module in your environment, or python-simplejson.

curl [options] url | python -msimplejson.tool

An example with github APIv3

curl -s -H "Content-Type: application/json" -X GET \
     "" \
     | python -msimplejson.tool

How to display response headers and API errors with the JSON indentation

This command line have two problems :

  1. You cannot display response HTTP headers because it breaks simplejson parsing
  2. If you have an error with a request and you don’t know how to debug it.

You need to add two more options to push header response and error message in stderr: -S and -D /dev/stderr. Now you can test your API with all informations in one command:

curl -s -S -D /dev/stderr -u user:password \
     -H "Content-Type: application/json" -X GET \

From curl manual:

  • -s no progress bar; stats report or errors are dislayed
  • -S display errors if -s is enable
  • -D dump the header in a file; here stderr to make them not interfer with json indentation
  • -u user and password for Basic HTTP Authentication
  • -H add header in the outgoing request
  • -X HTTP Command to launch. If you’re using Basic HTTP Authentication you must use -X GET

If someone have tip to add pygment coloration in json and headers I will be glad to share the ownership of this article.

Feedbacks on Diazo after the PloneConf training

There were 9 trainees in this PloneConf Diazo session.  Half of them were brand new on Diazo and the second half already used it for at  least one theme.

  • Every find Diazo 1.0 cool with its new styles editor.
  • If you want to be comfortable with all the editor’s features you should use a 30-inch display (especially with the introsception panel).
  • To be able to import a Zip file from any free CSS templates site is awesome with a bemol: the Zip file must have a directory at first level with all content inside if you don’t have a weird error message displayed.
  • Shortcuts in the editor are working everywhere but are not documented; may we need a side panel with general documentation.
  • In the inspector panel, it’s not easy to find the XPath expression and   less to create a generic one without a live example.
  • There is no ‘move‘ command. It’s available since deliverance 0.3 and Diazo forked at 0.2.

During the DIY part of the training some were asking how to make a theme with Bootstrap.js and Diazo.  Deco’s toolbar theme is build with Bootstrap.js but it seems not to be doable from scratch only with the Diazo editor. Everyone finish his own theme in 2 hours for beginners and in 30 minutes  for others.

At least, there was one trainee that fell to complicated to write the rules.xml file with all those XSLT tranforms.

I let the trainees add their feeling about it if I forgot something.

Enhanced by Zemanta

Participate to a Diazo training in Arnhem the October 9

The day before the conferences I will provide a training on Diazo.

You can come with your own HTML design and in one day we will see how to create a zip file ready to be inserted in your plone site.

You don’t need to know anything about Plone, just HTML and CSS. A bit of XML understanding would be useful but not required.

Enhanced by Zemanta

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 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
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,, 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’ :

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

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

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

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:


eggs += WingDBG
#auto-checkout += WingDBG
find-links +=

#WingDBG = hg

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.

How to get python 2.4 or 2.5 for Ubuntu 10.4

Each new version of an OS carries its bad news. The last version of Ubuntu doesn’t embed neither Python 2.4 nor Python 2.5. Nevertheless until all your Plone sites will be migrated to Plone 4 you will need a Python 2.4 version somewhere.

Method 1: search for sources to get binary packages

There is a Python 2.4 « branch » in Ubuntu on launchpad :  “python2.4” source package in Lucid. If you now a little how Ubuntu packaging work you can easyly get Ubuntu package of Python 2.4 by following steps below:

  1. Click on Show builds
  2. Choose Successfully built then apply the filter
  3. Then choose your the archive for your architecture (often i386 or amd64)

There you have python2.4 and python2.4-dev packages.

Method 2: Use packages search tool

Launchap also have a package search tool for all Ubuntu releases. This one doesn’t limit itself to packages disbributed in official Ubuntu repositories and it also give results for all packages build using the Launchad system.

In our case we can use:

Method 3: Get sources and create your own packages

From the source page of the first method (“python2.4” source package in Lucid) you can get sources and the official patch for Ubuntu. For exemple you can click on 2.4.6-1ubuntu5 to get this version.

On the next page you can download a python source archive and the associated patch :

Once these to files downloaded you will do following steps:

  1. Unarchive python sources: tar zxf python2.4_2.4.6.orig.tar.gz
  2. Uncompress the patch:  gunzip python2.4_2.4.6-1ubuntu5.diff.gz
  3. Apply the patch:  patch -p0 < python2.4_2.4.6-1ubuntu5.diff
  4. Go in the folder created: cd python2.4-2.4.6
  5. Try to build the package: dpkg-buildpackage
  6. Install libreadline5-dev or fix the debian/control file by replacing libreadline5-dev by libreadline-dev (I’m nasty)
  7. Install all dependencies required (why do you need emacs and bluetooth to compile python ?): apt-get install libncursesw5-dev  tk8.5-dev libdb4.6-dev libgdbm-dev blt-dev  libbluetooth-dev emacs23 debiandoc-sgml
  8. Try again to build the package: dpkg-buildpackage

I don’t know how long these packages will be available.

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.