Nuxeo annonce la version 5.1 de sa plateforme d'ECM libre

Posté par  (site web personnel) . Modéré par Jaimé Ragnagna.
0
14
oct.
2007
Java
Nuxeo vient d’annoncer la sortie de Nuxeo Enterprise Platform 5.1, plateforme d’ECM libre basée sur les technologies Java EE 5.

Cette nouvelle version est le fruit de 6 mois de travail de la communauté Nuxeo depuis la sortie de Nuxeo EP 5.0, et un an depuis l’annonce par Nuxeo de sa migration de Zope à Java. Elle élargit le spectre des fonctions couvertes par la plateforme (voir plus loin). Elle renforce sa scalabilité pour répondre à des besoins de montée en charge importants. Enfin, elle présente un certain nombre d’avancées quant à la modularité du logiciel, grâce à son architecture orientée services, de façon notamment à permettre des déploiements multi-serveurs. Cette modularité permet également de ne déployer que les services dont on a besoin pour une application et de les configurer facilement et, également, d’étendre si nécessaire la plateforme en y ajoutant de nouvelles fonctions ou de nouveaux connecteurs vers d’autres applications ou services du système d’information de l’entreprise.

Plus généralement, et d’un point de vue business, la plateforme Nuxeo évolue pour répondre au mieux aux besoins des utilisateurs et des intégrateurs, et leur faire bénéficier en open source et avec une architecture moderne et cohérente, d’une plateforme comparable aux leaders du marché que sont Documentum, OpenText ou FileNet. Présentation générale de la plateforme

Pour ceux qui l’auraient oublié depuis la dernière dépêche sur ce sujet, Nuxeo EP est une plateforme d’ECM qui couvre notamment les besoins de la GED, du collaboratif, de la gestion des documents d’archives, du workflow, etc.

Les fonctions d’ECM sont assurées par la plateforme de service, baptisée Nuxeo Service Platform, qui peut être soit embarquée dans un serveur d’application Java EE 5, soit dans un client riche Eclipse RCP.

La plateforme serveur, baptisée Nuxeo EP, fournit les fonctions de GED aux utilisateurs via une interface Web, ou sert de base à des applications métier via une approche SOA.

La plateforme cliente, Nuxeo RCP, permet d’embarquer les fonctions de GED dans un client riche aux interfaces plus performantes qu’un simple client web Ajaxifié.

L’ensemble des services de la plateforme est implémenté par composants OSGi (des “greffons”) qui viennent s’insérer dans des points d’extensions, ce qui permet de configurer et d’étendre facilement la plateforme en fonction des besoins métiers.

Techniquement, la plateforme Nuxeo est développée à partir d’un certain nombre de bibliothèques et de frameworks open source existants, et respecte les principaux standards d’interopérabilité du monde Java (JSR). De plus Nuxeo participe activement au processus d’évolution des API Java standard (JCP - Java Community Process), notamment à la JSR-283 qui définit les évolutions de l’API standards Java pour l’accès aux dépôts de contenu (Java Content Repository).

Les principales nouveautés

Voici quelques nouveautés importantes de la version 5.1 :
  • Un service de recherche avancée, fondé sur le langage de requêtes NXQL (de type SQL) et un système de configuration flexible. il offre des fonctions exhaustives de recherche texte et de requêtes multi-critères.
  • Une gestion des archives électroniques et physiques, qui permet de gérer les paramètres de conservation suivant les contraintes, la durée de vie des supports (pour gérer le renouvellement et l’approvisionnement), la durée de conservation, les actions de déplacement ou destruction ainsi que les processus humains liés à l’archivage.
  • Un service d’import / export de données, conçu à la fois pour faciliter la migration à partir de systèmes « legacy », et pour assurer les utilisateurs de la plateforme qu’ils ne seront jamais « prisonniers » de leurs fournisseurs de technologies. Ce service permet l’import / export de données stockées dans Nuxeo au format XML en suivant les schémas qui les définissent, garantissant ainsi une comptabilité maximale avec les formats et standards choisis pour les données.
  • L’amélioration de la scalabilité horizontale, grâce à la capacité de scinder les différents services de la plateformes Nuxeo sur plusieurs serveurs grâce à la couche Nuxeo Runtime et en exploitant les possibilités de clustering de la plateforme Java EE 5. Ceci garantit une montée en puissance virtuellement illimitée de la plateforme par clonage et répartition de charge sur les services.
  • L’ouverture de la plateforme aux langages de script.
  • L’utilisation intensive de Maven pour créer facilement des nouveaux greffons, les compiler, les tester et assembler l’application finale suivant un certain nombre de profils.

Plus d’informations sur les principales nouveautés de la 5.1, sont données dans un New and Noteworthy d’une vingtaine de pages en PDF.

Pour avoir le détail des nouveautés depuis la 5.0, et si vous avez vraiment le courage, il y a les changelogs de toutes les versions intermédiaires :

Un point sur les technos utilisées

La plateforme Nuxeo se base sur un ensemble très riche de composants et d’outils libres développés principalement par ou sous la tutelle de quatre institutions majeures : la Fondation Apache, la Fondation Eclipse, la division JBoss de la société Red Hat, la société Sun Microsystems. Réciproquement, l’équipe de Nuxeo est amenée, dans certains cas, à collaborer avec ces projets afin de les faire évoluer pour répondre à nos besoins, ou pour corriger des bugs.

Le système de composants utilisé par la plateforme est basé sur le standard OSGi. L’implémentation choisie est Equinox de la Fondation Eclipse.

Le stockage des documents se fait en utilisant le standard JSR 170, aussi connu sous le nom de JCR (Java Content Repository), une API d’accès à un dépôt de document conceptualisé sous la forme d’un arbre de propriétés. Nous avons choisi d’utilier Apache JackRabbit, qui est d’ailleurs l’implémentation de référence de la JCR, développée par Day Software sous l’égide de la Fondation Apache.

JackRabbit sait stocker ses données dans un certain nombre de bases de données relationnelles. La base libre recommandée par le projet est PostgreSQL, mais il est également possible de travailler avec MySQL ainsi que des bases propriétaires comme Oracle, Sybase ou MS-SQL Server.

Le moteur d’indexation utilisé par défaut est Lucene de la Fondation Apache.

Côté serveur, Nuxeo EP est embarqué dans un serveur d’application JBoss AS 4. Nuxeo Runtime a été porté sur Glassfish v2, l’implémentation de référence du standard Java EE 5 développée par Sun. Il reste encore un travail de portage de la plateforme Nuxeo complète sur Glassfish, et ultérieurement à la porter sur les autres serveurs d’applications libre Java EE 5 existants, comme JOnAS d’ObjectWeb, Geronimo de la Fondation Apache, ou JBoss AS 5.

Le moteur de transformation de documents bureautiques utilise, en mode client-serveur, la suite bureautique OpenOffice.org développée principalement par Sun.

La construction du logiciel est assurée par Maven de la Fondation Apache. A cet effet, et du fait de l’approche innovante de la construction de logiciels à partir de composants choisie, un greffon spécifique pour Maven a été réalisé (nuxeo-maven-plugin).

Pour assurer la persistance des objets non-documentaires, la plateforme utilise le standard JPA (Java Persistance API) qui fait partie du standard EJB3, développé par Sun dans le cadre du Java Community Process. Plus spécifiquement, nous utilisons l’implémentation Hibernate développée par JBoss.

La couche Web repose sur le standard JSF (JavaServer Faces). Le projet s’appuie également sur JBoss Seam, le framework de développement web basé sur JSF et JPA développé par Gavin King (le créateur d’Hibernate) au sein de JBoss. Selon les développeurs de Seam, le projet Nuxeo est le premier projet d’envergure à avoir fait appel à Seam, et de nombreux échanges ont eu lieu entre les développeurs de Seam et ceux de Nuxeo de façon à ce que Seam réponde aux besoins de souplesse et de dynamicité de Nuxeo EP, et également pour corriger les bugs des premières version de Seam.

Le moteur de workflow par défaut est jBPM de JBoss.

Pour permettre le prototypage rapide d’application, le projet Nuxeo a choisi de s’appuyer sur des langages de scripts. A l’heure actuelle, aucun langage de script n’est privilégié, et le projet supporte les langages : Python (dans son implémentation Jython soutenue par la Python Software Foundation), Ruby (JRuby - développé par Sun), JavaScript (Rhino - contribué par la Mozilla Foundation), PHP (implémentation Quercus de la société Caucho Technology).

Côté client, Eclipse RCP est utilisé comme framework client riche multi-plateformes avec un look’n’feel natif. De nombreux greffons additionnels, provenant de la Fondation ou de la communauté Eclipse, sont utilisés pour fournir les services nécessaires aux applications bureautiques.

La qualité du logiciel est monitorée en permanence grâce à un ensemble de logiciels libres dédiés à la qualité logicielle :
  • Hudson (Sun) pour l’intégration continue
  • JUnit (Kent Beck) pour les tests unitaires
  • Selenium (ThoughtWorks) pour les tests fonctionnels Web
  • TPTP (Eclipse Foundation), CheckStyle (Oliver Burn) et Findbugs (Université du Maryland) pour l’analyse statique de code et la recherche de bugs.


Un appel à contribution

Comme tout projet libre digne de ce nom, la plateforme Nuxeo a été conçue pour permettre à une communauté de contributeurs de participer au projet. Le système de points d’extensions et de greffons est l’aspect le plus important, et le "plus" original de cette “architecture de la participation”, qui est au coeur de la vision de Nuxeo pour sa plateforme.

Les besoins, ou les envies, actuels sont :
  • Traductions : actuellement 4 langues sont supportées par la plateforme (Anglais, Français, Allemand, Italien). Il est facile de proposer de nouvelles traductions (fichiers .properties standards au monde Java, ou fichiers .po via les outils GNU gettext standards).
  • Documentation et relecture de la documentation : un “Nuxeo Book” est écrit par l’équipe de développement du projet. Les critiques constructives des lecteurs (et si possible les amélioration de fond ou de forme) sont bienvenue afin de rendre la plateforme la plus simple possible à appréhender par les nouveaux venus. Un wiki est également ouvert pour permettre de contribuer des informations sous une forme plus libre (par exemple : des howtos).
  • Packaging vers les distributions Linux ou autres (RPM, DEB, ports BSD, portage Gentoo, packages Solaris, etc.).
  • Développement d’un moteur de stockage “pur relationnel” (sans passer par JackRabbit).
  • Connecteurs vers des entrepôts de données non-relationnels : bases objects (ex: db4o, Versant), bases XML (Xindice, Tamino, etc.), base “web 2.0” (Amazon S3, )
  • Connecteurs vers des moteurs d’indexation autres que Lucene.
  • Connecteurs vers d’autres moteurs de workflow que jBPM.
  • Connecteurs vers des ERP et des CRM (libres ou non).
  • Connecteur vers une suite de reporting / business intelligence.
  • Enrichissement de la suite de tests : unitaires (via JUnit), fonctionnels web (via Selenium), de performance (via Grinder), des services web (via librairies SOAP des principaux languages de programmation).
  • Développement d’un assistant de configuration et d’une console de management.
  • Greffons d’aide au développement pour Eclipse.
  • Portage de Nuxeo Runtime, le conteneur de composants de Nuxeo basé sur OSGi, dans différents serveurs d’applications Java EE 5 comme Glassfish, JOnAS, Geronimo, JBoss AS 5.
  • Développement d’interfaces “client riche” (Mozilla XUL, Adobe Flex, etc.) au-dessus de la plateforme Nuxeo EP.
  • Création de nouveau thèmes graphiques.
  • Développement d’application horizontales (ex: moteur de wiki / blog / collaboration d’entreprise) et verticales (métiers) sous forme de profils de configuration et d’extensions.

Certaines de ces activités (ou d’autres, plus avancées) peuvent faire l’objet de stages, d’une part, ou de collaborations avec d’autres entreprises ou des laboratoires de recherche.

N’hésitez pas à me contacter à ce sujet si vous êtes intéressés.

Aller plus loin

  • # Passionnant

    Posté par  . Évalué à 7.

    Moi qui ne connait pas grand choses à ce genre d'outil, je salue l'auteur de cette dépêche qui m'a occupé 2h, le temps de comprendre un peu tout ça. Merci encore.
    • [^] # Re: Passionnant

      Posté par  (site web personnel) . Évalué à 5.

      Quel courage !

      Alors qu'un troll primate n'aurait pas attendu 2h avant de s'écrier :
      FOUTAISES !!!

      Désolé :-) Je fuit ----->[ ]

      Adhérer à l'April, ça vous tente ?

  • # Oubli: Restlet

    Posté par  (site web personnel) . Évalué à 3.

    Parmi les projets utilisés par la plateforme, j'ai oublié de mentionner Restlet (http://www.restlet.org/) qui est utilisé (et c'est une des nouveautés des la 5.1) pour implémenter les web services RESTful dans Nuxeo.

    S.

    "There's no such thing as can't. You always have a choice." - Ken Gor

  • # Comparaison Nuxeo 5.1 avec un portail

    Posté par  (site web personnel) . Évalué à 2.

    Bonjour,

    J'aimerais savoir comment vous comparez techniquement et fonctionnent Nuxeo 5.1 avec un portail comme Liferay, par ex, qui inclut un CMS.

    De manière générale, comment positionnez-vous Nuxeo 5.1 par rapport aux portails existants ?

    Merci de votre réponse.

    Cdlt,
    Dominique
    • [^] # Re: Comparaison Nuxeo 5.1 avec un portail

      Posté par  (site web personnel) . Évalué à 4.

      Salut,

      Nuxeo EP n'est pas un portail, donc il n'y a pas vraiment lieu de comparer Nuxeo et Liferay, JBoss Portal, Jahia, etc.

      Notre idée générale est de ne jamais réinventer la roue, mais de nous appuyer sur des logiciels existants, autant que possible.

      Comme il existe une offre déjà assez riche de portails Java (basés sur la JSR-168, autrement dit l'API de portlet), nous avons choisi de nous appuyer, lorsque c'est utile, sur ces portails.

      L'intégration JSR 168 est actuellement disponible dans des plugins d'extension dans la "forge" Nuxeo (nuxeo-portlet-* dans [http://svn.nuxeo.org/trac/nuxeo/browser/sandbox]).

      Nous sommes ouverts à des collaborations avec les gens qui font des portails, ou dont le métier est de faire de l'intégration autour de ces portails, pour enrichir cette intégration.

      S.

      "There's no such thing as can't. You always have a choice." - Ken Gor

  • # Intéressant

    Posté par  . Évalué à 4.

    Un outil intéressant, que j'aimerai bien essayer.

    Quelqu'un aurait-il comparé son fonctionnement avec Alfresco ? Qu'on puisse avoir une idée des forces/faiblesses de chaque projet ?
  • # Encore cet m.... de java...

    Posté par  . Évalué à -4.

    Bin tiens du java... voir plus loin... parce que je le vaux bien.
    Il est toujours pas libre ce bloat de langage obsolète.
    Y en a qui n'ont toujours pas compris que les langages de pseudo-haut niveau à compilation statique sont dépassés (cf java et ces sous-copies). Il faut utiliser les langages de vrai haut niveau (vraiment dynamiques) comme ruby/perl/python/lua/javascript couplés à des modules en C (allez... j'y met aussi le C++).
    Bref, j'encourage fortement les gens à rester sur la version Zope et surtout passer à autre chose si la version Zope ne leur convient pas.
    • [^] # Re: Encore cet m.... de java...

      Posté par  . Évalué à 1.

      Un pseudo tout beau tout neuf
      qui dit tout (PYTHONSAIBIEN)
      et son contraire
      http://linuxfr.org/comments/874759,1.html
      (PYTHONSAPU)
      1j après la fin du bouchot,
      un troll est né.

      Par pitié, réouvrez la tribune.
      • [^] # Re: Encore cet m.... de java...

        Posté par  . Évalué à 2.

        Par pitié, réouvrez la tribune.

        Ou alors on lui fait rencontrer IsNotGood et ils meurent d'épuisement en tentant chacun d'avoir le dernier mot. Et on leur décerne un Darwin Award bien mérité.
        • [^] # Re: Encore cet m.... de java...

          Posté par  . Évalué à -3.

          Je m'en fous de IsNotGood.
          Ce que je veux savoir c'est si je peux avec le tar.bz2 des sources de java (toutes en GPL?), je peux faire un:
          configure;
          make install
          et avoir une plateforme java complète et fonctionnelle.
          Alors?
      • [^] # Re: Encore cet m.... de java...

        Posté par  . Évalué à -1.

        Salut le clown
        Tu connais le "contexte" d'une dépêche: dans la dépêche sur mercurial y a GIT... GIT c'est du C... or dans cette dépêche mon opinion est python<C...
        Dans cette dépêche, y a zope, c'est du python... hum... et java... et mon opinion dans ce contexte c'est java<python.
        Bon, alors en fait, au lieu d'un pythonsaibien et d'un pythonsapu clownesque je te propose le théorème suivant qui recoupe 2 contextes différents... sisi:
        java<python<C

        Je dois avouer que je préfère le C.
        • [^] # Re: Encore cet m.... de java...

          Posté par  . Évalué à 2.

          Ah ah ah!
          Tu as un tort et je le prouve:
          Python 2.5.1
          >>> ("java"<"python")
          True
          >>> ("Python"<"C")
          False
          >>> ("java"<"C")
          False

          Donc en fait on a:
          C<java<Python
  • # Java vraiment GPL?

    Posté par  . Évalué à -1.

    Hope une nouvelle thread sur le sujet suivant:
    Est-ce que java est vraiment GPL?
    Peut-on installer un framework java *fonctionnel* à partir des sources par un simple:

    configure;
    make install
    • [^] # Re: Java vraiment GPL?

      Posté par  (site web personnel) . Évalué à 2.

      http://nb-openjdk.netbeans.org/get-and-build.html

      S.

      "There's no such thing as can't. You always have a choice." - Ken Gor

      • [^] # Re: Java vraiment GPL?

        Posté par  . Évalué à -1.

        "Bootstrap JDK

        All OpenJDK builds require access to the previously released JDK 6. The JDK 6 binaries can be downloaded from Sun's..."

        "Binary Plugs

        Not all of the source code that makes up the JDK is available under an open-source license. In order to build an OpenJDK binary from source code, you must first download and install the appropriate binary plug bundles"

        Donc non et non. Y a pourtant un GNU Makefile qui traîne. Du svn à la place d'un git pour un projet 3 fois plus gros que Linux... maladroit.
        Bien tenté de la part de Sun.

        Allez, après cette digression sur du faux libre, hope-là! Retour au vrai libre.
        • [^] # Re: Java vraiment GPL?

          Posté par  (site web personnel) . Évalué à 3.

          sans vouloir rentrer totalement dans tes tentatives de troll... (quoique...)

          La plupart des systèmes ont étés conçus ce cette manière.
          Si aujourd'hui on peut compiler gcc avec gcc, il a bien fallu le compiler avec autre chose la première fois.

          Ici c'est pareil, pour pouvoir compiler java libre avec un java libre il faudra it avoir un java libre d'abord... donc la solution est plutôt de builder un java libre avec un java pas libre puis de rebuilder java libre avec java libre...
          (pfiou, pas simple tout ça... ça m'apprendra à argumenter des trolls...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.