Zope X3 en version finale

Posté par (page perso) . Modéré par Benoît Sibaud.
Tags :
0
12
nov.
2004
Python
Aboutissement de près de trois années de développement conduit par Jim Fulton, de Zope Corp en collaboration avec la communauté Zope, dont Stephan Richter, la version finale de Zope X3 3.0.0 vient de sortir.

Zope X3 est une réécriture du serveur d'applications web objet Zope visant à proposer une nouvelle génération de technologies inspirées des motifs de développement modernes. Le coeur de Zope X3 est "l'architecture à base de composants" dont le principe de base est le respect des interfaces. Elle permet d'augmenter la qualité logicielle dans la mesure où chaque composant est conforme à des interfaces qui sont définies, et dont le résultat est prédictible, notamment via des tests unitaires.

Parmi les nouveautés de Zope X3, on trouve :
- une meilleure séparation du code et de la configuration grâce au langage ZCML ;
- une nouvelle version de la base de données "objet" de Zope, ZODB 3.3, plus à même de gérer des sites à haut trafic ;
- une meilleure documentation.

NdM : Un énorme merci à l'équipe d'Ingeniweb, à l'initiative notamment de Zopera, et qui a rédigé cette dépêche, ainsi qu'à ArBaDaCarBa, Nicolas Évrard et Baptiste Simon pour leurs propositions. Zope X3 est une plateforme expérimentale : la plate-forme Zope 2.0 reste celle de référence. La version 3.0 de Zope intégrera la plupart des nouveautés de Zope X3, mais cette séparation facilitera grandement la migration.

Les nouveautés de Zope X3 plus en détail :

1. L'architecture de composants. Elle met en oeuvre des objets qui respectent des interfaces : les composants.
Le principal bénéfice en terme de productivité pour les développeurs de composants vient du fait qu'il est possible de définir un nouveau composant en adaptant un composant existant à une interface donnée grâce à un composant d'adaptation ("Adapteur"). Comparé au mode de développement de Zope 2, il y a donc plus de réutilisabilité et moins de code à écrire.

Les types de composants techniques participant à l'architecture sont : les "composants de contenu", les Vues, les Adapteurs, les Outils, les Utilitaires, et les Services.

Les autres apports de l'architecture sont :
- la séparation du code et de la configuration logicielle grâce au langage ZCML (basé sur XML) ;
- les schémas pour la gestion de listes de champs avec génération des formulaires (grâce aux widgets) à la manière du produit Formulator pour Zope 2.

Le serveur est livré avec un certain nombre de composants utilitaires importants : les interfaces, les permissions, les rôles, les gestionnaires de cache, le négociateur de langue, les utilitaires de création d'objets (factories), les connecteurs SQL, l'utilitaire de livraison de courriel, etc.

2. Zope X3 utilise la dernière version stable de la base de données "objet" de Zope, ZODB 3.3. Cette version, entre autres, grâce à la technologie MVCC (Multi-Version Concurrency Control) lève les limitations en termes de conflits de lecture des versions précédentes, de manière à permettre la gestion correcte de sites à haut trafic.

3. Enfin, pour faciliter le travail des développeurs, la documentation de l'API, extraite à partir du code source, est directement accessible.

Quelle plate-forme Zope de production à l'horizon ?

Zope X3 est une plate-forme expérimentale. La plate-forme Zope 2 reste celle sur laquelle Zope Corp. et le reste de la communauté mettra les efforts afin de continuer à fournir le meilleur service possible. Le long terme verra arriver une version 3.0 de Zope intégrant la plupart des nouveautés de Zope X3, mais l'évolution sera progressive de manière à garantir la pérennité des investissements des utilisateurs de Zope.

Cette phase de migration progressive sera également volontaire. Elle a en fait déjà commencé avec la préparation de la version 2.8 de Zope. La prochaine version de Zope, déjà en phase alpha, intègre la ZODB 3.3 et permet le support du nouveau type de classes introduit par Python 2.3 (new-style classes) pour les classes d'objets Zope.

Une fois le passage à Zope 2.8 garanti, les différents modules de l'architecture de composants de Zope X3 pourront être ajoutés, probablement dans Zope 2.9.

Pour découvrir Zope X3 :
- Téléchargez Zope X3 pour Windows ou Linux/Unix,
- Télécharger des modules d'extension fournissant des applications "exemples" ou des outils tels que les connecteurs SQL.
  • # mon commentaire

    Posté par (page perso) . Évalué à 6.

    C'est rigolo quand même, c'est la première fois que je vois une version expérimentale sortir dans une version finale... une version expérimentale finale. Pourquoi pas.

    Enfin le but était peut être de passer en première page de linuxfr, qui comme chacun le sait est limité aux versions à chiffre rond ;)
    • [^] # Re: mon commentaire

      Posté par (page perso) . Évalué à 5.

      Une plateforme expérimentale, une version finale. Tu peux très bien avoir un logiciel très stable, mais qui implémente un système qui lui, se veut amener à évoluer, au fur et à mesure justement qu'on développe et utilise la version stable. C'est une procédure en particulier très courante dans le développement des systèmes d'exploitation modernes, où les interfaces jouent un rôle fondamental (contrairement à Linux où Linus change les interfaces plus que régulièrement, par principe plus encore que par nécessité). La définition des interfaces (API et ABI) peut être amenée à évoluer dans un premier temps, ce qui fait de la plateforme une plateforme expérimentale, tandis que le noyau, lui, est tout à fait stable, robuste, utilisable.
      • [^] # Re: mon commentaire

        Posté par (page perso) . Évalué à 4.

        oui je comprend bien, mais même si le noyau est stable, les interfaces ne le sont pas du tout, alors déclarer celà en version "finale" (qui en général signifie on y touche plus sauf pour corriger des bugs jusqu'à la prochaine version majeur) est un peu fort :)
        En gros c'est une version pas finie (puisque les interfaces évoluent) finie. Mais j'ai un peu peur pour le support de ce genre de version "finale" : ils vont proposer des maj pour toutes les version expérimentales finales ? J'espère que y'en a pas trop :)
        • [^] # Re: mon commentaire

          Posté par (page perso) . Évalué à 2.

          le commentaire ci-dessous (http://linuxfr.org/~BlueBird/(...)) me fait dire que c'est encore plus drôle qui n'y paraît : mettre l'accent sur le respect des interfaces et proposer une plateformes dont les interfaces vont évoluer en version final me fait dire que en plus d'être drôle c'est paradoxal, j'ai presque envie de dire stupide ?
          • [^] # Re: mon commentaire

            Posté par (page perso) . Évalué à 3.

            Euh, ça n'a rien de paradoxal. À partir du moment où ton but est la stabilité des interfaces, tu peux pas déclarer "Zope3 est sorti, les interfaces sont stables". Il te faut l'expérience derrière. Alors, tu as plusieurs choix. Soit tu considères que l'expérience a été suffisamment accumulée par les autres projets (encore faut-il qu'il existe depuis longtemps des alternatives rigoureusement équivalentes en terme fonctionnel), soit tu es bien obligé de développer toi-même ta propre expérience. Dans la deuxième configuration, il est on ne peut plus logique de déclarer une version "stable", une version donc "finale" d'une plateforme expérimentale. Les développements et utilisations de cette plateforme expérimentale sert à accumuler l'expérience nécessaire à la définition de ces interfaces, et une fois qu'elles sont stabilisées et qu'on sait suffisamment ce que ça donne, on les intègre à ce qui deviendra Zope3.

            C'est en tous cas la façon dont je le vois, et c'est une procédure de développement que j'ai souvent vu mise en oeuvre et mis en oeuvre moi-même dans des projets orientés composants.
            • [^] # Re: mon commentaire

              Posté par (page perso) . Évalué à 2.

              Oué enfin là c'est évident que c'est pas final du tout puisqu'il n'y a pas encore la compatiblité avec Zope 2, ce qui amènera forcement les interfaces à évoluer.
              M'enfin quand on voit "Zope X3 en version final" on se doute vraiment pas qu'on a entre les mains une plateforme pas du tout fini et qui n'assure pas la compatiblité avec l'existant. Je dirais presqu'il y a tromperie sur la marchandise :) Heuresement c'est bien explicité sur la première page, mais je suis sûr que des daissideure vont se prendre au piège et des journaleux faire des articles avec ce même titre accrocheur : Zope 3 en version finale (le journaleux enlèvera le X qui n'a pas trop d'intérêt pour lui)
  • # L'hébergement

    Posté par (page perso) . Évalué à 5.

    Le seul reproche que j'aurais à faire à Zope c'est qu'il reste couteux au niveau de l'hébergement par rapport au PHP.
    • [^] # Re: L'hébergement

      Posté par (page perso) . Évalué à 3.

      Coutex dans quel sens ?
      consommateur en ressources ? ressource CPU, mémoire, disque dur ?
      • [^] # Re: L'hébergement

        Posté par . Évalué à 3.

        Couteux en tout ça et donc couteux en ¤.
        • [^] # Re: L'hébergement

          Posté par . Évalué à 4.

          Le coût en ¤ vient sûrement effectivement principalement des ressources consommées, mais je pense qu'un autre facteur est que l'hébergement Zope ne bénéficie pas de la même sauvage concurrence que l'hébergement PHP, faute d'avoir atteint la même popularité. Et ça ne l'aide pas à devenir populaire bien sûr, etc.
          Ah, les dures lois du marché...
          • [^] # Re: L'hébergement

            Posté par (page perso) . Évalué à 2.

            Le problème c'est que chaque hébergé doit avoir les droits complet sur le serveur, il est impossible de partgaer un seul serveur pour plusieurs personne.
            • [^] # Re: L'hébergement

              Posté par . Évalué à 1.

              mauvais hébergeur, changer d'hébergeur
            • [^] # Re: L'hébergement

              Posté par . Évalué à 1.

              Ah bon ? Comment je fais alors pour héberger mon pote sur zope, pourtant ça marche très bien ?

              En fait faut créer un dossier avec les deux options cochées, et ensuite on va dans le dossier avec /manage/ après, un joli vhost monster et des rewrite rules apache et ça rox.
          • [^] # Re: L'hébergement

            Posté par . Évalué à 2.

            Tu peux bosser et héberger gratuitement sur objectis.org. Dans quelques semaines, Objectis pro, à un prix sensiblement inférieur à 20 euros / mois, te permettra de faire de même dans un cadre professionnel.

            Objectis, c'est 6.274 sites Zope ce soir, dont 3.290 sites Plone 2. Le tout gratuit bien sûr.

            L'argument "c'est plus cher que PHP" tombe en partie, et l'écart qui restera entre l'hébergement d'une appli Plone et d'un SPIP par exemple, tiendra au fait qu'un serveur d'application, c'est plus lourd qu'un environnement de script. Et plus puissant (ZEO, pour les intimes, est packagé en standard à partir de Zope 2.7. C'est un répartiteur de charge applicatif).

            http://www.objectis.org(...)
            • [^] # Re: L'hébergement

              Posté par (page perso) . Évalué à 1.

              C'est vrais qu'a moins de 20 ¤ par mois on commence à avoir une offre intérressante et accessible pour les entreprises.
              • [^] # Re: L'hébergement

                Posté par . Évalué à 1.

                Pas besoin d'attendre : c'est 16 euros par mois sur www.ingenihosting.com pour une qualité professionnelle et une assistance hors pair.
  • # Des interfaces en python

    Posté par (page perso) . Évalué à 5.

    Ce qui me surprend dans cette news, c'est que l'accent est mis sur les interfaces et leur respect, alors que c'est justement un des gros points faibles de python. Peu de moyens de definir des interfaces, pas tres pratiques de forcer des types par defaut, etc etc.

    Je serai curieux de voir commen Zope reussit a rendre ces interfaces robustes.
    • [^] # Re: Des interfaces en python

      Posté par . Évalué à 3.

      Si le sujet t'intéresse, il existe 3 gros projets qui implémentent des interfaces en Python :

      - Zope 3
      http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Fr(...)

      - Twisted
      http://twistedmatrix.com/(...)

      - PyProtocols
      http://peak.telecommunity.com/PyProtocols.html(...)
    • [^] # Re: Des interfaces en python

      Posté par . Évalué à 1.

      C'est étonnant comme on peut apprendre une chose qui me parait aussi - pardon de le dire - énorme au détour d'une phrase. Je ne connais pas python. Mais...pas d'interface? Du coup je regarde en ruby et... pas non plus? En php c'est apparu avec php5 je crois.
      ça m'étonne parce qu'un des mantras des javaistes et autres personnes est: Coder des interfaces pas des classes. ça permet de te libérer de l'implémentation. C'est même devenu pour beaucoup plus caractéristique de l'approche objet que l'héritage.
      Est-ce qu'on parle de la meme chose?
      • [^] # Re: Des interfaces en python

        Posté par (page perso) . Évalué à 4.

        On parle bien de la meme chose. Je suis en train de lire les liens qui ont ete conseilles donc je ne peux pas encore donner une reponse mais en effet, dans le python de base, pas de concept d'interface.

        On peut citer plusieurs caracteristiques qui "compensent" ce probleme:
        1. l'interface n'est pas tout, il faut une suite de test pour valider des composants et donc s'appuyer sur des interfaces plutot que sur des suites de tests conduit a diminuer la qualite de l'implementation. Enfin ca, c'est si tu compenses ton absence d'interface par une bonne suite de test.

        2. Ecrire des suites de tests en python est tres tres facile. Sa caracteristique dynamique fait qu'on peut facilement substituer un objet a tester par un autre qui lui va verifier qu'il est appele correctement.

        Apres avoir lu les quelques liens, je ne suis pas convaincu. Le systeme permet de dire que tu reponds a une interface donnee, mais il ne permet pas en revanche de valider qu'un objet repond a l'interface qu'il indique. Ca me parait moins strict que ce que je souhaiterai niveau test. Mais je n'ai fait que survoler les liens, donc je peux me tromper.
  • # Un autre lien

    Posté par . Évalué à 3.

    Un autre lien pour nos zamis les les zopeurs:
    http://zopeur.org/(...)
  • # Espoir

    Posté par . Évalué à 3.

    Espérons que cette nouvelle version attirera enfin un peu de monde sur cette plateforme, car pour y avoir goûté auparavant, on est souvent seul et la doc date vraiment. Ca a été un frein pour moi, je ne suis pas encore au stade python ou je peux me permettre de fouiller dans le code source pour trouver les finessses.

    SI maintenant on me dit que la doc est à jour, alors...vivement que des mentors tracent un chemin dans cette brousse et que des faqs hémergent. Espérons car je trouve en tout cas que c'est un bel outil.

Suivre le flux des commentaires

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