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.

Release upgrade to KUbuntu 13.10 Saucy

This time I got all errors you can have.

Before the upgrade I need to disable manually partners repository in /etc/apt/source.list.

Keep in mind to disable etc-keeper if you’re using it and if you choose btrfs to disable compression.

During the upgrade I got an error with updating initramfs. It was caused by initramfs-tools-ubuntu-touch so it’s safer to remove ubuntu-touch and initramfs-tools-ubuntu-touch before the upgrade if you don’t need them.

After i got to problems with grub :

Just after the kernel boot this message was displayed ten seconds :Error: environment block too small. It means that the file /boot/grub/grubenv is stucked to 1000 bytes instead of 1024 bytes.

Solution :

rm /boot/grub/grubenv
dpkg-reconfigure grub-pc

So, the kernel hangout during Btrfs scanning:

Still no solution. The scanning works in safe mode. Bugs reported in lauchpad suggests it’s an errors introduced in the kernel 3.11.0-12 and we should downgrade to 3.11.0-11 that is not available in generic flavour. I tried the lowlatency flavour without success. I tried too with the 3 last mainline kernels without success ( and

Using the safe mode the Btrfs scanning is performing well but at the end of the boot, lightdm doesn’t start. It freezes and you cannot kill it using Ctrl+c. There’s no log. I tried gdm and it fails too. I configured kdm as main display manager and now I can log in.

Then I launch KDE4/Plasma and kwin doesn’t like wayland :

kwin: error while loading shared libraries: no such file or directory

This time I found no clue to fix that. It’s not really a succes.

Unity still works… in kernel safe mode. But I don’t have the menu to logout (‘unity –reset-icons’ doesn’t change anything but loosing my customizations).

Since 1996 I never got such a mess for an upgrade.

Plant UML

Example UML State diagram.

Example UML State diagram. (Photo credit: Wikipedia)

You want to do UML to have beautiful images to add in your documentation? Then Plant UML is done for you!

You just have to write a plain text file and launch the interpreter and you will obtain a pretty diagram:

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

The pro

  • it’s easy to follow in your favorite DCVS
  • it’s easy to learn with a very good documentation
  • it’s working on all plateform and generate good images
  • you can customize a lot


  • it becomes really usable if you use the graphical editor
  • Order of declaration is important for the display

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

De l’efficacité de

Pour rappel, Pacitel est censé vous protéger du démarchage téléphonique non sollicité (Présentation de Pacitel). Cette association crée sous l’impulsion des pouvoirs publics contient une liste de numéros qui ne veulent pas être contactés pour quelques raisons que ce soit par téléphone pour un sondage ou pour une vente.

Ayant remarqué depuis septembre que mon numéro personnel était régulièrement concerné par ce problème je l’ai inscrit dès que le site a été rendu public. Or, depuis je reçois encore plus de coup de fil indésirable qu’avant. La seule différence est que maintenant les appels sont en numéros masqués et que les employés ne présentent plus leur société. D’ailleurs lorsque j’ai mentionnée la liste Pacitel et que j’ai demandé le nom de la société qui m’appelait je me suis fait raccrocher au nez.  J’ai tout de même utilisé le formulaire de signalement et j’attends la suite.

Cela rappel le projet Signal Spam qui vient de se doter d’un nouveau site il y a un mois sans qu’aucune information n’ai été faite par les pouvoir publics – pourquoi utiliser SSL pour un simple site d’information ? Ce sont des initiatives qui partent d’un besoin réel mais qui ne sont pas relayées dans les communications officielles. Pour ceux qui ne sont pas inscrits chez signal-spam  je vous conseille de vous inscrire malgré les bugs encore présent dans cette nouvelle version. Pour ceux qui sont déjà inscrit, allez faire un tour sur votre profil il y a des surprises.

Bref, pour l’instant le site est plus une déclaration d’intention qu’un véritable acteur contre le fléaux des contacts non-sollicités.  Nous verrons bien comment il va évoluer dans les mois qui viennent.

Comment installer les Webfonts localement

Les webfonts sont de plus en plus utilisées dans les sites mais manquent souvent à l’appel lorsqu’il s’agit de préparer le travail avec Gimp ou d’écrire un document avec LibreOffice. Google propose une méthode d’installation qui n’est pas complète sur la page de  GoogleWebFonts. Nous allons faire en sorte qu’elles soient disponibles pour toutes les applications installées.


Il faut compter 1Go d’espace disque disponible pour l’installation et il faut installer le logiciel mercurial :

yum install -y mercurial


apt-get install -y mercurial


mkdir -p ~/.fonts/truetype/google-fonts/
hg clone ~/.fonts/truetype/google-fonts

Après beaucoup d’attente un message comme celui-ci dessous s’affiche :

 6208 files updated, 0 files merged, 0 files removed, 0 files unresolved

Il est possible de mettre à jour le cache des fontes si vous êtes super-utilisateur :

sudo fc-cache -f -v

Mise-à-jour automatique

La mise-à-jour est assez simple :

hg pull -u ~/.fonts/truetype/google-fonts

Pour rendre le processus hebdomadaire il faut utiliser le système de cron en ajoutant une ligne après celles déjà existante :

crontab -l | (cat; echo "@weekly hg pull -u ~/.fonts/truetype/google-fonts") | crontab -

Pour vérifier que tout a fonctionné il suffit alors d’afficher la crontab avec la commande suivante :

crontab -l


Maintenant vous pouvez profiter des webfonts mais pas les personnes aves qui vous utilisez votre machine. Pour ce faire il faut avoir les droits super-utilisateur et utiliser /usr/share/fonts/truetype/google-fonts à la place de ~/.fonts/truetype/google-fonts.

Un nouveau salon de discussion francophone pour discuter autour de Python

C’est tout neuf : la communauté Python francophone a un nouveau point de chute pour discuter de tout et de rien.

N’hésitez pas à vous inscrire !

A Renewed ReStructuredText Editor!

This article’s goal is to be able to launch the Enthought RST Editor with Python 2.7. Few months ago Enthought bloged about is RST editor embedded in its suite. Their blog article was useful for 4 months then they refactored how the Qt backend is loaded.  I wrote another article (in french) to show how to use the editor from the Ubuntu Python system packages but it doesn’t work anymore since the upgrade to Ubuntu 11.10 (Oneiric) which use Traits 4.0.0. Now Enthought sources are hosted on github so you can send them your patches.

First it’s better to install all this in a virtualenv with some dependencies (you must install virtualenv and virtualenvwrapper before):

sudo apt-get remove libopenblas-base #problem with numpy
sudo apt-get install python-traits python-traitsui python-pyface python-enthoughtbase \
     python-apptools python-numpy python-qt4 python-sip python-configobj python-sphinx \
     python-pygments rst2pdf
mkvirtualenv --distribute rested
git clone
easy_install rested
sudo cp bin/rested /usr/local/bin/

I still have problem with encoding in the filesystem navigator and some random crashes.


Recevez les nouvelles publications par mail.

Joignez-vous à 276 followers