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).

Publicités

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.

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.

Add a new role in the sharing tab for Plone 3


If you want to display a new role in the sharing tabe of Plone 3 it requires a
good knowledge of ZCA. First you need to create another specific role then an
utility. These complexity allows you to control which roles are displayed
using workflows.

Lets take the example of the well known Manager role.

Create the delegating role

First you have to define a new role. The auto defined convention said that it
should be named as Sharing page: Delegate XXX role. As often you need to
register this new role both in Python and ZCML:

permissions.py

# -*- coding: utf-8 -*-
from Products.CMFCore.permissions import setDefaultRoles
from AccessControl import ModuleSecurityInfo

security = ModuleSecurityInfo("my.egg.permissions")

security.declarePublic("DelegateManagerRole")
DelegateManagerRole = "Sharing page: Delegate Manager role"
setDefaultRoles(DelegateManagerRole, ('Manager',))

permissions.zcml

<configure xmlns="http://namespaces.zope.org/zope"
    i18n_domain="my.egg">

    <!-- Our custom permissions -->
    <permission
        id="plone.DelegateManagerRole"
        title="Sharing page: Delegate Manager role"
        />

</configure>

Create your Role utility

Now you have a delagating role to control how to share your role you need to
create an utility that implements the ISharingPageRole interface. This
interface requires two attributes:

  • title: a translated title
  • required_permission: the permission defined just before

localroles.py

# -*- coding: utf-8 -*-
from zope.interface import implements
from plone.app.workflow.interfaces import ISharingPageRole

from my.egg import permissions
from my.egg import MyEggMessageFactory as _

class ManagerRole(object):
    implements(ISharingPageRole)

    title = _(u"title_can_manage", default=u"Can manage")
    required_permission = permissions.DelegateManagerRole

At last we have to register this utility and the permissions.zcml defined
above.

configure.zcml

<include file="permissions.zcml" />

  <!-- Local roles managed in the @@sharing view -->
  <utility
      name="Manager"
      factory=".localroles.ManagerRole"
      />

By default the sharing tab hide Manager, Owner and Member role
because they can create troubles when they are used in a wrong way. If you
think to show them be sure that persons that will use it are informed how they
can put their site upside down.

calendar portlet error with Enfold Desktop


If you’re experiencing problems with the calendar portlet after you installed Enfold Deskop 4.6 or older in your buildout you would be interresting with this parts :


[desktop]
recipe = plone.recipe.distros
urls = http://www.enfoldsystems.com/assets/software/desktop-server-4-5-0-9020-py24-tar.gz
nested-packages =
version-suffix-packages =

[patch_calendaring]
recipe = collective.recipe.cmd
on_install = true
on_update = true
cmds =
    rm -rf Calendaring
    svn export http://svn.plone.org/svn/collective/Calendaring/tags/0.5 Calendaring
    rm -rf parts/desktop/Calendaring
    mv Calendaring parts/desktop

Enfold Desktop embed a very old version of Calendaring product. May next Enfold Desktop version will be available as eggs with refreshed code.

2010 : liens de la semaine 1


Cette semaine a été très productive du côté des blogueurs et en particuliers chez les développement autour du core Python.

Python

Pour ceux qui ne connaissent cette boîte de Pandore qu’est le GIL (Global Interpretor Lock) en Python voici un très bon article qui mesure son effet dans le traitement des entrées/sorties avec des systèmes multi-processeurs ou multi-cores :

The Python GIL Visualized

Jesse Noller rappelle les but initiaux du projet Unladen swallow en partie sponsorisé par Google et signale malicieusement en fin d’article qu’une proposition de fusionner leur travail dans Python Core pour Python 3 :

UNLADEN SWALLOW: PYTHON 3’S BEST FEATURE.

Tarek Ziadé, notre président bien aimé, présente les nouvelles fonctionnalités en cours de discussion pour la prochaine version majeure de Distutils, ce qui intéressera tout ceux qui publient des eggs :

Possible new features for Distutils 2.7

Mark Mruss fait une présentation détaillé des ‘docstring’ – ces commentaires qui décorent vos modules, vos classes et vos fonctions – et montre quelle utilisation avancée de celles-ci peut être faite (documentation, tests) :

Introducing Docstrings

Encore un article sur la préparation de la distribution de code qui montre comment mettre en place facilement des scripts  de pré-traitement et de post-traitement :

Using setuptools entry points

La première revue complète du livre « Dive Into Python 3 » (Au cœur de Python 3) :

Book Review: Dive Into Python 3

Enfin deux articles sur les fonctionnalités que les gestionnaires de projets veulent dans mercurial. Dans le premier cas il s’agit de Python-dev qui est censé être migré entièrement cette année sous mercurial :

Where the Hg transition stands

Le deuxième est un développeur qui fait pas mal de Django (vous aimerez sans doute aussi son article free VS free) :

DVCS Ponies

Plone

Voici la description d’un problème récurrent pour les sites multilignues en Plone : comment réordonner des éléments dans une page :

Ordering objects in folders with multilingual sites

Une des solutions les plus faciles à mettre en place est d’afficher toutes les langues lors du tri pour être sur que le Javascript se comporte correctement. L’autre est de demander au Javascript de ne prendre en compte les rangs réels des contenus déplacés plutôt que le rang à l’affichage.

Alex Clarck montre comment installer Plone juste avec buildout en 5 minutes, sans avoir à installer l’unified installer ou Paster :

No, really, you can (just) use Buildout to install Plone

WEB

Encore une fois je terminerai par des liens plus centrés sur le développement Web en général et jQuery en particulier.

Réaliser des animations en jQuery en 7 étapes :

jQuery Animations: A 7-Step Program

Un visualisateur de contenu (d’images) à l’épreuve des balles :

A Bullet-Proof Content Viewer

Personnaliser les événements et l’API des Événements Spéciaux dans jQuery :

Custom Events, and the Special Events API in jQuery

Week 52 web logs


Opensource

For Chris McDonoug Documentation is the Differentiator between project success and failure.

Web

Firefox 3.5 is the most used web browser before Internet Explorer 7.0 and 8.0… but IE 6 still resists.

ZODB

Jim Fulton wrote about Undo alternatives: Time Travel and Truncation (and maybe a Berkley DB storage)

Plone

Jarn made a new release for LinguaPlone (3.0) the only serious implementation of multilingua sites in Plone

Plone Educommons : quid d’une communauté française ?


Educommons est un projet d’implémentation à partir de Plone de l’initiative du MIT visant à partager les cours en ligne : MIT Open Courseware.

Il existe déjà de bonnes communautés américaine et hispanophone. Pour l’instant peu d’universités ou d’écoles supérieures françaises utilisant Plone utilisent se produit. Par contre, il est fréquent de trouver des implémentations locales approchant les mêmes fonctionnalités.

Comme ce fut le cas pour le LOM-fr (Learning Object Metadata) qui a débouché sur une normalisation AFNOR, il serait bénéfique de réunir les différents acteurs pour former une communauté. Il existe déjà une première version de la traduction française qui n’est sans doute plus à jour. Gérard VIDAL, le créateur de la communauté LOM-fr, propose de créer un communauté pour regrouper les établissements intéressés par l’utilisation d’Open Courseware. Il est déjà en contact avec les personnes gérant le projet Educommons et avec le créateur de l’initiative Open Courseware au MIT. Je donnerai ses coordonnées aux personnes intéressées.

Les articles de la semaine 49


J’ai un peu triché cette semaine avec des articles plus anciens mais qui collaient bien avec les thèmes abordés. Les liens de cette semaine sont tous en anglais.

Général

Un exemple complet de soumisson et de fusion d’un correctif

Plone

L’ajout d’indexes dans catalog.xml considéré comme nocif

collective.remove

Réassembler des « ZODB Storage »

Web

Google Analytics Asynchrone

Le contenu qui disparait

De l’usage des layout

10 crimes sur les balises HTML que vous ne devriez vraiment pas commettre

10 crimes d’usabilité que vous ne devriez vraiment pas commettre

30 pratiques incontournables sur les CSS pour les débutants

Week 49 web logs


This week I cheat a little with older articles

Generic

A full example of commiting and merging a patch

Plone

Indexes in catalog.xml considered harmful

collective.remove

Recombining ZODB Storage

Web

Asynchronous Google Analytics

Disappearing content

On having layout

10 HTML tag crimes you really shouldn’t commit

10 Usability crimes you really should’t commit

30 CSS best practices for beginners

More next week.