Archives pour la catégorie Content management

Bliki, WikiLog

Le concept de Bliki ou de WikiLog désigne une famille de logiciels de contenu qui cumulent les fonctionnalités des Wikis et des WebLogs (ou carnets Web). On en parle ici en anglais et surtout sur le CraoWiki en français et plus en détails.
Mes idées du moment sur le comportement attendu d’un Bliki (je préfère Bliki à WikiLog, le mot condense mieux le concept) :

  • Dans mon carnet Web, lorsque je publie un message qui contient un WikiName, celui-ci devrait être détecté automatiquement et transformé en lien pointant vers la page correspondant sur le Wiki associé à mon carnet Web. Si cette page n’existe pas, elle devrait être créée. Le Wiki associé devrait supporter la fonctionnalité de pingback et la fonctionnalité de trackback de manière à ajouter, en bas de la page du WikiName la mention et le lien de ce WikiName dans mon carnet Web.
  • De même que les Wikis peuvent généralement afficher les « backlinks » d’un WikiName donné (la liste des autres pages Wiki dans lesquelles ce WikiName est mentionné), ils devraient permettre de rechercher ce WikiName dans un weblog donné voire dans Google.
  • Lorsque quelqu’un veut ajouter un commentaire sur une WikiPage, le logiciel Wiki devrait lui proposer soit d’ajouter le commentaire dans le corps même de la WikiPage, soit d’ajouter son commentaire dans le carnet Web associé au Wiki, soit encore dans le carnet Web associé à l’utilisateur en cours (si celui-ci est identifié par cookie ou bien authentifié plus sûrement), soit enfin dans un carnet Web qui sera crée automatiquement pour cet utilisateur si celui-ci n’en dispose pas encore. Son commentaire sera ensuite lié en pingback et/ou en trackback depuis la WikiPage.
  • Lorsque quelqu’un veut ajouter un commentaire dans un carnet Web, le carnet Web devrait lui proposer plutôt d’ajouter ce commentaire dans son carnet Web personnel voire lui proposer un assistant de création de carnet Web si l’utilisateur n’en dispose pas déjà d’un.

Pour résumer, afin de faire des Blikis, plutôt que d’inventer un nouveau type de logiciel « from scratch », je suis partisan d’ajouter des fonctionnalités aux carnets Web et aux Wikis existant, en s’appuyant sur des spécifications ouvertes telles que le format classique des WikiName, les trackbacks et les pingbacks. Ces fonctionnalités seraient les suivantes :

  • support des trackbacks et pingbacks dans les Wikis
  • support des WikiNames dans les carnets Web
  • afin de boucler la boucle des Blikis, ajout d’un assistant à la création de carnet Web lors de tout ajout de commentaire dans un Wiki ou dans un carnet Web

Les trackbacks dans WordPress

Dans WordPress, les URLs inclues dans un post sont automatiquement soumises à un « pingback » (ce qui cause parfois des timeout lors de la validation d’une nouvelle entrée, d’ailleurs). Mais les trackbacks, je n’avais jamais essayé. Alors faisons un test de trackback sur http://sig.levillage.org/index.php?m=200312#post-386 pour voir si ça marche bien.

Workflow dans Plone

Ce document explique les phases du développement d’application de workflow s’appuyant sur Plone. Une fois Zope, Plone et CMFOpenflow installés, l’essentiel du travail consiste à modéliser le processus qu’il s’agit d’informatiser. Cette étape est critique car la modélisation de processus est en soit difficile. Elle requiert une grande rigueur et de bonnes compétences d’analyses fonctionnelles ainsi qu’une excellente communication entre l’analyste et le gestionnaire du processus. Une fois le workflow (modèle de processus) dessiné sur papier (analyse), il est facile de le transcrire dans OpenFlow. Ensuite, le développeur doit déclarer dans Zope les rôles utilisateur requis par le workflow puis aura à créer les formulaires de saisie de données de chaque étape du workflow ainsi que les éventuels scripts déclenchés lors des transitions entre étapes du processus. Un peu de test, et hop, ça tourne (du moins en théorie).
Il est bon de noter que la plupart des moteurs de workflows fournissent un éditeur graphique de Workflow. Cette interface semble extrêmement importante pour le novice qui examine ce type de produit. Cependant, il semblerait qu’un éditeur de ce type n’apporte pas grand chose de plus qu’une feuille de papier et un stylo. OpenFlow ne fournit pas d’éditeur de ce type mais seulement un visualisateur de workflow (une fois que les étapes du workflows ont été transcrites dans le paramétrage de OpenFlow). Cette lacune ne semble donc pas critique.
Plone a été initialement distribué avec un module de workflow « DCWorkflow », orienté document. OpenFlow est un autre produit de workflow pour Zope qui diffère de DCWorkflow par le fait qu’il est orienté « activité » et permet donc de modéliser des processus plus complexes et moins spécifiquement liés à la gestion de contenu Web. Cependant, OpenFlow est un produit Zope qui ne s’appuie pas sur le framework CMF. Par conséquent, il était difficile de développer des applications de gestion de contenu faisant appel aux fonctionnalités avancées d’OpenFlow. C’est pourquoi la communauté de développement d’OpenFlow a créé Reflow (également appelé CMFOpenFlow, apparemment) qui, lui, est sensé s’intégrer parfaitement dans CMF et donc a fortiori dans Plone.

Développer avec les Archetypes

Archetypes est un produit Zope qui permet de développer des applications de gestion de contenu s’appuyant sur CMF (et sur Plone, par exemple). Une introduction didactique au fonctionnement d’Archetypes nous en explique le fonctionnement et la raison d’être : Archetypes permet au développeur de ne pas avoir à maîtriser la complexité (de l’API) du framework de gestion de contenu CMF, en lui permettant de générer de manière rapide des objets s’appuyant sur CMF. Archetypes constitue donc, en quelque sorte, l’essentiel d’un atelier de développement rapide d’applications de gestion de contenu.
Le principe général de fonctionnement est le suivant. Le développeur décrit en quelques lignes de Python le schéma de l’objet qu’il veut développer, en s’inspirant du schéma d’un objet existant : « ma classe d’objet ‘MonArticle’ a les mêmes propriétés et méthodes que les objets de la classe ‘Article’ mais possèdent également un champ de type texte, qui s’appelle ‘thème’, qui ne peut pas être vide et que l’utilisateur remplira à l’aide d’une ‘textarea’ HTML ». C’est ensuite le produit Archetypes qui transforme cette définition en un objet opérationnel qui peut être installé dans une instance Plone sans développement supplémentaire.

Apprendre Zope et Plone

Ceci est une traduction de mon message initialement posté en anglais.
On dit parfois que la maîtrise de Zope et de Plone est un art difficile. On a également dit que la courbe d’apprentissage pour Zope est particulièrement raide. J’ai également lu plusieurs débutants (comme moi) qui demandaient par où commencer pour se mettre au développement Zope. « Ne commencez pas à apprendre Zope sans connaître Python ! », « Inutile de maîtriser TAL, TALES et METAL pour construire des interfaces utilisateurs dans Plone, il vaut mieux apprendre les techniques de CSS avancées », et d’autres réflexions du même genre… Alors je me demande : quelle est la progression recommandée pour apprendre Zope et Plone ? comment rendre la courbe d’apprentissage globale plus douce ou ne serait-ce qu’un peu plus visible et gérable ? Le diagramme ci-dessous représente ma compréhension de la « feuille de route d’apprentissage » idéale pour celui qui souhaiterait devenir un maître en Zope et Plone :
La feuille de route idéale pour apprendre à tirer profit de Zope et Plone.

Zope and Plone learning roadmap

It is sometimes said that the art of mastering Zope and Plone is difficult. It has also been said that learning Zope Zen involves a steep learning curve. I have also read many newbies (like me) asking for information about the first steps to go through in order to smoothly get into Zope development. « Don’t start learning Zope before you know Python ! », « No need for mastering in TAL, TALES and METAL for building Plone user interfaces, you’d rather learn advanced CSS techniques », or the like… So I wonder : what is the recommended roadmap for learning Zope and Plone ? how to make the global learning curve smoother or just a little bit more visible and manageable ? So the diagram below is my guess on the ideal learning roadmap for a would-be master in Zope+Plone :
The ideal roadmap for learning Zope and Plone.

rdflib and ROPE

I just blog this Bob DuCharme article so that I can remember where practical information about rdflib can be read.
By the way, I have tested the very pre-pre-release of Reinout’s ROPE (see ROPE = Rdflib + zOPE). And I could install it on a Zope 2.7.0b3 fresh install. It was quite easy to install it. But, as Reinout said, it is still a very early release and, as you can see on the attached screenshot, there is much work to be done before it is really usable. This screenshot is just a hint for Reinout : if you add several namespaces into a rdfstore (shouldn’t you name it a « rope » ?), they end up displayed one next to another instead of being options of the same HTML select widget. Anyway, I am looking forward further releases of Rope.

Produit pour la gestion sémantique de contenu

La société Voquette offre une technologie nommée SCORE, qui prétend faciliter la gestion sémantique de contenu. Cette publication auprès de l’IEEE présente leur vision du web sémantique.
Les activités commerciales que Voquette identifie dans le domaine du Web Sémantique portent sur le développement de taxonomie ou d’ontologies ainsi que de standards de méta-données pour l’entreprise, l’organisation de contenus selon ces taxonomies, l’annotation de contenu avec ces méta-données, l’analyse de contenu à la recherche de « motifs » (patterns), le « data mining » pour identifier les relations implicites entre des données provenant de sources différentes. Les principales applications actuelles du Web Sémantique concernent la recherche et la personnalisation, l’organisation du contenu et des portails d’entreprise, la syndication de contenus. Les technologies du Web Sémantique trouvent leurs débouchés dans les marchés de la gestion de contenu et de la gestion des connaissances (knowledge management). Voquette définit plusieurs concepts relatifs à l’usage de ces technologies.
La recherche sémantique et la personnalisation sémantique consistent, pour un produit logiciel, à différencier un mot selon ce qu’il désigne. Par exemple, le mot « palm » tel qu’employé par l’utilisateur désigne-t-il un produit matériel (« Palm Pilot »), un produit logiciel (« Palm OS »), une société (« Palm ») ou encore un élément d’anatomie humaine (la paume de la main) ? Un moteur de recherche sémantique saura distinguer ces concepts et aider ainsi son utilisateur à préciser ses requêtes ou bien à ne considérer que les résultats pertinents sur le plan conceptuel.
La gestion des méta-données sémantique permet d’organiser un contenu, par exemple documentaire, non seulement en fonction de méta-données syntaxiques (longueur d’un document, date de création, format du fichier) mais aussi en fonction des concepts auxquels ce document est lié (le groupe d’auteurs qui l’ont écrit, sa thématique principale, la raison pour laquelle il a été écrit, …)
La normalisation sémantique consiste à établir des relations d’équivalence entre différentes formes syntaxiques désignant une même entité comme par exemple, pour désigner le PDG d’une société, le nom de celui-ci, son surnom, sa fonction (« PDG de telle société »), etc. La normalisation sémantique implique généralement le choix d’une forme canonique pour identifier le concept désigné (une norme consistant par exemple à prendre le prénom plus le nom de famille d’un individu).
L’association sémantique consiste à établir des recommandations (recommander un contenu pour une personne donnée), des évaluations de pertinence (établir la force du lien sémantique entre un contenu et une requête) ou, d’une manière plus générale, estimer la probabilité qu’une entité donnée soit liée à une deuxième entité par une association logique donnée.
L’architecture du système SCORE est composée d’agents extracteurs de contenus, paramétrés à l’aide d’une « boîte à outils d’extraction ». Ces agents permettent à la fois d’alimenter et de faire évoluer un modèle de référence et d’alimenter un corpus de contenus faisant référence à ce modèle par le biais de relations sémantiques (annotations sémantiques). Ces relations sémantiques sont enrichies automatiquement par le biais d’un composant capable de procéder à ces catégorisations automatiques. Ensuite, un « moteur sémantique » permet de puiser dans le modèle et dans le corpus les contenus pertinents. SCORE fournit une application de « tableau de bord sémantique » qui s’appuie sur ce moteur ainsi qu’une API qui permet au développeur de construire ses propres applications sémantiques de gestion de contenu. Les caractéristiques principales qu’ont recherché les concepteurs de SCORE sont sa performance et sa capacité de montée en charge plutôt que la sophistication de ses mécanismes d’inférence. Le moteur permet donc uniquement de parcourir les relations sémantiques établies et n’offre pas de capacité d’inférence similaires à celles d’un moteur de raisonnement logique (systèmes experts, …). Enfin, il convient de noter que le composant de catégorisation automatique s’appuie sur une combinaison de plusieurs méthodes de catégorisation : probabilistique (bayésienne), par apprentissage (modèles markoviens) et par approche formelle.

La panoplie du parfait petit Zopeur

Voici les ressources nécessaires à tout développeur francophone qui veut se plonger dans la technologie Zope avec la meilleure efficacité :

Agrégation de carnets Web dans l’entreprise

Les agrégateurs de contenu pour carnets Web permettent aux entreprises d’unifier la publication d’informations issues de leurs multiples systèmes informatiques, quand bien même ceux-ci s’appuient sur des technologies propriétaires et hermétiques. Il s’agit d’une forme de communication partiellement concurrente des systèmes dits de « portail ».
Ainsi, une entreprise américaine a constaté que la principale source d’information quotidienne de ses employés était la messagerie électronique. Pourtant, la messagerie n’offrait pas un mode de communication des plus efficaces pour accéder à l’information critique pour les activités quotidiennes. Les utilisateurs se plaignaient de la difficulté qu’ils avaient à accéder à l’information pertinente. Les listes de diffusion de messagerie étaient difficiles à gérer et à maintenir au rythme des mouvements de personnel. Quant aux portails intranet, ils ne pouvaient saisir l’information critique quotidienne qu’au prix de licences logicielles très coûteuses.
C’est pourquoi cette société a adopté l’usage des carnets Web et des agrégateurs de contenu qui leur sont associés. Sur ces carnets, chaque employé des équipes de développement produit a été invité à publier des foires aux questions, ses rapports d’avancement de projets, les résultats de son travail quotidien et ses documents de conception. Les forces de vente ont été invitées à inscrire dans leurs carnets Web l’avancement de leurs travaux de prospection commerciale. De plus, certains des systèmes informatiques existants, qu’il s’agisse d’applications métiers ou de logiciels de portails ou de gestion de contenu, ont été équipés d’une interface permettant de publier automatiquement certaines de leurs données sous la même forme que celles des carnets Web.
Chaque utilisateur a ensuite été équipé d’un logiciel d’agrégation de contenu, qui va chercher les dernières informations les plus pertinentes sur chacun des carnets Web des collègues et des systèmes automatisés ; ces informations s’affichent regroupées par catégories. Grâce au logiciel d’agrégation, chaque utilisateur peut consulter d’un rapide coup d’oeil l’information concernant l’activité de ses collaborateurs directs, la trier, l’archiver, la parcourir par mot-clef et, éventuellement, la commenter ou l’enrichir à leur tour sur leur propre carnet. Contrairement au système de messagerie, ce n’est pas au producteur de cette information de décider à quels « consommateurs » il la destine. C’est à chacun d’orienter son agrégateur personnel de contenu vers les sources d’information pertinentes pour son activité.
Cette forme de communication, contrairement aux logiciels de portails intégrés tels que Sharepoint Portal, repose sur une technologie standardisée (XML + RDF + RSS) qui est soutenue par une communauté de développeurs informatiques à la fois étendue, diverse et ouverte. Le caractère ouvert de cette technologie a permis à la société utilisatrice de choisir, pour en bénéficier, un logiciel open source qui l’implémente de manière satisfaisante et surtout gratuite. L’économie des licences logicielles a été significative par rapport à la généralisation d’un logiciel de portail.

Carnets Web pour la veille concurrentielle

L’usage croissant des « carnets Web » (ou weblogs ou blogs) trouve des débouchés originaux dans le domaine de la veille concurrentielle (voir la présentation Powerpoint liée). La tenue de carnets Web individuels par une large population de veilleurs, marketeurs, chercheurs et commerciaux dans une entreprise permettrait de rendre tangible et exploitables les « signaux faibles » qui sont les pépites de la veille, avec un investissement technologique tout à fait minime.

Plone va au COMDEX

Le produit de gestion de contenu Plone a été désigné par « la communauté open source » comme étant le logiciel libre méritant le plus d’être présenté au salon informatique américain COMDEX (Las Vegas). L’éditeur O’Reilly lui offre donc un stand. Suite à cet événement, les lecteurs de Slashdot évoquent les attraits principaux de Plone, ainsi que de Zope, le serveur d’application Python sous-jacent. De tous les serveurs d’application du marché, Zope aurait la capacité de montée en charge « la plus transparente » : la technologie de clustering ZEO n’imposerait pratiquement aucune modification du code des applications. Zope fournirait une technologie de gestion de cache mature et une interoperabilité indubitable. Zope est comparé au noyau linux et Apache et représenterait un avenir important pour le logiciel libre en lui permettant notamment d’entrer dans l’univers applicatif (« move open source software ‘up the stack’ to higher levels »). L’interface utilisateur de Plone (en particulier dans sa version 2.0) serait exemplaire en termes de modularité et de respect des standards d’accessibilité. Elle incarnerait l’état de l’art en matière d’architecture Web et d’extensibilité.
Enfin, les commentateurs soulignent l’importance et la diversité de la communauté d’utilisateurs et de développeurs de Plone, qui dépasserait celle de toute autre logiciel libre de gestion de contenu. Selon l’un des lecteurs, l’un des meilleurs atouts de Zope et de Plone serait cette communauté et son enthousiasme ; cet enthousiasme serait un indicateur de la disponibilité du support technique autour de ce produit.
Le nombre de société de services informatique offrant du support sur les technologies Zope et Plone semble confirmer cet indicateur.

Catégorisation automatique par réseaux bayesiens

Jon Udell a expérimenté l’utilisation de réseaux bayesiens pour la catégorisation automatique de contenus. Ces expérimentations, bien que séduisantes et prometteuses, ne se sont pas révélées concluantes. Les réseaux bayesiens sont efficaces pour classer de manière binaire (spam ou non spam ?) des contenus lorsqu’ils sont entraînés sur des échantillons de plusieurs centaines d’éléments. Par contre, lorsqu’il s’agit de multiplier les classements possibles (n rubriques) et, a fortiori, de réduire l’échantillon d’apprentissage (quelques dizaines d’entrées dans un carnet Web), ils deviennent relativement peu pertinents : entre 20 et 40% d’efficacité seulement dans les tests de Jon Udell.