Comparaison SPIP Drupal

Cette synthèse de comparaison (orientée, écrite par une SSLL nantaise) permet déjà une bonne approche des fonctionnalités attendues pour construire un CMS collaboratif.

Toutefois, il me semble que cette analyse omet complètement le volet des extensions, c’est-à-dire la capacité (et facilité [1]) de DEVELOPPER une nouvelle fonctionnalité, ce que SPIP appelle des Plugins, en particulier avec Utiliser la fabrique, ni celui des migrations ou des performances...

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SPIP propose nombre de fonctionnalités similaires à Drupal, mais l’interface d’administration est différente, et il est possible de permettre aux habitués de SPIP de se retrouver bien plus facilement dans Drupal uniquement en ajustant cette interface.

Drupal augmente ses fonctionnalités grâce à des modules comme SPIP permet l’intégration des plugins : certaines fonctionnalités disponibles nativement dans SPIP nécessitent l’ajout dans Drupal de modules issus de la communauté (tout comme de nombreuses fonctionnalités natives de Drupal nécessitent des plugins additionnels dans SPIP).

On essaiera donc de traiter les principaux plugins dans cet article, car comparer les 2 CMS en regardant uniquement le core n’a pas de sens : quasiment aucun projet réel ne se contente d’utiliser les CMS sans leur ajouter des fonctionnalités.

À noter que l’auteur se concentre ici sur les fonctionnalités de SPIP qui n’existent pas dans Drupal, le propos de cet article n’est pas d’illustrer les fonctionnalités que Drupal ajoute. Ce n’est en aucun cas une critique de Drupal ou de SPIP. Les deux sont de bons CMS qui répondent à un besoin ciblé, et la différence entre leurs interfaces et fonctionnalités vient directement de leur objectif (et de leur public-cible privilégié) : même si on peut réaliser n’importe quel site avec l’un ou l’autre, SPIP est orienté pour être nativement un site éditorial avec plusieurs auteurs, Drupal est destiné à la création de sites plus "ambitieux" (selon les termes du créateur de Drupal Dries Buytaert), et manque dans le cœur d’outils que SPIP va proposer en standard, par exemple.

Enfin, ex-fans de SPIP, vous trouverez à la fin de cet article SPIP 4 Drupal, un module Drupal qui vous permet d’adapter l’administration de Drupal (en termes d’interface des menus disponibles) pour ressembler plus à celle de votre CMS préféré.

 Installation et initiation

L’installation des deux logiciels est relativement similaire (sans parler de la facilité spip_loader. Je ne connaissais pas SPIP et j’ai (naïvement) tenté d’accéder à la page d’accueil du CMS : j’ai obtenu un message d’erreur "Spip non installé". Il suffit en fait d’accéder à la page "/ecrire", page d’administration. Je préfère l’approche de Drupal qui redirige vers l’interface d’installation sur un site non installé. Cela dit, soyons honnête, ça n’est opérationnel que depuis la 8.3 ;-)

Une étape intéressante durant l’installation de SPIP est la possibilité de se raccorder directement à un annuaire LDAP : ce n’est pas à proprement parler un manque dans Drupal (ou Wordpress, par exemple), la proportion de sites connectés à un LDAP n’étant pas si grande que ça, mais pour un CMS qui ambitionne les sites "ambitieux", c’est un ajout que je trouve intéressant.

Dans Drupal, cette fonctionnalité est couverte par l’ajout d’un module issu de la communauté, le module LDAP. Attention, il est composé de nombreux sous-modules pour couvrir un éventail de possibilités.

La page de bienvenue (page affichée immédiatement après l’installation du site) est clairement une force de SPIP par rapport à Drupal (ou plutôt une faiblesse de Drupal, puisque SPIP se comporte ici comme de nombreux CMS) : SPIP propose en effet un tableau de bord et une indication sur les premières modifications ou contributions à effectuer sur le site : changer le nom / slogan / logo du site, mais également publier son premier contenu ; en cliquant sur la croix, un menu se met en surbrillance, et un clic sur le bouton dans le coin en bas à droite fait disparaître le bloc.
Une fois des contenus créés, cet écran d’accueil affiche plutôt les derniers contenus et les rubriques du site. Cela permet aux nouveaux utilisateurs de se familiariser progressivement avec le CMS.
La fonctionnalité qui se rapproche le plus de cette aide en Drupal est la notion de didacticiel, fournit par le module Tour intégré au back-office de Drupal 8. Malheureusement, cette fonctionnalité n’est disponible que pour quelques modules, comme l’interface de Views et la traduction de Drupal, et n’est pas affichée sur la page de bienvenue.
Si vous souhaitez d’ailleurs créer des didacticiels sur votre site, vous pouvez ajouter le module Tour UI issu de la communauté qui vous donne accès à la configuration des didacticiels, sinon, c’est juste une API pour les développeurs.

N.B. : Aucune allusion n’est apportée à la courbe d’apprentissage, les difficultés qu’un novice doit surmonter pour mettre en pratique et réaliser son site...

Il est également possible d’ajouter des blocs dans Drupal pour alimenter un tableau de bord, que nous pourrions créer par exemple sur la page "code>/ecrire, c’est ce que nous ferons dans notre module SPIP 4 Drupal.

 Gestion des utilisateurs

Il y a peu de différences au niveau de l’administration des utilisateurs, si ce n’est que Drupal ne contient aucun rôle par défaut. SPIP est orienté "rédaction de contenu", et contient par défaut différents rôles "auteur". À noter que dans Drupal, il est possible (et même courant) d’affecter plusieurs rôles à un même compte utilisateur, contrairement à SPIP. Ce sont ces rôles qui contrôlent l’ensemble des permissions des utilisateurs. Pour assurer cette fonctionnalité de SPIP, il suffit de créer un nouveau rôle (People / Rôles / Ajouter un rôle) et de lui affecter des permissions (People / Permissions).

La création d’un utilisateur SPIP permet également de lui affecter une rubrique, partie du site dont il est responsable. Cette notion n’existe pas de base en Drupal, mais l’ajout du module Workbench Access permet de simuler cette fonctionnalité : on peut alors indiquer des "éditeurs" d’une partie du site, qui n’ont le droit de modifier l’arborescence ou les contenus de cette partie uniquement :e n plus, SPIP est orienté "blog multi-utilisateurs", et chaque rédacteur dispose d’une biographie et d’une photo. dans Drupal, seule une image est ajoutée par défaut mais il est possible d’ajouter des champs aux comptes utilisateur (Configuration / Paramètres de compte / Gérer les champs).

Chaque utilisateur dispose aussi nativement d’un formulaire de contact, ce qui est également le cas avec une installation standard de Drupal (Configuration / Paramètres de compte)...

Enfin, SPIP met en place un forum interne et une messagerie privée entre les rédacteurs inscrits, connectables au mail. Là encore, il est possible d’implémenter cela dans Drupal, en ajoutant le module Private Message en Drupal 8, qui ne semble à l’heure actuelle pas complètement fonctionnel, ou Privatemsg en Drupal 7, qui fonctionne parfaitement.

 Gestion du contenu

Ici, on retrouve à nouveau le fait que SPIP est nativement orienté pour la contribution éditoriale, et de nombreuses fonctionnalités sont disponibles dès l’installation, là où Drupal doit les chercher dans les modules communautaires.

Chaque page, quelle qu’elle soit, propose de recevoir une image de logo [2]. Dans un Drupal installé avec le profil d’installation "standard", comme c’est souvent le cas pour ceux qui testent le CMS, c’est le cas du type de contenu "Article", mais ce n’est pas le cas du type de contenu "Page". Il faudra éventuellement lui ajouter un champ "Image" (mais c’est faisable directement dans l’interface (Structure / Types de contenu / Page / Gérer les champs).

Les contenus sont associés à un workflow de publication par défaut. Pour obtenir le même résultat avec Drupal, il vous suffira d’activer le module Content Moderation, et de le configurer (Configuration / Workflows / Workflow).

SPIP inclut une médiathèque de base. Cela dit, les images ajoutées en "logo" des articles ne sont pas directement liées à cette médiathèque, contrairement aux images ajoutées en "portfolio" (mais un grand chantier de refonte des médias est prévu pour la version 3.3 de SPIP, et ce problème sera traité). Drupal fonctionnant uniquement avec des "champs" image, toute image est donc forcément centralisée dans la médiathèque, ce qui semble un peu plus intuitif (cela dit, selon votre configuration, vous ne pouvez pas forcément récupérer facilement une image depuis cette médiathèque).

Il est possible de planifier la publication des contenus peut également être planifiée, ce qui correspond exactement au module Drupal Scheduler, issu de la communauté.

En termes de contenu rédactionnel, l’installation de SPIP permet d’utiliser plus directement le choix de champs classiques (sur-titre, chapô…PS) qui n’existent pas dans Drupal, mais il suffit de les créer dans l’interface classique de gestion des champs (Structure / Types de contenu / Gérer les champs).

En SPIP dans les squelettes par défaut, des éléments de navigation sont déjà présents dans les squelettes par défauts : notamment, les rubriques affichent la liste de leurs articles sous leur contenu. On constate également que les pages filles ou sœurs sont affichées dans une colonne à droite du contenu principal de la page. Enfin la gestion des mots-clés (à ne pas confondre avec la recherche textuelle des mots), est une fonctionnalité nativement disponible et très performante, trop peu souvent utilisée mais rapidement indispensable dans un site de quelque importance.

Toutes ces fonctionnalités sont réalisables nativement en Drupal, mais ne sont pas directement disponibles. Vous devrez utiliser une combinaison de Views [3] (module de listing qui permettra de réaliser les rubriques) et de Blocs (pour afficher les sous-menus des rubriques ou les pages sœurs).

Pour faciliter la création de ces rubriques, on peut utiliser le module Views Menu Node Children, qui liste les contenus d’une entrée de menu.

À noter : dans ces listes de Drupal, les articles sont triés par défaut par date de publication décroissante, et seule la modification du plan du site permet de changer cela, alors que modifier l’ordre de tri, voire y rajouter pagination ou des tris alternatifs ne demande q’un ajout limité aux squelettes de SPIP.

 Autres fonctionnalités

Un système basique de statistiques de consultation est disponible dès l’installation de SPIP. Ce système n’existe pas vraiment en Drupal : le plugin de SPIP offre notamment la possibilité de consulter les statistiques sous forme de graphiques, ce que ne fournit pas du tout le trop basique module "Statistics" du cœur de Drupal.

La plupart des sites Drupal installent en effet les modules communautaires "Google Analytics" ou "Piwik/Matomo" (afin de déporter ces statistiques sur un outil externe).

Pour imiter SPIP et permettre la consultation de statistiques directement sur le site, la solution la plus prometteuse semble être l’installation du module Simple analytics (uniquement pour Drupal 8)...

- Installation de plugins depuis l’interface
Même s’il est possible d’installer un module depuis l’interface de Drupal, aucun "navigateur de plugin" n’est prévu pour faire son choix depuis son site : il faut passer par drupal.org. C’est une demande récurrente dans Drupal, depuis de nombreuses années, il y a un travail en cours, mais bien malin qui peut dire quand ou si ça finira dans le cœur de Drupal.

- Moteur de recherche
Les deux CMS incluent nativement un moteur de recherche, dont les fonctionnalités semblent similaires.

À noter que dans Drupal, les sites les plus conséquents auront tendance à intégrer un moteur de recherche externe (notamment ApacheSolr ou Elasticsearch) et à l’intégrer par l’intermédiaire de la suite de modules Search API.

- Collaboration entre les rédacteurs
SPIP comprend plusieurs outils permettant la collaboration entre les rédacteurs : un forum interne (implémentable avec le module Forum de Drupal (probablement couplé au module Forum Access pour limiter l’accès au forum aux seuls utilisateurs authentifiés)), un calendrier et une messagerie.

 Plugins SPIP

- Plugins du cœur
Nous allons aborder dans ce paragraphe les quelques plugins natifs en SPIP dont nous n’avons pas déjà parlé.

  • Brèves : Ici, pour simuler la fonctionnalité de brève, il y a plusieurs étapes : d’abord créer un nouveau type de contenu "brève" (Structure / Types de contenu / Ajouter un type de contenu), puis générer un bloc listant les dernières brèves, grâce au module Views ;
  • Compresseur : c’est natif et configuré par défaut sur Drupal 8 (Configuration / Développement / Performance) comme sur SPIP [4]
  • Dump : en tant que professionnel, l’auteur initial pense que c’est de la responsabilité de l’hébergeur de réaliser cette fonctionnalité, alors que SPIP en propose l’accès directement dans l’interface privée pour Sauvegarder sa base de données SPIP (sans oublier les squelettes à Sauvegarder SPIP). Cependant, le module existe dans la communauté Drupal : Backup and Migrate ;
  • Images : quelques filtres sont disponibles dans le cœur de Drupal (Configuration / Media / Styles d’images) et il est possible d’en ajouter (beaucoup) d’autres en utilisant le module communautaire Image Effects (port Drupal 8 du module Drupal 7 ImageCache Actions) ;
  • jQuery UI : inclus nativement dans Drupal comme dans SPIP
  • MediaBox : ce type de fonctionnalité est couvert par nombre de modules communautaires, citons Colorbox pour le plus utilisé actuellement ;
  • Medias : la gestion des Images et Multimédias en Drupal 8 est aujourd’hui couverte par toute une suite de module, voir la documentation sur drupalmedia.org, à minima Media Entity (qui est plus ou moins dans le cœur de Drupal à partir de la 8.4.x), Entity Browser (pour la médiathèque) et Entity Embed (pour l’insertion dans l’éditeur de texte riche) ;
  • Mots : le module Taxonomy du cœur de Drupal couvre la fonctionnalité (il est possible dans SPIP d’utiliser des plugins comme Polyhiérarchie ou Rôles pour administrer d’autres regroupements de contenus) ;
  • Organiseur (Outils de travail éditorial en groupe) : cette fonctionnalité n’existe pas vraiment dans le monde Drupal, même si des modules (comme la distribution Open Atrium) ont pu éventuellement reproduire ce type de gestion de tâches ;
  • Pétitions : Il n’y a pas d’équivalent Drupal, on pourrait probablement arriver à quelque chose d’approchant avec le module Entity Registration pour Drupal 7 ou RNG pour Drupal 8 ;
  • Plan du site dans l’espace privé : cette fonctionnalité existe de façon beaucoup plus complète en Drupal 8, c’est ce qu’on appelle le Menu (Structure / Menus) et cela permet de gérer plusieurs menus : le menu principal, bien sûr, mais également le menu de pied de page et d’autres, chaque menu fournissant un bloc que l’on peut placer où l’on souhaite dans la charte graphique du site. En fait, le module "Menu" de Drupal couvre à la fois la fonctionnalité de "plan du site" de SPIP et le plugin "Menus". La confusion peut venir du fait qu’en Drupal, c’est le même terme qui est utilisé indifféremment pour l’une ou l’autre fonctionnalité, tandis que SPIP distingue les deux : le "menu" est l’affichage dans la charte graphique, tandis que le "plan du site" est la fonctionnalité de classement des contenus dans des rubriques.
  • Porte plume : depuis Drupal 8, un éditeur de texte riche est présent dans le cœur de Drupal, et la communauté a choisi d’utiliser CKEditor ;
  • Révisions : la gestion de révisions est native dans le cœur de Drupal, on veillera cependant à ajouter le module Diff pour fournir une expérience d’utilisation optimale ;
  • SafeHTML : l’utilisation de Twig par Drupal 8 permet de couvrir nativement cette fonctionnalité ;
  • Sites : la syndication est native en Drupal, la récupération de RSS aussi (via le module du cœur Aggregator) ;
    -* Squelettes par Rubrique : c’est également natif en Drupal (cela s’appelle les Templates Suggestions) ;
    -* TextWheel : cette fonctionnalité de réécriture de texte semble correspondre à la fonctionnalité de "filtre" de Drupal (Configuration / Rédaction de contenu / Format de texte et éditeurs) ;
    -* Urls Etendues : il est possible en Drupal de réécrire les URLs de chaque contenu, mais pour ajouter une administration centralisée, on utilise régulièrement le module communautaire "Pathauto" ;
  • Vertèbres : ce mini "phpMyAdmin" (ou sa version récente Adminer) est assez intéressant mais ne semble pas apporter une énorme valeur ajoutée pour un développeur qui peut accéder directement à la base de données. Il n’y a pas spécialement d’équivalent Drupal.

Plugins les plus utilisés par la communauté
Les principaux CMS augmentent aujourd’hui leurs capacités natives par l’ajout de modules ou plugins issus de leurs communautés respectives, et SPIP ne fait pas exception à la règle. Paradoxalement, certains de ces plugins externes sont inclus dans le cœur de Drupal, indiquant ainsi que Drupal devient un choix intéressant dès que la complexité du site augmente, alors que SPIP sera plus rapidement mis en place et complètement opérationnel sur les sites plus simples.

J’ai regardé les principaux plugins utilisés sous SPIP (d’après le site SPIP Plugins), pour essayer de leur trouver un équivalent dans la communauté Drupal :

  • Facteur : ah, le classique problème de l’envoi de mail… là encore, de nombreux modules existent dans la communauté pour enrichir l’envoi de mail natif de Drupal. On peut naturellement intégrer la bibliothèque PHPMailer comme SPIP, via le module éponyme, le module SMTP, et on utilise de plus en plus fréquemment le module Swiftmailer pour l’envoi de mails HTML ou avec des pièces jointes ;
  • Accès restreint : de nombreux modules peuvent être utilisé pour couvrir ce besoin, on peut citer Content Access, ou Group ;
  • Crayons : permettant une édition rapide de contenu, ce module semble correspondre au module Drupal "Quick Edit", inclus dans le cœur D8 :

Quick Edit

  • Saisie pour formulaires : ce plugin correspond en partie au module de la communauté Drupal Webform qui inclut notamment une déclaration des formulaires en YAML, ce qui permet de les implémenter très rapidement ;
  • Bonux & Couteaux suisses : ce regroupement de fonctionnalités nécessiterait probablement l’intégration de plusieurs modules Drupal ;
  • Menus : c’est natif en Drupal (et un vrai manque de SPIP à mon avis) ;
  • Nospam : ce plugin est en partie nativement géré par Drupal (qui inclue une notion de flood, limitant les saisies massives de formulaires), et nous utilisons quasiment systématiquement en plus le module communautaire Honeypot, qui ajoute un champ masqué dans les formulaires. Les robots remplissants ce champ sont alors bloqués à la soumission, et cette solution est transparente pour les visiteurs humains (un gros plus par rapport aux captchas classiques) ;
  • Social tags : de nombreux modules de la communauté Drupal permettent le partage de contenus, essentiellement par l’intégration d’une bibliothèque tierce : on peut citer AddToAny, ShareEverywhere, …
  • Corbeille : il n’y pas de notion de poubelle de base en Drupal (sinon via le module Trash), on privilégie plutôt la dépublication, ou un statut de workflow dédié, mais rien ne s’efface véritablement .
    -* Formidable : c’est là encore le module Webform qui correspond au plugin ;
    -* Newsletters (composition) + Mailsubscribers (gestion de listes) + Mailshot (gestion d’envois en masse) : le module de newsletter le plus représentatif est probablement Simplenews, même si il est de plus en plus courant d’intégrer plutôt un outil externe comme Mailchimp ou Mailjet, pour lesquels il existe des modules Drupal ;
  • Formulaire de contact avancé : cela aussi est natif dans Drupal 8 grâce au module du cœur Contact ;
  • Champs extra : une fonctionnalité présente dans Drupal depuis environ 10 ans, bien qu’elle ne soit dans le cœur que depuis 2011 et la sortie de Drupal 7 ;
  • Article PDF / PDF version : un équivalent existe dans la communauté Drupal, le module Entity PDF ;
  • Autorité : le modèle de permissions [5] de Drupal, parfois vu comme complexe, et très fin et permet de facilement réaliser l’équivalent de ce plugin directement dans le cœur...
  • Skeleditor : il n’y a pas d’équivalent dans le communauté Drupal, et c’est tant mieux ! On ne devrait jamais modifier du code directement dans l’interface du site : le code doit résider dans un gestionnaire de configuration comme git, pour pouvoir le déployer sur la production en s’assurant de l’intégrité des fichiers. On constate à nouveau le positionnement du CMS ;
    Jardin Zen : natif dans Drupal (via le menu Apparence).

 Quelques modules pour vous aider à migrer à Drupal ?

Les 3 modules cités dans cette partie ne sont malheureusement pas disponibles pour Drupal 8 à l’heure actuelle…

Pour rappel les versions de Drupal se suivent très régulièrement, mais la recherche sur le Web montre plutôt des soucis de Décideur importants, contrairement aux expériences sur SPIP.

On trouve également dans SPIP la possibilité d’administrer le "forum" (les commentaires au sens Drupal) d’un contenu pour l’auteur du contenu. Cette fonctionnalité n’existe pas dans Drupal, mais il semble que le module Comment Access en Drupal 7 faisait exactement ça. Là encore, ce serait à adapter pour Drupal 8.

Enfin, toujours en Drupal 7, on trouve le module Multilinguisme Made Simple qui reprend semble-t-il une des possibilités de multilinguisme de SPIP. À noter que sur le sujet du multilinguisme, ce module ne fonctionnera plus dans Drupal 8 qui met en place une interface plus "complexe", mais adaptée à n’importe quelle configuration multilingue souhaitée.
SPIP 4 Drupal

Si vous téléchargez notre module SPIP 4 Drupal, vous aurez après installation accès à : un rôle "rédacteur", un système de brèves, un menu d’administration reprenant les principaux liens de SPIP.



En conclusion, on peut reprocher à SPIP diverses facilités et laxismes, ceux qui rendent justement le produit exploitable directement en mode Web, en interactif !

Cette analyse rappelle donc -en creux- la différence de cible potentielle entre deux logiciels libres avec des possibilités analogues. L’un est ouvert, néanmoins Extensible en Framework "avec de la tendresse humaine" pour des utilisateurs affirmés, alors que l’usage de Drupal se réserverait plutôt a des professionnels habitués à cet outil !


Merci de nous signaler les coquilles ou erreurs qui figureraient dans cette page.

[1On se souvient trop des échecs "français" retentissants de développements de sites professionnels, par des professionnels sur Drupal !

[2Mais on ne sait pas toujours facilement lui faire ré-utiliser une image distante sur le Web ?

[3Le module qui posait souvent problèmes de performances... je n’ai pas l’expertise pour commenter les dernières versions Drupal ?

[4Les systèmes de cache des pages calculées par le CMS existent aussi, assez comparables dans les deux logiciels..

[5Au-délà des plugins de gestion des autorisations de SPIP, le système meme des Autorisations Dans Spip est fondé sur un fonctionnement original, très facile à programmer !

[6On se souvient trop des échecs "français" retentissants de développements de sites professionnels, par des professionnels sur Drupal !


Liens visibles seulement pour les inscrits.

Article publié le 4 octobre, et actualisé en octobre 2018 .

Répondre à cet article