# SPIP (logiciel)

SPIP (Système de publication pour l'Internet) est un logiciel libre destiné à la production de sites web. Dans l'offre nombreuse et diverse de systèmes de gestion de contenu, il se distingue par le soin apporté aux standards de l'édition (respect des règles typographiques, organisation des rôles des participants) et par l'attention portée au multilinguisme et aux mécanismes favorisant l'édition collaborative.
Ce logiciel privilégie la simplicité d'installation, d'usage et de maintenance, et il est largement utilisé par des réseaux de personnes, des institutions publiques ou privées.
SPIP est un acronyme signifiant « Système de publication pour l'Internet » ; le dernier « P » est laissé à la libre interprétation de chacun et est souvent traduit par « partagé » ou « participatif », dans la mesure où ce logiciel est particulièrement apprécié pour l'édition collective d'un site. Sa mascotte est un polatouche (écureuil volant). Un utilisateur de SPIP s'appelle un « spipeur ».

## Présentation

SPIP est un logiciel libre de gestion de contenu utilisé par plus de 12 000 sites francophones (2023). On le trouve à la fois sur des sites institutionnels (sites thématiques, de certains services déconcentrés, ministères ou ambassades de France), des sites de presse (le webmestre du journal Le Monde diplomatique est un des initiateurs de SPIP), sur des sites associatifs, universitaires ou sur ceux de particuliers.
Son langage de « squelettes » permet de produire des sites Internet aux fonctionnalités élaborées, tout en restant simple à manipuler avec un niveau modeste en informatique.
Les utilisateurs peuvent s'identifier sur le site public. Ils disposent alors de droits d'édition différents selon qu'ils ont le statut d'« administrateurs », de « rédacteurs » ou de « visiteurs ». Les « administrateurs » et les « rédacteurs » ont accès à l'espace de rédaction du site. Les « visiteurs » peuvent s'identifier sur le site public lorsque c'est nécessaire.

## Technologie

SPIP est un logiciel écrit en PHP qui s'appuie sur la base de données MySQL, mais aussi sur SQLite et PostgreSQL (en version expérimentale). Il peut être utilisé comme « requêteur Web multi-bases » (y compris avec des bases de données distantes).
SPIP est un SGC dynamique : les pages du site sont générées « à la volée » en extrayant les contenus textuels de la base de données et en les mettant en forme au moyen de « squelettes » de présentation. Ces squelettes offrent les fonctionnalités qu'on attend d'un site Internet moderne grâce à un langage de balisage léger qui mêle le HTML à un ensemble de « boucles », de « balises » et de « filtres » documentés dans plusieurs langues sur le site du projet.
Enfin, un système de cache permet à SPIP d'éviter des calculs redondants pour générer les pages : quand une page est demandée par un client web, SPIP vérifie d'abord si elle n'est pas déjà dans son cache pour la faire afficher sans recalculs. La durée de vie d'une page dans le cache est paramétrable dans son squelette de présentation.
SPIP intègre un mécanisme de cache, une authentification, un module d'installation automatique, ainsi qu'une interface d'administration et de saisie des articles.
Le fonctionnement de SPIP requiert un serveur HTTP configuré pour fonctionner avec PHP ainsi que 150 Mo d'espace disque (hors base de données) et 128 Mo de mémoire RAM.

## Sites utilisateurs

SPIP est à l'origine créé pour le site uzine.net, puis les créateurs décidèrent de le livrer sous licence GPL. Dès son lancement en 2001, il est également utilisé par Le Monde diplomatique, Vacarme et Reporterre. En 2023, SPIP propulse plus de 13 500 sites.

## Versions

Le « noyau » des développeurs est constitué depuis 2001 par :
* ARNO* (Arnaud Martin), créateur de SPIP pour le site uZine 2. Initialement webmestre, graphiste, « PAOiste ».
* Antoine (Antoine Pitrou), informaticien. A rejoint SPIP par intérêt pour l'outil et pour uZine.
* Fil (Philippe Rivière), journaliste et technicien. A adopté SPIP pour répondre aux besoins du Monde diplomatique.
* ESJ (Emmanuel Saint-James), enseignant-chercheur, membre coopté dans le groupe fondateur.
* Une communauté active, essentiellement française, maintient les évolutions fréquentes du logiciel dans une ligne de compatibilité et d'ouverture.
Début 2003, la version 1.6 décline l'interface d'administration du site (dite interface "privée") en plusieurs langues. Un espace des traducteurs est mis en place afin de multiplier le nombre de versions disponibles automatiquement.
En janvier 2004, la version 1.7 de SPIP gère les sites multilingues, comprend un module de recherche et d'indexation du contenu, et incorpore le contenu d'autres sites via la syndication. En juin, un fork très controversé$^,$, SPIP-Agora, est annoncé sur le site de l'ADULLACT (il est officiellement arrêté en 2008).
En avril 2005, l'interface privée de la version 1.8 est remaniée afin de prendre en compte l'analyse ergonomique effectuée par Diala Aschkar dans le cadre de son mastère$^,$. Une modification importante pour les développeurs voit également le jour avec cette version : le cœur de SPIP est désormais constitué d'un nouveau compilateur qui, par sa richesse, ouvre le champ à de nouvelles perspectives. Il devient alors possible d'élaborer des squelettes aux fonctionnalités de plus en plus complexes sans aucun recours à PHP.
La version 1.9 (1er juillet 2006), repérable par une réorganisation complète des fichiers et le passage des extensions de fichier de .php3 vers .php, amène de nombreux changements, dont certains ne seront vraiment finalisés qu'avec les versions 1.9.1 et 1.9.2. En particulier sont introduits un système de plugin, et des filtres de traitements d'images. Les squelettes livrés par défaut sont plus homogènes, et suivent les standards du W3C.
La version 1.9.1 fournit un système de modèles, à la manière de ceux existant dans la syntaxe wiki de MediaWiki, et utilise AJAX assez systématiquement dans l'espace privé.
La version 1.9.2 achève la réorganisation des répertoires, ce qui permet à une même distribution de SPIP de servir à tous les utilisateurs d'un même hébergeur. Elle s'enrichit de la bibliothèque JQuery, et intègre un validateur XML original. Un outil d'aide à la traduction complète cette nouvelle avancée.
La version 2.0 se veut à la fois le système de publication habituel et une plate-forme de développement plus générale. SPIP devient notamment utilisable sur plusieurs serveurs SQL différents, grâce à une interface unifiée spécifique. Il introduit un modèle dit CVT (Charger, Vérifier, Traiter) permettant d'écrire plus facilement des formulaires, éventuellement en AJAX. Au même titre que le site affiché au public, l'espace d'administration du site peut être redéfini et personnalisé, notamment à l'aide du langage des squelettes de SPIP.
La version 2.1 offre un système d'extensions (plugins non désactivables depuis l'interface privée) et transfère certaines fonctionnalités du noyau de SPIP en extensions. La voie est ainsi ouverte pour proposer des distributions fortement personnalisables du logiciel. Elle n'est plus maintenue depuis fin 2017, et ne reçoit plus de correctifs de sécurité.
La version 3.0 sort le 19 mai 2012, et achève la découpe du logiciel en plugins comme SPIP 2 l’avait amorcée. L’ensemble des fonctionnalités proposées par SPIP 2 repose dorénavant sur un noyau SPIP 3 accompagné de 23 plugins. La découpe complète du noyau complète ses API et points d’entrée pour les développeurs de plugins. De plus, l’ensemble de l’espace privé de SPIP a été recodé en squelettes, sur la base des outils et fonctions proposés par le langage de squelettes de SPIP. Cette remise à plat de l’espace privé est l’occasion de repenser le fonctionnement des objets éditoriaux et de normaliser leur usage pour le rendre le plus générique possible. La création de nouveaux objets éditoriaux et la personnalisation des objets existants deviennent ainsi beaucoup plus faciles et plus rapides. SPIP 3 introduit une nouvelle boucle DATA qui permet enfin de boucler sur tout type de données et non plus seulement sur les tables SQL. Elle n'est plus maintenue depuis fin 2017 et les correctifs de sécurité ne sont plus appliqués depuis 2019.
La version 3.1 sort le 9 janvier 2016. Elle offre des mises à jour des bibliothèques Javascript, des styles CSS par défaut, des améliorations de l'espace de rédaction, de nouveaux outils pour la rédaction des squelettes, de l'amélioration des performances et de l'écriture du code. Cette version n'est plus maintenue depuis 2019, elle ne reçoit plus que les correctifs de sécurité.
La version 3.2 sort le 13 octobre 2017. Elle comprend une mise à jour des bibliothèques JavaScript embarquées, la compatibilité de la version 7.1 de PHP, et diverses améliorations concernant notamment l'ergonomie de l’espace privé ou la gestion des plugins. Cette sortie s'accompagne d'un nouveau visuel et de la refonte graphique des sites de la communauté.
Alors que les versions 3.1 et 3.2 sont mises à jour au cours du mois d'avril 2021, la version 4.0 sort le 9 juillet 2021. Elle comprend plusieurs nouveautés telles que : une optimisation de la taille du CMS, le support de PHP 7.3, 7.4 et 8.0, une meilleure ergonomie de l'espace privé, une gestion simplifiée et standardisée des images, l’intégration de la bibliothèque Javascript Sortable.js, une nouvelle boîte modale basée sur Lity, la suppression de l'option « se limiter au HTML 4 » pour l’espace public et l'adoption du HTML 5 pour les squelettes par défaut.
Les versions 3.12.2 et 4.0.1 sortent le 15 décembre 2021.