InfoQ FR a rencontré Pierre Levy, le père de Lutece, un CMS open source écrit en Java et utilisé pour de nombreux sites municipaux, notamment paris.fr, marseille.fr, mais aussi Météo France, Géo Portail, Notaires.fr ou e-Bourgogne. Pierre lance en ce moment une série de meetups pour dynamiser la communauté open source autour du produit.
InfoQFR : Bonjour Pierre, peux-tu commencer par présenter Lutèce et son historique ?
Pierre Levy : Bonjour, tout d'abord merci de nous offrir cette tribune pour parler de notre projet. En effet, mon équipe et moi-même sommes à l'origine du développement de cet outil que nous essayons de promouvoir aujourd'hui.
L'histoire de Lutece a débuté en 2001, juste après les élections municipales. A l'époque une très forte volonté d'utilisation des logiciels libres dans l'administration était née du rapport du député Thierry Carcenac. La nouvelle équipe municipale, souhaitant offrir à toutes les mairies d'arrondissement de Paris les outils internet pour dialoguer avec leurs administrés, a ainsi commandé à la direction informatique une plate-forme web entièrement basée sur des logiciels libres. Notre équipe maîtrisait Java depuis plus de 3 ans à l'époque. Nous venions de terminer un gros projet métier très modulaire sur plate-forme Weblogic / Oracle et par ailleurs nous avions fait quelques développements autour du portail Apache Jetspeed. L'expérience acquise sur ce dernier nous a été très utile pour bâtir Lutece. Nous avons choisi de partir d'une feuille blanche et de ne pas retenir Jetspeed comme socle car trop volumineux (intégrant notamment beaucoup de technologies concurrentes : Cocoon, Velocity, JSP…), pas assez orienté utilisateur et un peu instable à l'époque il faut le dire.
Le cahier des charges que nous avons dû respecter imposait la séparation présentation/contenu, l'autonomie complète du webmaster, la modularité des fonctionnalités et l'usage exclusif de briques Open Source.
La première version de notre outil a vu le jour en novembre 2001, la première mise en production en janvier 2002 pour le site de la mairie du 3ème arrondissement. En juin 2002, 18 mairies d'arrondissement étaient équipées de notre outil et les élus, très satisfaits des retours positifs (toutes couleurs politiques confondues), ont décidé de reverser cet outil dans le libre et l'ont baptisé « Lutece ». Ce fut le premier reversement d'un logiciel libre par une entité publique. Le but était clairement d'en faire profiter les autres collectivités, de manière à créer les conditions de partage et de mutualisation des développements au sein des administrations publiques.
InfoQ : Aujourd'hui, face à la pléthore de CMS open source, et notamment Hippo ou d'autres dans le monde Java, quels sont les points forts de Lutece ?
Pierre Levy : Effectivement, depuis novembre 2001 beaucoup de CMS ont vu le jour. Nous sommes aujourd'hui toujours avec Lutece pour plusieurs raisons :
- nous gérons depuis longtemps de nombreux sites (70 en 2004, 180 en 2013) dont la particularité de chacun est d'intégrer une part plus ou moins grande de développements spécifiques. Dès 2007, nous avons monté une plate-forme d'intégration continue autour de laquelle est basée toute notre maintenance. La grande force du dispositif est l'usage que nous faisons de Maven. En effet, tous les composants génériques ou spécifiques sont gérés comme des projets unitaires ayant leur propre cycle de vie. Nos sites ou téléservices sont assemblés par Maven qui prend en charge la gestion des dépendances et garantit ainsi l'intégration. Dans le monde des CMS, il est extrêmement facile de monter un site « from scratch » basé sur des composants génériques. Il est bien plus difficile de maintenir dans le temps des sites ayant des parties applicatives spécifiques, d'autant plus lorsque les mainteneurs ne sont pas les développeurs d'origine.
- la modularité de Lutece et notre plate-forme de développement, basée sur Maven, Continuum, Jenkins et Subversion nous permettent de gérer un grand nombre de projets ayant une part de développements spécifiques. De la même manière, en termes d'urbanisation technique et d'exploitation, ce choix nous permet de gérer plus de 400 instances Lutece avec des effectifs extrêmement restreints.
Voilà donc l'avantage que nous trouvons en interne pour continuer à investir dans Lutece.
Pour de nouveaux utilisateurs qui n'auraient pas la même problématique de gestion d'un parc applicatif, voici selon moi les points forts de Lutece :
- une robustesse et une capacité à monter en charge éprouvées. Par exemple, le site de MeteoFrance.fr accueille plus d'un million de visiteurs/jour ou l'intranet de la Ville de Paris offre des contenus personnalisés aux 30000 postes connectés ;
- une offre de composants métiers pour les collectivités et administrations très importante et qui, nous l'espérons, grandira avec la diffusion de Lutece dans le secteur public ;
- le respect des normes et lois en vigueur pour le secteur public en matière de sécurité et d'accessibilité (RGS, RGAA, CNIL) ;
- des experts francophones, notamment les commiters du noyau, et des documentations en français ;
- un modèle Open Source très ouvert : licence BSD, pas de société éditrice ni de modèle payant ;
- Lutece est aujourd'hui à la fois un framework de développement Java et un socle d'intégration de plugins génériques permettant le déploiement de services complexes sans développement.
InfoQ : Peux-tu nous parler de l'architecture technique ?
Pierre Levy: Lutece est développé en Java et fonctionne avec de nombreuses bases de données MySQL, MariaDB, PostgreSQL, Oracle…
L'architecture technique repose sur un modèle de plugins assez riche en terme de composants. Un plugin Lutece peut comporter une ou plusieurs instances de l'un de ses composants :
- Portlets : bloc de contenu d'une page
- Deamons : traitement d'arrière-plan
- AdminFeature : fonctionnalité du Back Office * Xpage : application Front Office
- PageInclude : inclusion dynamique à mettre dans une page HTML
- PluginFilter ou PluginServlet : Servlet ou filtre de servlet apporté par le plugin
Au niveau du code, nous sommes très vigilants sur la qualité et l’homogénéité du code. Nous essayons également de privilégier des technologies facilitant la maintenance. C'est pourquoi par exemple toutes nos interfaces HTML utilisent le framework de template Freemarker, tous nos services sont injectés via Spring…
Enfin nous proposons un générateur de code, PluginWizard, qui facilite grandement la génération de plugins Lutece.
InfoQ : En termes de contributeurs, comment se répartissent géographiquement les committers ?
Pierre Levy : La communauté est essentiellement francophone aujourd'hui. De nombreux développeurs Sopra Group ou Atos Worldline sont basés en France, à Nantes, Lyon, Marseille ou Lille.
InfoQ : L'un de vos sites est hébergé sur le PaaS de CloudBees et l'un de vos tutoriaux de déploiement montre comment déployer rapidement une prod et un staging sur leur PaaS. Est-ce aussi une tendance pour vos utilisateurs ?
Pierre Levy : L'émergence de solutions PaaS Java telles que CloudBees ou OpenShift de RedHat offre selon moi de réelles et nouvelles perspectives pour le déploiement de sites ou d'applications Lutece. En effet, l'offre en matière d'hébergement a toujours été le gros inconvénient pour la diffusion des applications Java par rapport au monde PHP ou Python. Le plus de la solution CloudBees est de proposer une plate-forme d'intégration continue pilotée par Jenkins et intégrée à leur PaaS. Nous sommes tout à fait dans la même logique de fabrication et dans la même recherche d'un déploiement automatisé pour réaliser du "Continuous Delivery".
Aujourd'hui, peu d'utilisateurs (Lutece) ont encore recours à ce type de plate-forme, mais nous comptons en faire la promotion, notamment dans nos meetups.
InfoQ : Avez-vous pu travailler le côté Responsive Design qui est important aujourd'hui pour un CMS grand public ?
Pierre Levy : Le Responsive Design est aujourd'hui au cœur de Lutece. La version 4.0 sortie en octobre 2012 proposait une refonte totale des interfaces HTML du Back Office sur le framework CSS Bootstrap de Twitter. Je pense que nous étions vraiment l'un des tout premiers CMS à proposer une interface d'administration entièrement Responsive.
Concernant le Front Office, nos templates utilisent également les classes de base Bootstrap de manière à intégrer très facilement toute charte graphique compatible avec ce framework. La gestion des Thèmes propose aujourd'hui plusieurs chartes provenant du site Bootswatch.
InfoQ : Avez-vous une stratégie d'écriture d'applications mobiles natives dédiées, ou avez-vous préféré vous concentrer sur une expérience pure web ?
Pierre Levy : Notre stratégie concernant les applications mobiles natives est de réserver cette technologie à deux cas relativement précis :
des applications grand public riches et nécessitant une expérience utilisateur optimale, par exemple l'application DansMaRue (versions Android et iOS) ;
des applications métiers ayant des besoins de fonctionnement en mode déconnecté avec des contraintes de synchronisation.
pour le reste, le « Responsive Design » offre vraiment d'excellents résultats pour des coûts imbattables.
InfoQ : Et maintenant, sur quoi allez-vous vous concentrer dans les mois qui viennent ? As-tu quelques éléments de roadmap à nous communiquer ?
Pierre Levy : Nos priorités pour les prochains mois :
- généraliser le Responsive Design dans les « téléservices parisiens » et migrer à Bootstrap v3 ;
- étendre l'offre de plugins génériques et métiers autour de plate-forme de guichet usager ;
- poursuivre nos travaux pour industrialiser nos déploiements ;
- mettre en valeur l'offre Lutece (catalogue des plugins, WebappStore, meetups…) afin de promouvoir sa diffusion auprès des intégrateurs et des collectivités.
InfoQ : Est-ce que tu peux nous donner quelques informations sur les meetups à venir pour Lutèce ?
Pierre Levy : L'objectif des premiers meetups est de rentrer en contact avec des développeurs pour leur faire découvrir Lutece et leur donner envie de contribuer à ce projet.
Le premier meetup présentera Lutece dans les grandes lignes (historique, architecture de plugins, etc ) et fera la démonstration d'une installation locale dans un environnement de développement, puis dans un PaaS.
Le second meetup entrera plus précisément dans le code en présentant les différents composants ainsi que le générateur de code.
Nous envisageons de poursuivre par des ateliers, probablement en journée, sur les thèmes suivants :
- comment assembler les principaux plugins génériques. Par exemple, comment monter un téléservice avec son workflow de traitement sans développement ;
- comment démarrer le développement d'un nouveau plugin. Par exemple, chaque participant vient avec son idée, et les architectes Lutece les assisteront dans la conception du plugin.
Les meetups seront a priori filmés et les vidéos rediffusées.
InfoQ : Merci beaucoup Pierre et à bientôt !
Pierre Levy : Merci à vous et rendez-vous au meetup !