logo       

Re: Question stratégique...: msg#00081

Subject: Re: Question stratégique...
Sébastien ARBOGAST wrote:

Bonjour,

Après avoir parcouru l'ensemble du User Guide de Cocoon, une question me turlupine quant aux choix technologiques qui sont faits dans le cadre du développement de Cocoon. Comme je l'ai déjà dit avant de tester Cocoon je me suis attardé sur Orbeon Presentation Server, un autre serveur de publication XML beaucoup moins puissant que Cocoon mais qui se targue, en bon membre du W3C qu'ils sont, d'intégrer au maximum les standards de cet organisme. Par exemple pour les formulaires ils implémentent une partie des XForms. Ma question est : qu'est-ce qui a motivé l'équipe de développement de Cocoon à créer des nouvelles spécifications là où certaines technos déjà existantes (et potentiellement répandues) auraient permis de faire peu ou prou la même chose tout en diminuant le temps d'apprentissage et en augmentant sa rentabilité ? Pour avoir privilégié le XSP sur le JSP ? Pourquoi les CForms au lieu des XForms ? Si encore ces technos avaient une chance de devenir des standards de facto en dehors de Cocoon, mais j'ai l'impression que les chances sont plutôt limitées. Attention je ne critique absolument pas les choix qui ont été faits et je salue humblement ce travail titanesque que j'ai d'ailleurs la ferme intention d'utiliser pour mon projet en définitive. Mais j'aimerais juste comprendre les motivations c'est tout.


No problem, c'est une question fréquente à laquelle je réponds biens volontiers.

A travers tes questions, on voit clairement apparaitre l'endroit où se place Cocoon dans l'éventail des technologies. D'un côté XForms et le monde XML/W3C, et de l'autre JSP avec le monde J2EE. Et puis aussi les attentes et besoins de la communauté des développeurs qui sont les premiers utilisateurs de Cocoon, et tous dans le cadre de leur activité professionnelle (cf mon mail précédent sur l'influence des licenses sur la nature des communautés).

Commençons donc par XForms. Tu soulignes que Orbeon implémente "une partie" de XForms. Cette précision est essentielle. Il y a 2 ans, il y avait un composant dans Cocoon nommé XMLForm. Il implémentait "une partie" de XForms. Gros succès : XForms était le futur standard W3C des formulaires en XML, et comme XML est la base de Cocoon, ça collait très bien. Mais rapidement, on a rencontré des limites importantes liées au fait que XForms, à travers ses mécanismes d'événements, est vraiment une spécification pour le navigateur, et non pour le serveur. Faire une implémentation serveur de XForms est compliqué. Certains l'ont fait (Chiba par exemple), mais c'est lourd, et pas forcément réellement utilisable dans le cadre d'une application qui doit répondre vite.

Partant de ce constat, des développeurs [1] ont décidé de développer un autre framework de gestion de formulaires pour Cocoon, côté serveur celui-là, apportant les fonctions réellement nécessaires au projets qu'ils étaient en train de réaliser. Internationalisation de la saisie (pas facile de décrire ça dans un XMLSchema utilisé par XForms), validation avancée (intra-formulaire comme le permet XForms, mais aussi en relation avec d'autres données applicatives), mise en forme évoluée séparée de la définition du formulaire, etc. Cocoon Forms était né, résultat d'une approche pragmatique par rapport à un besoin industriel immédiat. Le succès qu'il rencontre dans Cocoon aujourd'hui montre que ce choix "rebelle" par rapport à la spec n'est pas idiot.

Maintenant, si XForms prend réellement son essor, il sera tout à fait envisageable de combiner XForms sur le client et Cocoon Forms sur le serveur pour tirer le meilleur des 2. Cela a déjà été évoqué sur la liste de développement.


JSP maintenant. Dans Cocoon, la "vue" du modèle MVC est le pipeline, qui est une chaîne de traitement XML. Pour des raisons d'efficacité, cette chaîne véhicule des événements SAX. Une JSP n'est rien d'autre qu'un servlet compilé à la volée et, comme tout servlet, produit un flux binaire dans un OutputStream. Ce flux peut être du texte représentant du XML bien formé, mais ça reste un flux binaire. Pour l'utiliser dans un pipeline, il faut le passer dans un parser XML, ce qui est moins efficace que la production directe d'événements SAX. C'est pour cela qu'est apparu XSP : ce sont des pages serveurs compilées à la volée, comme JSP, mais qui sont des générateurs Cocoon, et donc produisent directement des événements SAX.

Mais voilà, des utilisateurs de Cocoon ont aussi de l'existant en JSP. C'est pourquoi on trouve aussi dans Cocoon un JSPGenerator, qui utilise un parser comme décrit précédemment, mais qui permet d'être "J2EE compliant" ou d'adapter un existant à moindre frais.


Tout ça pour dire que Cocoon se trouve à l'articulation des mondes XML et J2EE, sans être obnubilé par le respect des standards. Si le standard existe et est réellement utilisable, il n'y a pas de raison d'inventer autre chose, sinon on construit une solution pragmatique s'appuyant sur ces 2 mondes en respectant les principes fondamentaux de Cocoon qui sont la séparation des domaines techniques et l'architecture en composants. C'est d'ailleurs cette architecture extrèmement modulaire qui a permis l'émergence de toutes les fonctions qu'on y trouve, des plus sérieuses jusqu'à des choses un peu anecdotiques mais réellement surprenantes : combien de frameworks de développement d'applications sont capable de faire du traitement de partitions musicales en XSLT ?


Voilà qui je l'espère éclairera ta lanterne. Cocoon n'est pas toujours "standard", mais lorsqu'il ne l'est pas, c'est parce que le standard n'est pas vraiment la bonne solution :-)

Sylvain


[1] les gens d'Outerthought (http://outerthought.org). Il sont 3, tous committers Cocoon!

--
Sylvain Wallez                        Anyware Technologies
http://apache.org/~sylvain            http://anyware-tech.com
Apache Software Foundation Member     Research & Technology Director




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
qnx.openqnx.dev...    politics.lenini...    audio.emagic.ex...    tex.texinfo.gen...    handhelds.linux...    ietf.sipping/20...    lang.erlang.gen...    cygwin.talk/200...    yellowdog.gener...    mozilla.devel.l...    xfree86.newbie/...    openbsd.ports/2...    db.oracle.devel...    kde.kalyxo.deve...    user-groups.lin...    bbc.cvs/2003-04...    gnu.libtool.bug...    redhat.k12osn/2...    emulators.wine....    freebsd.devel.d...    search.xapian.g...    java.izpack.use...    network.mrtg.us...    windows.total-c...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe