Accueil > Ressources > Introduction au système d’information implicite à SPIP

Introduction au système d’information implicite à SPIP

mercredi 13 janvier 2010, par Eric Sanjuan

SPIP essaye d’aller au-delà du simple gestionnaire de contenu web en reproduisant l’organisation d’un comité de rédaction. Nous étudions le schéma de sa base de donnée et les flux d’information via ses deux interfaces publique et privée.

Un peu d’histoire ...

Il n’est plus envisageable aujourd’hui d’éditer directement le contenu HTML de ses sites WEB comme cela se faisait lors du lancement de ce langage et des premiers navigateurs par le CERN. D’une part le contenu de ces sites étaient difficiles à actualiser dès qu’ils se complexifiaient un peu, d’autre part l’HTML tout seul ne permet pas de créer des sites dynamiques et interactifs.

Avec la mise en place des interfaces CGI, les pages HTML ont été produites à la demande par des programmes directement sollicités par le serveur Web. Ces programmes pouvant être écrits en n’importe quel langage. Rapidement s’est imposé la nécessité d’organiser les données non pas dans des fichiers, mais dans des bases de données, les programmes CGI devant jouer l’interface entre le serveur Web et les bases de données. Le langage script PERL alors déjà très utilisé dans les systèmes UNIX et LINUX a été parmi les premiers à faciliter la production de fichiers HTML avec des bibliothèques spécifiques tout en permettant l’accès à tout type de base de données.

Les sites WEB sont devenus alors des systèmes informatiques complexes intégrant un serveur de pages HTML, des programmes de production de ces pages, une base de données relationnelle avec toutes les informations nécessaires à le production de ces pages. Ces systèmes pouvant être sollicités par tout type de navigateurs côté client. Évidement ils s’avèrent difficiles à administrer côté technique et sécurité. Une première simplification a été d’intégrer l’interpréteur perl comme un module du serveur web libre Apache, de manière à ce que le serveur contrôle mieux l’exécution des scripts perl. Cependant, le langage perl dépasse de beaucoup l’édition de pages HTML. Ce langage intègre en effet de multiples fonctionnalités du langage C avec les multiples commandes système d’UNIX (shell, sed, awk etc...) elles-mêmes écrites en C et permet l’administration complète d’un serveur UNIX ou LINUX. Est alors apparu le php comme une simplification du perl dédié à la production de pages HTML.

D’autres langages se sont imposés dans le même temps. Parmi ceux qui sont indépendants de la plateforme il y a JAVA, mais qui contrairement au php ne dispose pas d’un interpréteur libre (il est gratuit, mais son code n’est pas ouvert). Aujourd’hui, pour des raisons de rapidité et d’efficacité, on assiste cependant aussi auretour de la programmation en C++ qui reprend l’essentiel de la syntaxe du C en y ajoutant les fonctionnalités orienté objet

Le php reste cependant parmi les langages les plus simples à manipuler, son code et ses spécifications totalement libres, son intégration aux serveurs web libre apache et de bases de données MySQL ont garanti son développement et son succès.
Mais même simplifié, la gestion de contenus d’un serveur Web reste complexe, sont alors apparus des systèmes de gestion de ces contenus (CMS) particuliers, eux-mêmes programmés en php. Le principe de ces systèmes est de mettre en place un site web php adossé à une base de données relationnelle qui permette de créer et administrer ... son propre site web. Ces CMS créent donc par défaut un double site web, l’un public, l’autre privé et plus ou moins bien protégé qui permet de gérer le site public.

Il en existe de multiples. actuellement celui qui joue un rôle majeur dans la presse sur Internet est Drupal. SPIP apparaît plus simple que Drupal car son site privé reproduit directement la structure d’un comité de rédaction avec les outils associés. Si avec Drupal on peut faire tout ce que l’on peut faire en SPIP, le parti pris de SPIP d’organisation des tâches de rédaction du contenu Web reste intéressant en lui même.

Un tour rapide des fonctionnalités de SPIP

Côté site public, par défaut le site offre une navigation par rubrique et sous rubriques, les articles s’affichant par date de parution. On peut adapter cette présentation avec l’utilisation de feuille de style CSS et surtout en modifiant le squelette de présentation. En effet, l’apparence de chaque rubrique est gérée par un fichier de spécifications écrit dans un langage propre à SPIP qui permet de mentionner des éléments de base (titres, sous-titres, liens dynamiques, images, menus déroulants) ainsi que des boucles d’insertion de ces éléments. Ces sites peuvent intégrer des forums de réaction aux articles mais il faut alors gérer la modération de ceux-ci.

Côté privé, on dispose par défaut de :
- une interface de gestion des auteurs et administrateurs du site,
- d’un éditeur de rubriques et d’articles,
- de forums de discussion sur les articles proposés,
- d’une messagerie,
- d’un agenda
- d’un suivi complet de toutes les modifications faîtes sur le site.

Structure de sa base de données

On peut se faire une idée précise du fonctionnement de SPIP à la simple lecture des noms des tables de la base de données sur laquelle il est adossé. Les principales entités de la base de données avec leurs relations apparaissent être les suivantes.

Côté publication
- les auteurs
- les rubriques liées à leurs auteurs administrateurs
- les articles liés à leur rubrique et à leurs auteurs
- les documents liés aux articles

Ainsi il n’y a pas de séparation sur la base de données entre informations publiques et privées. Cette distinction ne se fait que par l’utilisation d’un attribut qui, par exemple, pour les articles indique si il est publié ou pas. Ceci rend quasiment impossible un renforcement de la sécurité basé sur une gestion des droits d’accès aux enregistrements au niveau de la base de données elle-même.

Côté interactivité
- les forums de discussion éventuellement liés à des articles
- les messages éventuellement liés à des forums quand il ne s’agit pas d’annonces
- les éventuelles pétitions ... ce qui renseigne sur l’utilisation privilégié de ce CMS dans un cadre associatif

Il n’y a donc pas de tables dédiés à la gestion de l’agenda. L’agenda apparaît alors comme un simple affichage d’une calendrier à partir duquel on peut accéder aux articles et aux annonces par dates. Ceci limite son utilisation comme un réel outil d’organisation.

Côté suivi du site
- les versions d’articles et de messages
- les fragments modifiés des différentes versions
- les visites éventuellement, liées aux articles lues

Sans intervention de l’administrateur au niveau de la base de données, tout est conservé. Cela signifie qu’un site très actif risque de ralentir au fur et à mesure des contributions. Si l’on peut désactiver le suivi des visites et des versions, il apparaît que les articles s’accumulent quand même.

Pour aller plus dans le détail, chaque article de la sous rubrique SPIP détaille un aspect de cette base de données.