Archives pour la catégorie Architecture

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.

Java est aux langages de programmation ce que les 4×4 sont aux voitures

Java est le 4×4 des langages de développement : ultra-puissant, tout-terrain (sauf lorsqu’il s’agit de faire un Paris-Dakar), énorme consommateur (de temps de développement et de ressource machine). Comme les conductrices de 4×4 en centre ville, certaines sociétés utilisent Java à contre-emploi.
JSP est la technologie Java de loin la plus simple au sein de la spécification J2EE. Pourtant, d’après Philip Greenspun, professeur d’informatique au MIT, même les étudiants informaticiens du MIT ont du mal à la mettre efficacement en oeuvre tellement elle est complexe au regard du type de problème qu’elle est sensée traiter. D’après Philip Greenspun, un projet Web simple utilisant Java coûtera 5 fois plus, sera deux fois plus longs à livrer et sera plus dur à maintenir que si il utilisait un langage de scripting tel que PHP ou Perl. Mais les développeurs et les managers se sentiraient rassurés à l’idée qu’avec Java ils pourraient, au moins en théorie, résoudre des problèmes informatiques d’une complexité très importante, même si cela ne correspond pas à la situation qu’ils ont à traiter au quotidien.

Intelligence collective, le projet

Pierre Lévy, à l’Université d’Ottawa, présente son projet de recherche sur l’intelligence collective : créer un modèle théorique qui permet de représenter et de gérer l’intelligence collective d’un système sous la forme des échanges de savoirs qui le traversent et des réseaux qui les sous-tendent. Pierre Lévy projette d’implémenter ce modèle sous la forme d’un logiciel opensource. Ce logiciel permettra de représenter graphiquement ces savoirs et réseaux, de les valoriser et donc de les échanger au sein d’une économie nouvelle. Le logiciel se présentera comme une sorte de jeu de plateau (jeu de l’oie, mandala, …).

Commercialisez vos logiciels open source

Discussion sur Slashdot au sujet des modèles économiques liés à l’opensource, résumé et extraits :

  • Dans le monde des affaires, certains logiciels gagnent à être libres et d’autres à être fermés. Au cours de la vie d’un logiciel, il peut exister un instant critique à partir duquel le logiciel gagnerait à devenir ouvert ou, au contraire, à devenir fermé.
  • Un logiciel gagnerait à être ouvert à partir du moment où il permet de gagner plus d’argent en services (installation, paramétrage, assistance, support) qu’en vente de licence.
  • Peut-être vaut-il mieux commercialiser des services et des produits s’appuyant sur des logiciels libres plutôt que d’essayer de commercialiser les logiciels libres eux-mêmes (licences).
  • Si je développe un logiciel à usage interne et spécifique (pas dans une optique de revente), j’ai en général intérêt à le distribuer sous une licence opensource : je gagne ainsi de la force de recette et de développement en constituant une communauté autour de ce logiciel.
  • 1/ développez un logiciel, 2/ prospectez et « vendez-le » largement mais sous licence opensource, 3/ établissez des contrats de services avec vos clients satisfaits par le logiciel (formation, support, maintenance corrective, maintenance évolutive, …), 4/ distribuez-le publiquement sous licence opensource.
  • L’idée de commercialiser un service de support sur un logiciel opensource est séduisante mais difficile à mettre en oeuvre. En effet, le principal besoin de support est ressenti au moment de l’installation voire avant le démarrage (démonstrations, avant-vente, …), c’est-à-dire avant que le client ait pu profiter du caractère gratuit de la licence pour s’approprier le produit. Il est alors difficile de vendre un service (trop prématuré).
  • Certains aiment distribuer leur logiciel sous deux licences : d’une part sous licence opensource GPL (ce qui empêche l’utilisateur de revendre le produit) et d’autre part sous licence commerciale (afin de permettre à l’utilisateur de revendre le produit après modification ou extension des fonctionnalités). Mais ce modèle rend difficile voire impossible la constitution d’une communauté de développeurs ouvertes puisque les contributions de cette communauté, si elles se font dans le cadre de la licence GPL, ne pourront pas être inclues dans la version commerciale du produit (à moins que les développeurs ne cèdent leurs droits au « propriétaire » du produit).
  • Certains produits sont d’abord distribués sous licence commerciale et seules leurs anciennes versions sont distribuées sous licence opensource. Même remarque que précédemment sur la difficulté d’organiser une communauté ouverte de développeurs.
  • Les services à vendre autour d’une application web opensouce : 1/ hébergement spécialisé (service en mode ASP), 2/ vente de licences pour des modules et fonctionnalités avancées, 3/ services de conseil, d’assistance, de développement spécifique, d’intégration, 4/ support technique avancé, 5/ autres services (graphisme, …).

L’article qui avait provoqué cette discussion est disponible ici.

XACML : un pseudo-standard de plus pour les services web

XACML est encore un autre standard pour les services web. Ce vocabulaire XML prétend couvrir la problématique de l’authentification (permettre à un agent de prouver qu’il agit bien au nom d’une personne donnée). En fait, il semble plutôt couvrir la problématique de l’autorisation (donner ou non le droit à un agent d’agir sur une ressource).
Avec XACML, les ressources à protéger sont sous la garde d’un service d’autorisation nommé PEP (Policy Enforcement Point). Le PEP formule en XACML la requête que l’agent adresse à la ressource (« Je, soussigné agent XYZ, désire lire la ressource ABC. ») Le PEP envoie cette requête XACML à un « PDP » (Policy Decision Point). Le PDP compare la requête XACML avec les règles d’autorisation qui ont été définies pour s’appliquer aux requêtes de ce type, sur cette ressource ABC. Le PDP formule sa décision d’autorisation (« Je consens à ce que l’on réponde à cette requête » ou « je refuse ») également en XACML et envoie ainsi sa réponse au PEP qui, lui, agit en conséquence (donne accès à la ressource ou renvoie un message d’erreur).
On peut lire dans une discussion à ce sujet sur Slashdot :

  •  » C’est une erreur fondamentale que de vouloir inclure des expressions logiques (telles que requises pour les décisions de contrôle d’accès) dans un langage (XML) qui ne le supporte pas. « 
  •  » Les standards de ce type ne représentent pas un progrès, ils représentent une masse croissante de redondance qui devra un jour être refondue pour former un tout cohérent. « 

Développez avec des triplets

Comment construire des applications de gestion de méta-données ? Avec des triplets RDF, pardi ! Oui, mais comment implémenter cette application ? A l’aide du langage python et de la bibliothèque rdflib, pardi !
Comme l’expliquait cet article sur xml.com en début d’année, Rdflib permet de générer, stocker et fouiller des collections de triplets RDF sans avoir à toucher à la syntaxe XML associée à RDF. La seule chose dont vous avez besoin, c’est de connaître un minimum de python. Vous vous rendrez rapidement compte que bâtir une application à base de triplets, c’est (un peu) comme bâtir une application avec une base de données relationnelle mais sans avoir à concevoir au préalable le schéma de votre base de données. Et vous vous rendrez surtout compte que RDF, c’est quelque chose de simple à condition de vous appuyer sur une bibliothèque de type rdflib. En effet, l’architecture interne du stockage de RDF et la syntaxe XML de RDF sont des sujets que vous n’avez pas besoin de connaître pour pouvoir tirer profit des technologies du web sémantique dans vos applications.

Persistence objet sur LDAP, avec mapping

Survivre sans Windows

Y a-t-il une vie après Windows ? D’après ce patron de PME, oui, une entreprise peut non seulement vivre sans Windows mais aussi a tout intérêt à envisager de s’en passer.
En bref, le BSA a poursuivi cette PME de vente d’instruments de musique ; il a été choqué par l’attitude méprisante et « anti-commerciale » de Microsoft à son égard ; il a donné six mois à son équipe informatique pour abandonner Windows ; l’équipe informatique a choisi et déployé linux sur les 72 postes de travail de l’entreprise ; les utilisateurs se sont formés aux nouveaux outils de travail (Mozilla pour le Web, Evolution pour le mail et le groupware, OpenOffice pour la bureautique) ; l’entreprise a gagné de l’argent et continue à en gagner à chaque montée de version Windows.
En plus, le patron de PME qui n’y connaissait rien en informatique est devenu le symbole d’une success story pour amateurs de pingouins.

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.




Alternatives à J2EE

Pourquoi n’avez-vous pas FORCEMENT besoin de J2EE ? Jon Udell évoque des solutions alternatives à J2EE, en prenant un par un les arguments qui pourraient vous faire croire qu’hors J2EE, il n’y a point de salut :

  • Scalabilité : que ce soit avec Java, sous Windows ou avec LAMP, il y a d’autres solutions de clustering et de répartition de charge que J2EE
  • Fortement transactionnel : il existe toujours et encore CICS, Tuxedo, TopEnd ; de plus TP-Lite est une piste intéressante ainsi que le support des services web par les serveurs de bases de données
  • Persistence relationnelle-objet : Castor, servlets avec JDO, l’EOF d’Apple, …
  • Homogénéité = 1 seul environnement, 1 seul langage : même avec J2EE, les développeurs devront continuer à faire du SQL, des JSP, de l’XSLT… et des langages de scripting pour l’automatisation des traitements

Donc J2EE n’est pas la solution universelle à tous les problèmes. Fallait-il le préciser ?

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é

Les éditeurs logiciels, et après ?

Il y a eu l’ère des constructeurs (IBM), puis celle des éditeurs (Microsoft). Mais deux facteurs annoncent la fin de règne de ces derniers : la nécessité concurrentielle de faire « mieux que l’open source », les déceptions du modèle « progiciel » (trop lourd, trop rigide). L’avenir serait-il au modèle prestataires de services hébergés (ASP) ? à « l’informatique à la demande » ? Clever Age s’interroge… C’est bo. :)

Crystal Reports, mais en open source ?

Crystal Reports, vous connaissez ? C’est beau, c’est bien. Mais c’est cher. Et l’éditeur de
Crystal Reports est en train de se faire acheter par Business Objects. Alors, quelles
alternatives opensource pour remplacer Crystal Reports ?

A noter, comme le suggère la dernière question de cette FAQ, que la technologie XSLT, à condition de disposer d’éditeurs XSL graphiques de bonne qualité, semble
directement concurrencer les produits comme Crystal Reports. Parmi les moteurs XSLT
opensource les plus connus, on trouve Xalan et Sablotron. Cette tendance
favoriserait-elle vraiment des produits simples comme PhpReports ?

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 !

Les technologies de développement les plus populaires

La popularité d’une technologie informatique ne laisse en rien présumer de sa qualité et a fortiori, de son adéquation pour un projet donné ou un contexte donné. Néanmoins, elle influence sans doute le coût du recrutement de ressources humaines vaguement compétentes : il est plus facile de trouver sur le marché un développeur prétendant « connaître Java » qu’un développeur prétendant « connaître Eiffel ». Plusieurs sites Web donnent un aperçu de la popularité relative de ces technologies dans les offres d’emploi.