Antoine Pitrou (pitrou@free.fr) est co-développeur de SPIP, un système de gestion de contenu à tendance éditoriale (site du mois d'aout sur PHPIndex). Il a bien voulu répondre à nos questions et nous en dit plus sur les origines, l'architecture et les axes de développements futurs de SPIP.

- Pouvez-vous nous présenter le service que vous proposez sur le Web ?

SPIP est un système de publication écrit en PHP et disponible en GPL au même titre que daCode ou d'autres systèmes. Il est installable sur n'importe quel hébergeur proposant PHP et MySQL. Nous sommes principalement deux à développer SPIP (Arno et moi), plus quelques contributeurs réguliers. La première version publique est sortie début juillet 2001. La version actuelle porte le numéro 1.0.6. SPIP a été programmé à l'origine pour répondre aux besoins d'uZine, et il fut prévu assez tôt de le distribuer afin d'inciter au développement de l'auto publication de sites généralistes structurés. Depuis, SPIP a pris son indépendance vis-à-vis d'uZine, et les développements se font dans le sens de la plus grande polyvalence possible.

Enumérons quelques caractéristiques de SPIP : gestion collaborative d'un site Web (multi-rédacteurs et multi-administrateurs) ; interface graphique simple et intuitive, y compris pour les fonctions d'administration et de maintenance ; définition d'une navigation complexe à l'intérieur du site (arborescence de rubriques, mots clés, moteur de recherche intégré) ; un système de squelettes HTML (ou templates) permettant de définir sa propre mise en page (il ne s'agit pas simplement d'une personnalisation à la PHPNuke) ; un système de cache des pages générées afin de conserver un site rapide et d'économiser les accès à la base de données ; une correction typographique automatique et des raccourcis de mise en page à l'intérieur de tous les types de textes gérés par SPIP (articles, brèves, forums...).

- Quelques références ?

Les deux références historiques sont uZine (http://www.uzine.net/), pour lequel SPIP a été conçu initialement, et Le Monde diplomatique (http://www.monde-diplomatique.fr/), qui utilisait déjà SPIP quelques mois avant sa sortie officielle et a permis de tester ses performances avec beaucoup d'articles et de visites.

Sinon, en vrac :

• Vacarme (http://vacarme.eu.org/)
• Samizdat (http://infos.samizdat.net/)
• Hacktivist News Service (http://hns.samizdat.net/)
• Easter-Eggs (http://www.easter-eggs.org/)
• Gasteroprod (http://www.gasteroprod.com/)
• L'Agitateur (http://www.agitateur.org/)
• LinuxFrench (http://www.linuxfrench.net/)
• Etc.

On a aussi entendu dire que SPIP était utilisé sur des intranets de sociétés diverses, mais sans retour direct sur le sujet.

- Votre application est très orientée "presse", pourquoi ?

Initialement, SPIP a été écrit pour répondre aux besoins d'uZine, c'est-à-dire un site structuré (non simplement un fil d'informations), géré de façon collaborative par des administrateurs et où quiconque peut s'inscrire en ligne pour recevoir le statut de rédacteur et proposer des articles. De même, la gestion typographique automatique et les raccourcis de mise en page sont indispensables pour avoir un site lisible sans trop mettre à contribution les auteurs des articles. Par la suite, Le Monde diplomatique et Vacarme passèrent à SPIP car les capacités du logiciel les attiraient ; leur passage sous SPIP, en retour, a conduit à de nouveaux besoins (notamment les mots clés pour Le Monde diplomatique) qui ont influé sur les directions de développement.

SPIP est donc orienté "webzine" ou "magazine" car c'est le type de site pour lequel ses caractéristiques le rendent particulièrement efficace. Mais le terme "presse" peut paraître suggérer qu'il s'agit d'une application nécessitant beaucoup de temps, de ressources et de compétences pour le faire tourner, à l'instar de beaucoup d'applications "professionnelles", ce qui est faux ; au contraire, l'accent est mis sur la facilité d'installation et de gestion du site, et l'optimisation des performances (qui permet de faire tourner SPIP sans problème chez des hébergeurs gratuits).

Les fonctionnalités de SPIP, si elles se sont développées dans un certain sens, n'empêchent pas de l'utiliser pour un site autre que de "presse". Qui peut le plus peut le moins ! Ainsi, la possibilité de définir une arborescence de rubriques n'empêche pas de mettre toutes les rubriques au même niveau si l'on en a envie ; de plus, nous faisons attention à ce qu'aucune nouvelle fonctionnalité n'alourdisse l'outil ou ne le rende difficile à maîtriser. Toutes les fonctionnalités évoluées peuvent d'ailleurs être désactivées dans la configuration.

- Vous vous détachez très nettement de la mouvance PHPNuke, DaCode, (...), vous les connaissiez ?

Pas beaucoup au début, mais nous savions déjà que ce n'était pas ce que nous voulions faire. Premièrement à cause de nos pré requis (les fonctionnalités d'uZine). Deuxièmement parce que cela existe déjà, et que ça fonctionne plutôt bien (PHPNuke est une usine à gaz mais bénéficie d'une communauté impressionnante, DaCode semble extrêmement bien conçu). Troisièmement, surtout, la philosophie de ces programmes ne nous convenait pas. Ainsi, la composition des pages est contrainte ; le nombre de sites Web "en trois colonnes" est un peu déprimant, surtout quand rien dans la philosophie d'un site ni dans son contenu ne justifie une présentation telle que celle offerte par PHPNuke. De plus, ces programmes sont clairement orientés vers la présentation chronologique de "news" ; systématiquement, quand on veut chercher une ancienne information ou simplement se balader au hasard dans un de ces sites, on a du mal à s'y retrouver (et je ne parle pas du nombre de liens différents affichés par page du site).

Ces systèmes sont très bien pour mettre en ligne des tonnes d'informations à péremption rapide, beaucoup moins quand il s'agit d'organiser et de présenter clairement des articles de manière durable. Par contre, le côté "communauté" y est très développé, mais ça ne faisait pas partie de nos pré requis : un site public sous SPIP se contente de forums, l'espace réservé aux rédacteurs permettant des interactions un peu plus riches (surtout dans la version 1.2 qui va bientôt sortir).

- Pouvez-vous nous expliquer les raisons de votre choix du PHP ?

Parce que c'est le langage de script le plus largement répandu, et de loin, chez les hébergeurs grand public. Les caractéristiques intrinsèques de PHP (simplicité, richesse), même si elles sont excellentes, ne rentrèrent pas vraiment en ligne de compte car Arno et moi ne connaissions pas PHP avant de commencer à travailler sur SPIP.

- Je regrette que vous ne proposiez pas plus de squelettes en lignes, est-ce prévu ?

Le principe de base est que les webmestres qui réalisent des squelettes originaux peuvent nous les envoyer pour qu'on les mette en ligne. Malheureusement, nous n'avons pas eu beaucoup de retour de ce côté-là pour l'instant. On va essayer de faire en sorte que le message passe mieux.

D'autre part, de temps en temps, nous créons un nouveau jeu de squelettes spécifiquement pour le distribuer, mais il est bien évident que nous n'avons pas le temps d'en faire des dizaines...

- Avez-vous rencontré des problèmes lors du développement ou du déploiement de votre site ? Si oui, comment les avez-vous résolus ?

Les principaux problèmes furent et sont toujours liés à la portabilité de SPIP, à cause notamment de la méthode d'authentification choisie (authentification HTTP plutôt que par cookies). D'une manière générale, si la documentation officielle de PHP est très bien écrite et suffisante dans la plupart des cas, certains détails ne sont absolument pas documentés, notamment côté fonctionnement interne ou compatibilité. Par exemple sous Windows, la fonction crypt() ne marche pas sous toutes les versions de PHP, sans que l'on sache pourquoi.

- Des versions tirant partie des apports de PHP4 ou supportant d'autres SGBD sont-elles prévues ?

Il y a deux axiomes de base au développement de SPIP. Premièrement, SPIP doit tourner sans problème sous PHP3 et MySQL. Deuxièmement, on ne fait pas de déclinaison spécialisée de SPIP pour telle ou telle spécifité de configuration.

Cela veut dire que si on utilise des fonctionnalités PHP4, ce sera relativement limité afin de ne pas pénaliser ceux qui sont en PHP3. C'est déjà le cas : une fonctionnalité de l'espace privé (sélectionner les mots clés en les tapant de façon approchée) nécessite une fonction introduite dans PHP4 (la fonction levenshtein, pour les spécialistes). D'autre part, à partir de la version 1.2, la compression des pages est déclenchée automatiquement si cette fonctionnalité est disponible. Il y a donc une détection de version pour effectuer la discrimination, et désactiver ces fonctionnalités si nécessaire. De même pour les modules additionnels. Certains peuvent être utilisés s'ils sont installés (par exemple la ZLib pour générer des archives compressées lors de la sauvegarde de la base de données). Mais SPIP doit fonctionner normalement sans ces modules (à l'exception du système de gestion de base de données bien sûr). Par exemple, pour le XML, qui est le format utilisé pour la sauvegarde et la restauration de la base de données, on ne peut pas utiliser un parser installé sous forme de module optionnel, nous avons donc développé quelques routines basiques en PHP.

Pour les bases de données, le problème est légèrement différent et se pose en plusieurs points. D'abord, on devra ajouter une couche d'abstraction SGBD à SPIP (pour l'instant, tout est codé en dur pour MySQL). Ensuite, il faudra modifier la syntaxe des requêtes qui ne passeraient pas sous tous les SGBD. Enfin, il est souhaitable d'optimiser la base et les requêtes pour chaque SGBD. C'est un gros travail qui n'est pas prévu dans un proche avenir.

- Qu'avez-vous prévu pour promouvoir votre outil ?

On compte surtout sur le bouche-à-oreille, et la visibilité de gros sites utilisant SPIP. Si cela suffit, c'est un signe que l'outil permet de satisfaire des besoins. On ne cherche pas la médiatisation à tout prix.

Ceci dit, une de nos principales préoccupations après la 1.2 sera d'internationaliser SPIP, pour sortir au minimum une version en anglais. Il y aura pas mal de boulot sur la traduction du logiciel, et surtout de la documentation.

- Comment expliquez-vous le succès grandissant de PHP ?

C'est un bon langage, riche en fonctions haut niveau, facile à apprendre, avec une syntaxe cartésienne très agréable, à la fois concise et explicite. PHP4 l'a rendu relativement rapide, en tout cas suffisamment pour ce à quoi il est destiné. De plus, il y a une vraie "dynamique de succès", puisque le nombre d'hébergeurs proposant PHP incite les gens à s'y mettre, ce qui en retour alimente la production de nouvelles extensions, de nouvelles fonctionnalités....

Les entreprises ont l'air de s'intéresser de plus en plus à PHP (Java étant lourdaud et VBScript faiblard) ; j'espère cependant que les perspectives de rentabilité ne vont pas détourner PHP de ses objectifs initiaux (voir Zend et sa gamme de produits propriétaires, "additifs" au PHP de base en logiciel libre). D'autre part cet intérêt des entreprises a tendance à importer certaines lubies technocentriques (aussi appelées "technologies") ; il suffit de voir le nombre de sites sur PHP qui se gargarisent de XML et de programmation orientée objet sans chercher d'abord à savoir où vont leur être utiles le XML et l'orientation objet. Et je ne parle pas d'usines à gaz
comme XSL...

- Que nous préparez-vous en PHP en ce moment ?

La version 1.2 de SPIP devrait prochainement sortir. Elle inclura un moteur de calcul des pages plus rapide (grâce à un système de cache à deux niveaux), une messagerie interne pour faciliter les discussions entre rédacteurs, et diverses fonctionnalités comme la possibilité d'attribuer les droits d'administrateur pour des rubriques spécifiques.

Merci Beaucoup Antoine de nous avoir consacré un peu de temps.

SPIP
uZine2
Article de 01.net
Le Monde diplomatique