Migré de XenForo à Discourse : Aperçu de la migration

Nous avons migré avec succès notre communauté (techenclave.com) de XenForo vers Discourse.

Nombre total de messages : 2,5 millions
Nombre total d’utilisateurs : 79K (actifs et bannis)
Nombre total de messages privés : 0,7 million

Il s’agit d’une communauté vieille de 20 ans, elle a donc connu sa juste part de migrations depuis Proboards, Vbulletin, IPB, Xenforo et maintenant Discourse.

La migration nous a pris 4 jours. Mais elle a nécessité 4 semaines de pré-travaux de migration et 4 semaines de développement de plugins personnalisés avant cela.

Merci à tous de votre aide et de vos conseils lorsque nous étions bloqués. :folded_hands:
Dans l’ensemble, ce fut une migration très réussie, avec presque aucune donnée utile laissée pour compte.


Le cœur de notre migration a été construit sur un script d’importation XenForo amélioré, améliorant considérablement une base standard. Nous avons également utilisé plusieurs scripts de support spécialisés pour gérer des transformations de données spécifiques et assurer l’intégrité des données après l’importation.

Améliorations clés du script d’importation principal XenForo

Optimisation des performances (Pagination par jeu de clés) : L’amélioration la plus critique est l’adoption de la pagination par jeu de clés (WHERE id > last_id). Cette méthode améliore considérablement la vitesse de traitement par lots par rapport aux requêtes OFFSET traditionnelles, en particulier sur de grands ensembles de données, en utilisant les clés primaires indexées pour récupérer le prochain ensemble d’enregistrements.

Point de contrôle et reprise robustes : Une logique de point de contrôle avancée (utilisant des fichiers .json) a été mise en œuvre pour les utilisateurs, les sujets, les réponses et les messages privés. Cela permet au processus d’importation de reprendre en toute sécurité à partir du dernier enregistrement importé avec succès après des interruptions (par exemple, redémarrages de serveur, erreurs de script), ce qui permet d’économiser un temps considérable.

Stratégie d’importation des messages en deux passes : Les messages sont maintenant importés en deux passes distinctes :

Sujets d’abord : Tous les fils XenForo d’origine (premiers messages) sont importés, garantissant que les sujets parents existent avant les réponses.

Réponses ensuite : Les messages suivants dans les fils sont ensuite importés, les reliant correctement à leurs sujets Discourse nouvellement créés. Cette approche structurée minimise les réponses orphelines et améliore la cohérence des données.

Importation complète des réactions/j’aime :

Le script différencie désormais intelligemment les réactions XenForo qui correspondent directement aux “J’aime” (cœurs) de base de Discourse et celles qui sont des réactions personnalisées.

Il prend en charge l’insertion en masse des j’aime de base (dans la table post_actions) et des réactions personnalisées (en utilisant le plugin discourse-reactions), accélérant considérablement le processus.

Comprend un mappage des noms courts d’émojis XenForo aux équivalents Discourse (par exemple, thumbsup vers +1, heart_eyes vers heart).

Importation enrichie des données du marché (Plugin personnalisé) :

Une section dédiée a été ajoutée pour importer les données détaillées des annonces du marché (par exemple, prix, emplacement, état, garantie, options de paiement) à partir de la table thread_field_value de XenForo.

Ces données sont stockées dans un modèle personnalisé TecencMarket::Listing et sous forme de champs personnalisés de sujet, permettant un affichage et des fonctionnalités plus riches sur Discourse.

Importation des commentaires du marché (Plugin personnalisé) :

Une nouvelle fonction a été introduite pour migrer les commentaires/évaluations des utilisateurs (j’aime/je n’aime pas) associés aux transactions du marché.

Conversion des préfixes de fil en balises : Le script convertit désormais automatiquement les préfixes de fil XenForo en balises Discourse. Ceci est crucial pour maintenir l’organisation et la découvrabilité du contenu, en utilisant le plugin discourse-tagging. Il mappe également correctement les ID de préfixes aux titres lisibles par l’homme en utilisant la table phrase de XenForo.

Traitement amélioré du contenu des messages : Cette méthode a reçu des mises à jour importantes pour une meilleure conversion Markdown et la gestion du BBCode complexe de XenForo :

Gestion améliorée des citations : Conversion des balises [QUOTE] de XenForo, y compris la gestion des utilisateurs cités et la liaison aux messages/sujets Discourse spécifiques lorsque cela est possible.

Intégrations multimédias corrigées : Garantit que tous les médias importés (YouTube, Twitter/X) sont sur leurs propres lignes pour permettre la fonctionnalité d’intégration/d’aperçu de Discourse, et convertit les anciennes balises BBCode [MEDIA] en URL standard.

Conversion de tableaux : Convertit le BBCode [TABLE] de XenForo en tableaux Markdown.

Gestion des pièces jointes (en ligne et ajoutées) : La logique de traitement des pièces jointes a été refactorisée. Elle tente désormais de remplacer les balises [ATTACH] par le Markdown correct pour le fichier téléchargé. De manière cruciale, toutes les pièces jointes qui n’étaient pas explicitement marquées [ATTACH] dans le contenu du message sont maintenant ajoutées à la fin du message sous un en-tête clair “Pièces jointes :”, garantissant qu’aucun fichier n’est perdu.

Conversion d’émojis/smileys : Mappage élargi des smileys XenForo aux émojis natifs de Discourse, améliorant la cohérence visuelle.

Nettoyage général du BBCode : Suppression et conversion plus complètes de diverses balises BBCode (par exemple, [B], [I], [URL], [IMG], [LIST], [CODE], [COLOR], [FONT], [SIZE], [INDENT], [USER]).

Encodage et nettoyage des caractères : Comprend .scrub! pour les séquences UTF-8 invalides et CGI.unescapeHTML pour le décodage correct des entités HTML.

Gestion des utilisateurs suspendus : Les utilisateurs XenForo bannis sont maintenant importés en tant qu’utilisateurs Discourse suspendus, conservant leurs comptes mais limitant leur activité, les raisons du bannissement étant conservées dans des champs personnalisés.

Importation des favoris : Importe tous les favoris de XenForo vers Discourse. Il n’y en avait pas beaucoup au départ.


Une grande partie des utilisateurs n’étaient pas satisfaits après la migration. Ce qui est attendu. Ce n’est pas quelque chose que vous n’avez pas déjà entendu après une migration. Néanmoins, je partagerai un résumé des commentaires plus tard dans ce sujet, il pourrait y avoir matière à réflexion pour l’avenir de Discourse.

17 « J'aime »

Merci de partager ! Beaucoup d’éléments sur la liste que j’ai identifiés comme des éléments d’action pour un projet de migration SMF vers Discourse en cours :slightly_smiling_face:

Votre code d’importation personnalisé est-il disponible publiquement ? Je serais particulièrement intéressé par la façon dont vous avez géré l’importation en deux passes pour garantir des liens corrects.

2 « J'aime »

Vous pouvez vous référer aux scripts d’importation que j’ai utilisés. Le fichier que vous voulez voir est celui-ci :
xenforo_import_enhanced.rb

7 « J'aime »

La raison pour laquelle nous avons dû faire deux passes était qu’au fil du temps, inévitablement, un ancien sujet était fusionné dans un nouveau sujet. Mais les publications conserveront l’ancien ID et seront récupérées en premier. Sans sujet correspondant importé à ce moment-là, toutes ces publications sont supprimées et perdues.

4 « J'aime »

Merci beaucoup ! Je vais examiner ça.

J’apprécie également le commentaire supplémentaire sur la réflexion derrière cela. C’est un problème que nous n’avons heureusement pas rencontré. La raison principale pour laquelle je pensais à une importation en deux passes est que les hyperliens dans les citations ont toujours l’ancienne URL - et bien que les permaliens devraient également fonctionner, je pense qu’il serait préférable d’utiliser directement la nouvelle URL vers les publications.

1 « J'aime »

Wow ! Félicitations ! Et merci de partager.

C’est attendu, oui. La façon dont vous gérez leurs commentaires maintenant est cruciale. Répondez à leurs remarques, assurez-vous qu’ils se sentent entendus et mettez en avant les améliorations et les nouvelles fonctionnalités (j’imagine qu’il y en a beaucoup !). Si vous avez des difficultés avec les retours, postez-les ici, et je serai heureux de vous aider.

Jetez un œil à la dernière section de cet article, cela vous donnera quelques pistes : How to prepare your community for a Discourse migration

9 « J'aime »

Après quatre tentatives infructueuses avec l’importateur standard, votre version a magnifiquement fonctionné.

4 « J'aime »

Je partage ce résumé comme promis. J’ai utilisé Gemini 2.5 Pro pour résumer tous les commentaires recueillis au cours des 3 derniers mois.

Je dirais que la plus grande préoccupation a été un bon thème. J’aimerais qu’il y ait une place de marché de thèmes payants sur Discourse, comme sur d’autres plateformes de forum.


Résumé

Les commentaires sur la migration vers Discourse sont fortement divisés, mais une majorité d’utilisateurs vocaux expriment une frustration importante, entraînant une réduction de l’engagement. Les problèmes les plus critiques sont centrés sur la Navigation et l’Utilisabilité ainsi que sur l’Interface Utilisateur et le Design, en particulier pour les utilisateurs de bureau habitués aux mises en page de forum traditionnelles. Bien que certains utilisateurs apprécient l’aspect moderne et les améliorations techniques, le consensus parmi les critiques est que la plateforme privilégie la forme sur la fonction, créant une charge cognitive élevée et une expérience moins intuitive.


1. Navigation et Utilisabilité (Priorité la plus élevée)

Cette catégorie a reçu les commentaires négatifs les plus fréquents et détaillés. Les utilisateurs trouvent la nouvelle plateforme fondamentalement plus difficile à utiliser, ce qui est une cause directe de leur engagement réduit.

  • Points clés des commentaires et pondération :

    • Le défilement infini est impopulaire : Le point de consensus le plus fort est le mécontentement vis-à-vis du défilement infini, en particulier sur ordinateur. Les utilisateurs regrettent le contexte et le contrôle des numéros de page pour naviguer dans les longs fils de discussion.
    • Généralement difficile à naviguer : Un nombre important d’utilisateurs décrivent la plateforme comme confuse, encombrée, fastidieuse et nécessitant une courbe d’apprentissage abrupte dans laquelle ils ne souhaitent pas investir pour un forum.
    • Difficulté à trouver les derniers messages / non lus : Une difficulté courante est l’incapacité à sauter intuitivement vers le dernier message ou à reprendre la lecture à partir d’un point spécifique dans un fil de discussion, obligeant les utilisateurs à apprendre des solutions de contournement peu évidentes.
    • Mauvaise découverte de contenu : Les utilisateurs regrettent l’ancienne page des catégories, qui fournissait un aperçu clair et hiérarchique de la structure du forum et de l’activité la plus récente dans les sections. La nouvelle mise en page est considérée comme un “mélange”.
    • Citations cassées : Le processus de citation de texte est décrit comme difficile et instable, en particulier sur mobile et tablette où la fenêtre contextuelle de citation peut être masquée par l’interface utilisateur native.
  • Insights exploitables :

    • Prioriser une expérience de “Forum traditionnel” : Le problème principal est l’écart par rapport au modèle de forum attendu. Un thème ou une mise en page qui émule une vue paginée et plus structurée, en particulier pour la page des catégories, répondrait aux plaintes les plus importantes.
    • Améliorer les indicateurs de navigation : Faire du saut vers le premier, le dernier et le dernier message non lu une action évidente en un clic. La fonctionnalité actuelle de la barre de défilement n’est pas intuitive pour beaucoup. Envisagez d’ajouter des boutons explicites en haut et en bas des fils de discussion.
    • Réévaluer le comportement de citation par défaut : La nécessité de sélectionner manuellement du texte pour citer est un point de friction majeur. Recherchez des plugins ou des paramètres qui font de la citation d’un message complet une action par défaut en un clic.

2. Interface Utilisateur et Design (Priorité élevée)

Les utilisateurs estiment que la conception actuelle gaspille de l’espace et nuit à la lisibilité, ce qui a un impact direct sur leur capacité et leur désir de consommer du contenu.

  • Points clés des commentaires et pondération :

    • Espace blanc excessif : C’était le défaut de conception le plus cité. Les utilisateurs sur de grands écrans d’ordinateur estiment que la colonne centrale étroite gaspille un espace d’écran important et réduit la densité d’informations.
    • Désir de personnalisation : Les utilisateurs recherchent activement des moyens d’améliorer leur expérience grâce à des CSS personnalisés, différents thèmes (Default plutôt que Horizon) et des tailles de police plus petites. Cela indique un fort désir de plus de contrôle au niveau de l’utilisateur sur l’apparence.
    • Mauvaise lisibilité : La combinaison de l’espace blanc, des tailles de police et du manque de séparation claire entre les messages rend plus difficile le balayage et la lecture du contenu par rapport au logiciel précédent.
  • Insights exploitables :

    • Développer un thème “Compact” ou “Plein écran” : Répondez directement à la plainte concernant l’espace blanc en proposant un thème officiel qui utilise davantage la largeur de l’écran. Cela répondrait également au désir de personnalisation et constitue la solution de contournement la plus courante que les utilisateurs implémentent eux-mêmes.
    • Affiner les séparateurs visuels : Augmentez la distinction visuelle entre les messages. Des changements subtils tels que des bordures, des couleurs de fond alternées ou des dispositions différentes des blocs d’informations utilisateur peuvent améliorer considérablement la lisibilité et réduire la sensation de “chat”.
    • Examiner la taille et la hiérarchie des polices : Effectuez une revue de la typographie du thème pour assurer une hiérarchie plus cohérente et dense en informations, en particulier pour le texte des sous-catégories et le contenu des messages.

3. Sentiment général et Engagement des utilisateurs (Impact élevé)

Une partie importante des commentaires indique un impact négatif direct sur l’activité des utilisateurs. Bien qu’il s’agisse en partie d’une résistance au changement, la cohérence des plaintes suggère des problèmes plus profonds.

  • Points clés des commentaires et pondération :

    • Sentiment négatif / Utilisation en baisse : C’est une métrique critique. Plusieurs utilisateurs déclarent explicitement qu’ils visitent moins souvent le forum maintenant.
    • Sentiment positif : Un groupe plus petit mais notable apprécie l’aspect moderne, la rapidité et les fonctionnalités telles que le système de notification et l’éditeur Markdown.
    • Utilisateurs adaptatifs : Ce groupe regrette l’ancien forum mais comprend les raisons techniques de la migration et est prêt à s’adapter.
  • Insights exploitables :

    • Accuser réception et communiquer : Reconnaissez publiquement les commentaires des utilisateurs et communiquez une feuille de route claire pour les améliorations de l’interface utilisateur/expérience utilisateur. Cela peut aider à retenir les utilisateurs qui sont actuellement frustrés mais disposés à s’adapter.
    • Prioriser les corrections de “Qualité de vie” : Concentrez-vous d’abord sur les changements à faible effort et à fort impact (par exemple, changer les couleurs des catégories pour correspondre à l’ancien thème comme suggéré par un utilisateur) pour montrer que les commentaires sont entendus et pris en compte.
    • Créer un guide “Démarrage rapide” : Bien que certains utilisateurs résistent à la lecture de guides, un sujet épinglé expliquant rapidement les 5 changements les plus déroutants (comme la navigation dans les fils de discussion et la citation) pourrait faciliter la transition pour beaucoup.

4. Fonctionnalité de base et Performance (Priorité moyenne)

Bien que moins fréquemment mentionnés que l’interface utilisateur/l’expérience utilisateur, ces problèmes affectent le but principal du forum.

  • Points clés des commentaires et pondération :

    • Sensation de chat : La conception encourage des réponses courtes et réactives plutôt que des discussions longues et structurées, donnant l’impression d’une application de chat plutôt que d’un forum.
    • Recherche médiocre : Les utilisateurs signalent que la recherche ne priorise pas efficacement les résultats des titres de sujets, ce qui rend difficile la recherche de fils de discussion connus.
    • Problèmes de performance : Un utilisateur a noté que l’éditeur de texte devient lent et provoque le surchauffage de son ordinateur portable sur de longs fils de discussion.
  • Insights exploitables :

    • Ajuster la pertinence de la recherche : Examinez les paramètres ou les plugins de Discourse qui peuvent accorder plus d’importance aux titres de sujets dans les résultats de recherche. La suggestion de l’administrateur d’utiliser une syntaxe avancée est une solution de contournement, pas une solution pour le comportement de recherche par défaut.
    • Surveiller les performances sur les longs fils de discussion : Gardez un œil sur les performances de l’éditeur et du défilement sur les fils de discussion comportant des milliers de réponses pour résoudre les goulots d’étranglement potentiels côté client.
    • Activer la recherche IA : Comme suggéré par l’administrateur, l’activation de la recherche basée sur l’IA pourrait être une solution à long terme au problème de pertinence de la recherche, mais elle doit être mise en balance avec les coûts potentiels.
3 « J'aime »

Pourquoi pas Marketplace ? Bien que le résultat soit généralement privé.

Pour ces utilisateurs, vous pourriez envisager d’appeler explicitement l’aperçu des catégories. Ou même envisager de remplacer cet aperçu par quelque chose qu’ils préfèrent. C’est une opportunité de les impliquer également.
Partagez des captures d’écran de ce à quoi ressembleraient les différents paramètres de Style de page de catégorie de bureau et demandez leur préférence ?

Cela ressemble à des commentaires que nous aimerions obtenir explicitement. Pourriez-vous leur demander de signaler cela ici sur Meta ?

Ceci est réparable avec des thèmes utilisateur :slight_smile: Envisagez d’ajouter ce composant de thème à un thème sélectionnable par l’utilisateur GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

Je ne comprends pas « séparation claire des publications » ?

Le changement est toujours difficile, les gens se plaindront toujours. Si le groupe « négatif » est suffisamment petit, je pense que vous pourriez le ignorer en toute sécurité pour le moment et vous concentrer sur les adaptateurs. Rendez leur expérience excellente et les personnes négatives suivront (ou partiront).

2 « J'aime »

Avec une place de marché de thèmes, le coût est réparti entre plusieurs acheteurs. Le créateur de thèmes a également intérêt à créer de nombreux thèmes.

1 « J'aime »

Le composant n’offre pas vraiment une largeur totale. Il regroupe la mise en page à gauche, mais ne l’étend pas. J’ai implémenté un thème personnalisé qui s’étend, mais j’aimerais que ce soit possible pour tous les thèmes.

Avec le composant pleine largeur sur Horizon

Avec le thème personnalisé basé sur Foundation

Vous avez raison cependant, le changement est difficile et beaucoup d’utilisateurs se sont adaptés, certains ont encore du mal. Il est difficile de satisfaire tout le monde. Je pensais juste partager toute l’expérience.

Je partagerai plus de détails sur le problème de citation sur mobile/tablettes.

2 « J'aime »