Archives pour la catégorie Zope & Plone

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.

Alternatives open source à MS Access

Il semblerait qu’il apparaisse enfin des alternatives open source à MS Access : Rekall (distribué sous licence GPL ici et lu et discuté sur Slashdot) mais aussi un module d’OpenOffice (il doit être bien caché car la dernière fois que j’ai rapidement testé OpenOffice, je ne l’ai pas trouvé). Tiens, tiens, amusant, le langage de script de Rekall est Python !
Pour mémoire, toujours en Python, les produits zetadb et Formulator, dans l’environnement Zope, pourraient bien servir à faire la même chose mais en version Web.

Le meilleur agrégateur RSS

Je tiens à jour ce carnet web, ok. J’ai besoin d’un  » RSS aggregator  » (agrégateurs d’actualités syndiquées au format RSS) pour pouvoir suivre les autres carnets web qui m’intéressent, ok. Mais quel agrégateur de news choisir ? J’ai essayé Amphetadesk… pas mal ! Mais pas vraiment utilisable dès que l’on a plus d’une vingtaine de blogs à suivre (en plus, il m’a eu l’air super gourmand en ressources machine). Même avec son add-on AmphetaOutlines, qui le rend vraiment plus ergonomique, ce n’est pas encore ça. J’ai donc essayé NewsGator : pouah, il a besoin d’Outlook (c’est un plug-in dans Outlook) ! Newzcrawler ? Mouais, pas mal, l’idée d’avoir Microsoft Agent qui lit mes news est séduisante mais cet idiot ne sait apparemment lire les news que lorsque je clique dessus alors que j’aurais espéré qu’il me lise tout un canal ou, encore mieux, un canal agrégé… Sinon, en open source, il y a bien FeedReader avec une fonctionnalité de découvertes de canaux RSS (similaire à celle d’AmphetaDesk ?) qui est séduisante, mais l’ensemble manque encore de fonctionnalités et d’ergonomie. A suivre peut-être la version 3 ?Ah, et puis, il y a aussi Pears qui est pas mal, open source, mais 1/ Pears nécessite l’installation préalable de Python et de bibliothèques Python supplémentaires, 2/ le développeur de Pears n’est pas satisfait de ces bibliothèques et envisage donc de refondre l’application pour lui donner une architecture plus proche de celle d’Amphetadesk (serveur déployé localement sur le poste de l’utilisateur). A suivre aussi…
Après quelques tâtonnements et essais d’agrégateurs, je pense avoir trouvé l’agrégateur qu’il me faut. Il s’agit de FeedDemon, logiciel commercial actuellement gratuit (mais bientôt payant à environ 30-40$ d’après l’auteur). FeedDemon marche bien, accepte un tas de formats de syndications, est convivial, multilingue, ergonomie en trois panneaux et propose notamment un peu de valeur ajoutée après l’agrégation : possibilité de mettre en place des filtres qui affichent les items de tous les canaux qui répondent à certains critères de recherche (comme les CMFTopics mais en plus simple). Bref, un logiciel sympa, efficace et prometteur.
N’empêche que l’avenir reste pour moi l’utilisation de plate-formes de gestion de contenu comme agrégateurs. Et notamment, l’utilisation de Plone comme aggrégateur de News. J’avais réussi à faire tourner CMFNewsFeed et Plone 1.0 pour faire de la belle agrégation. J’attends que Plone 2 soit distribué et que Doug Hellman mette à jour CMFNewsFeed pour s’assurer de la compatibilité avec Plone 2 (j’ai fait quelques essais avec Plone 2 beta 3 et CMFNewsFeed 1.2 mais ça déconne à plein tubes avec, en vrac : des problèmes de dépendances aux versions de Python, des bugs dans le support des proxies, plus des bugs de Plone 2 beta 3 tout court). Je m’y remettrai donc plus tard. Et, en attendant : FeedDemon !

Développement rapide (RAD) avec Zope

Le produit zetadb associé au serveur d’application Zope est sensé permettre de faire du développement rapide d’application Web à partir d’une base de données. L’idée de ce produit est la suivante :

  1. A l’aide de votre gestionnaire de base de données préféré (on pourrait utiliser Access par exemple), vous générez votre structure de données.
  2. Vous lancez zetadb dans Zope et lui indiquez où se trouve votre base de données puis répondez à ses questions au sujet de la manière dont vous souhaitez employer ces données.
  3. Grâce à vos réponses et à votre structure de données, zetadb créé dans Zope les objets correspondants à vos données et pouvez donc gérer vos données à travers ces objets.
  4. Vous pouvez utiliser ces objets pour générer des écrans Web (à l’aide de modèles ZPT) ou bien pour générer des rapports sous forme de document bureautiques (au format OpenOffice).

Des templates HTML propres : ZPT

Pour construire des applications Web, il convient d’isoler le mieux possible le code de présentation (mise en forme, affichage, graphisme, …) du code de logique (règles de contrôle, structures de données, traitements). C’est pourquoi de nombreuses technologies de templating existent : elles consistent à proposer un modèle de présentation (le template) qui puisse être entièrement et sans risques manipulé par un graphisme ignorant le code logique. C’est ensuite un moteur de templating qui fusionne le modèle de présentation produit par le graphiste ou l’assembleur de pages avec le code logique prouit par le développeur ou programmeur.
L’une des technologies de templating les plus abouties est celle du Template Attribute Language (TAL) qui est implémenté dans les Zope Page Templates (ZPT) mais existe également en Perl (PETAL), PHP (PHPTAL) et Java (JavaZPT). Pour comprendre ZPT, rien de mieux que la FAQ ZPT, cet article pour débutant en ZPT et ce tutoriel.

SPIP, Plone, CPS ou PHPNuke ?

Les solutions opensource de gestion de contenu (« web content management ») sont nombreuses, diverses et relativement matures. Parmi les plus répandues, on trouve des solutions fonctionnant en environnement PHP telles que SPIP et PHPNuke et des solutions tournant en environnement Zope (Python) telles que Plone et CPS. Ce comparatif présente les avantages et inconvénients de chacun de ces quatre produits.

Persistence objet sur LDAP, avec mapping

Plone-ing for the semantic web

Here is a little set of inconsistent slides about the future (Semantic Web) and the present (Plone) and how you can tie one with another. In a few words : there seems to be need for a universal model for knowledge/RDF caches ; the production/transformation of knowledge and content should go through a workflow ; Plone should ease the implementation of such a workflow. It’s all about some link between knowledge management and content management.
These slides are displayed below but are also available as a Powerpoint presentation.




A hope for Zope ? Un espoir pour Zope ?

Beside J2EE and .Net is there a corporate hope for Zope ? I started some discussions on this topic in some zopish places : comp.lang.python,
Zopera (the French Zope community website) ; see also this other Zopera thread. The answers I collected don’t make me very optimistic about the near-term future of Zope as a mainstream web technological framework for big companies. Do you think there is a hope for Zope in Fortune XXXX companies ?

A côté de J2EE et .Net y a-t-il un avenir corporate pour Zope ? J’ai lancé quelques discussions à ce
sujet dans quelques endroits zopesques : comp.lang.python,
Zopera (un site de la communauté Zope française) ; voir aussi cette autre discussion sur Zopera. Les réponses que j’ai collecté ne me rendent pas très optimiste quant à la
probabilité d’une popularisation prochaine de Zope en tant que technologie Web pour les grandes entreprises. Pensez-vous qu’il y aura une place pour Zope dans les entreprises du CAC 40 ?

Un trucmuche

Voici une idée de truc à inventer :

  • – ça sert à qui ? à une association loi 1901
  • – ça agit sur quoi ? sur la visibilité de sa valeur ajoutée (sociale, économique, environnementale, …)
  • – ça permet quoi ? accroître ses ressources humaines (bénévoles) et économiques (subventions, dons, …)

Le contexte =

  1. un sponsor, qui veut renforcer son image de marque auprès de ses consommateurs pour conquérir/maintenir des parts de marché,
  2. un politicien, qui veut renforcer son image de marque auprès de ses électeurs pour gagner des voix,
  3. un mécène, qui veut se faire plaisir, avoir bonne conscience, ressentir des émotions
  4. une institution, qui veut justifier son existence, affirmer sa vocation,
  5. Des pistes de réflexion :

    • 1+2 => nécessite une médiatisation => nécessite de produire des récits à raconter à des journalistes.
    • 3 => nécessite une mise en scène, un représentant relationnel et affectif, un drapeau, un symbole, un personnage à investir émotionnellement
    • 4 => donne de la reconnaissance a posteriori => assure la pérennité

Fresh news aggregated with Plone

Here is my kind of a HOW-TO documentation if you want to setup a portal
aggregating news from remote web sites (by the way of RDF/RSS
syndication or by the way of search engines « screen scraping »). Want
your own news aggregator and portal, hey ?
I will use the following products : Plone + ZEO + CMFNewsFeed +
CMFWebAgent. Personnally, I installed them on a Windows 2000 platform.
And I have to say that this installation process is rather long and
tricky… I would welcome a Plone distribution that would include the
right version of ZEO and the configuration of Plone as a ZEO client. It
should also include the XML library needed for CMFNewsFeed.

  1. Download everything you will need
    1. Download Plone 1.0.1 from http://prdownloads.sourceforge.net/plone/Plone-1.0.1.exe?download
    2. Download ZEO in its latest CVS version from within the ZODB
      3.3.1 CVS at
      http://cvs.zope.org/ZEO/ZEO/ZEO.tar.gz?tarball=1&only_with_tag=ZODB3-3_1-branch (because ZEO 2.0 cannot run with Zope 2.6.x which is included
      in Plone 1.0.1)
    3. Download CMFNewsFeed 1.1 and CMFWebAgent 1.0 from
      http://sourceforge.net/projects/collective
    4. Download the PyXML library, version 0.8.1 as a tar.gz file at
      http://sourceforge.net/project/showfiles.php?group_id=6473 (Note that the 0.8.1 exe versions are specific either to Python 2.1 or to Python 2.2
    5. Download my plone_conf.zip file which includes some config files
      I gathered mainly from CMFNewsFeed distributions I suppose.
  2. Install, unzip and move everything to its right place
    1. Install Plone to C:\Plone (do not ask Plone to start
      automatically and do not start it manually either)
    2. Add C:\Plone\Python to your environment variable PATH if Plone
      installer did not do it
    3. Unzip ZEO to C:\Plone\ZEO
    4. Unzip CMFNewsFeed to C:\Plone\CMFNewsFeed-r1_1 which you then
      rename to C:\Plone\CMFNewsFeed for more ease
    5. Unzip CMFWebAgent to C:\Plone\CMFWebAgent-r0_1 which you then
      rename to C:\Plone\CMFWebAgent for more ease
    6. Read C:\Plone\ZEO\docs\ZopeREADME.txt
    7. Move C:\Plone\ZEO\ZEO to C:\Plone\Zope\lib\python\ZEO
    8. Unzip PyXML-0.8.1.tar.gz into C:\Plone\PyXML-0.8.1
    9. Read C:\Plone\PyXML-0.8.1\README
    10. Within a commandline, go to C:\Plone\PyXML-0.8.1 and do a
      « python setup.py build ». You will run into some erros, but that’s not
      that important for our purpose
    11. Move all the files and directories included in
      C:\Plone\PyXML-0.8.1\build\lib.win32-2.1\_xmlplus to
      C:\Plone\Python\lib\xml, replacing every existing file (I know it must
      be a very dirty way to install this but I don’t know an easy way to do
      it better since I did not want to install a standalone python
      distribution outside Plone)
    12. Unzip plone_conf.zip file to C:\
  3. Startup ZEO and Plone
    1. Execute C:\Plone\1.start_zeo.bat
    2. Wait a few seconds (or more…) and check
      C:\Plone\Data\var\ZEO_Server.log to see if ZEO properly started (you
      should see several lines explaining that ZEO created a StorageServer,
      and so on)
    3. Set Plone’s emergency user with the Windows « Plone
      controller »
    4. Execute C:\Plone\2.start_plone.bat
    5. Wait a few seconds (or more…) and check
      C:\Plone\Data\var\debug.log to see if Zope (Plone) properly
      started
    6. Bring your browser to http://localhost then to
      http://localhost:8080/manage to see if Plone works properly and you can
      log into Plone management interface as your emergency user. It should
      work (well, it works for me…).
  4. Setup and start CMFNewsFeed as a ZEO client
    1. Go to http://localhost and register as a new user called
      « newsfeed » : this will be the username CMFNewsfeed uses for retrieving
      content from the Net and posting it into Plone.
    2. Log into http://localhost:8080/manage with your emergency user
      and give « newsfeed » the « Reviewer » role (go into Plone/acl_users, click
      on newsfeed and give it the Reviewer role). I suppose newsfeed should
      still keep its « Member » role.
    3. Open C:\Plone\Data\getnews.conf and set the member_name variable
      as ‘newsfeed’ (the default value is ‘rssfeeder’)
    4. Set a new RSS source as follow : go to http://localhost and
      login as ‘newsfeed’, click on the « my folder » link (in the navigation
      bar), ; then create a new folder : you select Folder in the list box
      and click on the « add a new element » button and fill in the form
      (« my_slashdot_source » as id/name and « My Slashdot RSS source » as
      title), validate. Then create a link into this new folder. It should be
      named ‘RDF’ (mandatory), it could be titled ‘the Slashdot RSS link’ and
      its URL points to the RSS file you want to be retrieved
      (http://slashdot.org/slashdot.rdf).
    5. Hack CMFNewsFeed to adapt it to Plone : open
      C:\Plone\CMFNewsFeed\CMFFeedApp.py and replace ‘Portal Folder’ with
      ‘Plone Folder’. Still in CMFFeedApp.py, find the line containing
      « _edit » and, just below it, comment out the « description=description, »
      line then add a « new_link.description = description » line below the
      « new_link.title = title »
    6. Open a commandline and get to C:\Plone\Data then execute this :
      « python C:\Plone\CMFNewsFeed\getnews.py » (or just run the 3rd .bat file I prepared in my plone_conf.zip file
    7. You should find your new news items under the « my_slashdot_source » folder. If they don’t display (but the getnews.py command line affirmed they were retrieved), it may be a ZEO cache issue. Quick and bad fix for this is restarting your plone. But, of course, you may have to fix your zope.conf file in order to avoid this kind of issue. For the moment, I don’t know how to fix that. I’ll try later.
    8. Schedule a ‘cmd.exe « C:\Plone\Python\python C:\Plone\CMFNewsFeed\getnews.py »‘ to run once a day (never run it more frequently than 30 minutes or you may be banned by the news sources) so that your news are fresh everyday. You may use a Windows version of cron to do this.
  5. Setup and start CMFWebAgent as a ZEO client
    1. OK. You are a big boy/girl now. So try and follow similar steps to make CMFWebAgent run. You may have to fix some CMFWebAgent search engines scripts since their web interface may have changed since CMFWebAgent (and this doc) were released. Dirty hacks on sight…
  6. Last but not least : please drop a comment here to tell me if this works for you, how hard it was to setup and so on… Or maybe you know of a better way to make these damned CMFstuffagents work !

Pourquoi passer de l’ASP à PHP ?

Pour une entreprise qui a adopté ASP, pourquoi faudrait-il passer à PHP ? Pour profiter de la grande quantité de code opensource disponible, parce que le modèle de développement PHP est proche du modèle ASP, parce que PHP est désormais disponible sur Windows, parce que PHP est suffisament performant pour l’entreprise comparativement à ASP. Le point de vue de l’auteur de cet article sur les autres langages opensources pour le Web : la laideur de perl ne convient pas pour les gros projets ; le modèle de développement de python et zope est bien mais trop éloigné de celui d’ASP ; JSP n’est pas un bon choix car les langages de scripting sont plus adaptés au Web que ne l’est Java.

Agrégateurs de news RSS

L’OpenDirectory signale notamment les logiciels opensource suivants, parmi les nombreux agrégateurs de News RSS aujourd’hui disponibles : Aggie (.Net), AmphetaDesk (perl), MyHeadlines (PHP+MySQL), Peerkat (Python) et Reptile (en architecture peer-to-peer) . Parmi les logiciels signalés par l’OpenDirectory, j’ai notamment repéré fyuze, NewsApp de server.com,
NewzCrawler. Il faut également signaler les nombreux produits de syndication « in-bound » (=aggrégation) pour Zope, même si aucun n’offre de fonctionnalités « off-the-shelves », comme on dit (il faut coder un peu pour intégrer ces produits dans un site fait avec Zope).
Jon Udell citait (dans un article sur byte.com auquel, visiblement, on n’a plus accès à moinds de s’enregistrer auprès de byte.com ; le titre « personal RSS aggregators… ») les principaux aggrégateurs RSS. Amphetadesk et Peerkat m’ont paru les plus intéressants d’entre eux. J’ai installé Amphetadesk : ça marche bien malgré le
fait qu’Amphetadesk a repéré des centaines de canaux RSS lorsque je naviguais sur des sites de syndication tels que moreover,
newsisfree et syndic8. Du coup, ma liste de canaux disponibles est immense et bien peu utilisable ! Il manque encore des
fonctionnalités mais c’est un très bon début pour imaginer ce que seront les aggrégateurs personnels de demain. Reste à
tester Peerkat. Jon Udell, dans son article, cite de manière désordonnée les principales fonctionnalités attendues pour ce
genre d’agrégateurs (ou syndicateurs ?). Essayons d’y mettre un peu d’ordre :

  • présenter le contenu sur trois panneaux, à la façon des lecteurs de newsgroups (Usenet)
  • proposer des listes de canaux pré-enregistrés
  • lire les formats RSS 0.92, 1.0,
  • organiser les canaux par catégories
  • ouvrir une fenêtre d’alerte lorsqu’une actualité apparaît
  • organiser les actualités et canaux sous la forme d’un arbre « à l’Explorer »
  • lire les groupes de news NNTP (Usenet)
  • lire des sites web d’actualités (screen craping, web clipping)
  • ajouter de nouvelles sources facilement
  • faire lire les actualités par un synthétiseur vocal
  • faire défiler les actualités à l’écran sous la forme d’un prompteur
  • importer/exporter la liste de canaux
  • écrire des actualités
  • publier un canal
  • offrir une API (en XML/RPC par exemple)
  • supporter l’API de Blogger
  • sélectionner des actualités une à une, les filtrer, les annoter et afficher voire publier le résultat
  • avoir une interface claire, intuitive et conviviale
  • je vous laisse imaginer le reste

On ne tardera pas à voir apparaître des offres logicielles « corporate » pour la syndication de contenus. Sinon, il me reste encore à installer et tester peerkat.
Tiens, il y a aussi quelqu’un qui tente de définir Le Parfait Agrégateur RSS.

Zope vs Cocoon, Python vs Java

La société ArielPartners a publié
une étude comparative de Zope et de Cocoon
, deux environnements objets faisant office de serveurs d’applications Web pour les sites Internet et intranet orientés publication de contenu. Leur conclusion présente Zope comme un environnement plus puissant, plus mûr et mieux documenté, avec une avance de une à deux années sur Cocoon et les environnements de publication Java similaires à Cocoon. En particulier, Zope offre des fonctionnalités satisfaisantes de gestion des transactions, de la sécurité et une évolutivité remarquable (scalabilité).
ArielPartners publie également une
comparaison détaillée des langages Python (associé à Zope) et Java (associé notamment à Cocoon)
. Cette comparaison soutient la thèse suivante : il suffit d’adopter Python ET Java pour couvrir l’intégralité des besoins de développement courant en informatique d’entreprise. Python offre les avantages suivants :

  • le code Python est plus concis (3 à 5 fois plus concis qu’en Java) et le codage est plus rapide et facile
  • le langage évolue plus rapidement que Java car Java a acquis plus d’inertie
  • Python impose moins de contraintes pour le codage, au prix d’un plus grand risque d’erreurs lors de l’exécution du code
  • Python est plus facile à apprendre pour les débutants tout en étant satisfaisant pour les experts : sa courbe d’apprentissage est plus douce
  • Zope est un serveur d’application python reconnu.
  • La syntaxe de Python est plus claire et plus lisible
  • Python, comparativement à Java, offre un code plus facilement maintenable.
  • L’interpréteur Python compile le code à sa première exécution et exonère ainsi le développeur de phases de compilation fastidieuses.
  • Python est un choix judicieux pour la majorité des tâches de développement en entreprise.
  • Les domaintes d’excellence de Python sont : le scripting, le prototypage rapide, l’intégration de systèmes (langage « glue »), les applications web, les outils graphiques, les outils de traitement XML.

Les avantages de Java sont les suivants :

  • on compte 3 millions de développeurs Java dans le monde contre un demi million de développeurs Python
  • Le code Java, plus contraint pour le développeur, offre moins de risque de bug
  • Java s’accompagne d’offres mûres et nombreuses en matière de serveurs d’application grâce à J2EE, RMI, Jini et JavaSpaces. Les principaux serveurs d’application sont BEA WebLogic, IBM WebSphere, Sun One Application Server et JBoss (opensource).
  • Java offre des modèles à base de composants adaptés à l’entreprise avec les modèles JavaBeans et EJB.
  • Java s’accompagne d’outils de conception graphique, de documentation et de débuggage très avancés.
  • Java, comparativement à Python, offre un code plus performant.
  • Java se présente comme un choix complémentaire intelligent pour tous les cas …
    • … où Python n’a pas encore fait ses preuves (Aspect-Oriented Programming, recherche sur les technologies SOAP/WSDL/UDDI, utilisation d’outils de modélisation UML avancés)
    • … où les performances brutes sont critiques
    • … où il s’agit de mettre en place des systèmes distribués ou parallélisés à très grande échelle
    • … où la facilité de recrutement de compétences de développement ou la disponibilité d’outils de développement est critique