Migrado de XenForo a Discourse: Resumen de la migración

Hemos migrado con éxito nuestra comunidad (techenclave.com) de XenForo a Discourse.

Total de Publicaciones: 2.5 millones
Total de Usuarios: 79K (activos y baneados)
Total de Mensajes Privados: 0.7 millones

Es una comunidad de 20 años, por lo que ha pasado por su parte de migraciones desde Proboards, Vbulletin, IPB, Xenforo y ahora Discourse.

Nos tomó 4 días completar la migración. Pero tuvo 4 semanas de pre-trabajo de migración y 4 semanas de desarrollo de plugins personalizados antes de eso.

Gracias a todos por ayudar y guiar donde nos atascamos. :folded_hands:
En general, fue una migración muy exitosa con casi ningún dato útil dejado atrás.


El núcleo de nuestra migración se construyó sobre un script de importación de XenForo mejorado, que mejora significativamente una base estándar. También aprovechamos varios scripts de soporte especializados para manejar transformaciones de datos específicas y garantizar la integridad de los datos después de la importación.

Mejoras Clave en el Script Principal de Importación de XenForo

Optimización del Rendimiento (Paginación Keyset): La mejora más crítica es la adopción de la paginación keyset (WHERE id > last_id). Este método mejora drásticamente la velocidad de procesamiento por lotes en comparación con las consultas OFFSET tradicionales, especialmente en grandes conjuntos de datos, al utilizar claves primarias indexadas para obtener el siguiente conjunto de registros.

Checkpointing y Reanudación Robustos: Se implementó una lógica avanzada de checkpointing (usando archivos .json) para usuarios, temas, respuestas y mensajes privados. Esto permite que el proceso de importación se reanude de forma segura desde el último registro importado con éxito después de interrupciones (por ejemplo, reinicios del servidor, errores de script), ahorrando un tiempo considerable.

Estrategia de Importación de Publicaciones en Dos Pasadas: Las publicaciones ahora se importan en dos pasadas distintas:

Temas Primero: Se importan todos los hilos originales de XenForo (primeras publicaciones), asegurando que existan los temas principales antes que las respuestas.

Respuestas Segundo: Luego se importan las publicaciones subsiguientes dentro de los hilos, vinculándolas correctamente a sus temas de Discourse recién creados. Este enfoque estructurado minimiza las respuestas huérfanas y mejora la consistencia de los datos.

Importación Integral de Reacciones/Me Gusta:
El script ahora diferencia inteligentemente entre las reacciones de XenForo que se mapean directamente a los “Me Gusta” principales de Discourse (corazones) y aquellas que son reacciones personalizadas.

Admite la inserción masiva tanto de los “Me Gusta” principales (en la tabla post_actions) como de las reacciones personalizadas (aprovechando el plugin discourse-reactions), lo que acelera significativamente el proceso.

Incluye un mapeo de los nombres cortos de emojis de XenForo a sus equivalentes en Discourse (por ejemplo, thumbsup a +1, heart_eyes a heart).

Importación Enriquecida de Datos del Marketplace (Plugin Personalizado):
Se agregó una sección dedicada para importar datos detallados de listados del marketplace (por ejemplo, precio, ubicación, condición, garantía, opciones de pago) de la tabla thread_field_value de XenForo.

Estos datos se almacenan en un modelo personalizado TecencMarket::Listing y como campos personalizados de tema, lo que permite una visualización y funcionalidad más ricas en Discourse.

Importación de Comentarios del Marketplace (Plugin Personalizado):
Se introdujo una nueva función para migrar los comentarios/calificaciones de los usuarios (me gusta/no me gusta) asociados con las transacciones del marketplace.

Conversión de Prefijos de Hilo a Etiquetas: El script ahora convierte automáticamente los prefijos de hilo de XenForo en etiquetas de Discourse. Esto es crucial para mantener la organización y la descubribilidad del contenido, utilizando el plugin discourse-tagging. También mapea correctamente los IDs de prefijo a títulos legibles utilizando la tabla phrase de XenForo.

Procesamiento Mejorado del Contenido de las Publicaciones: Este método recibió actualizaciones significativas para una mejor conversión de Markdown y el manejo del complejo BBCode de XenForo:

Manejo Mejorado de Citas: Conversión de las etiquetas [QUOTE] de XenForo, incluido el manejo de usuarios citados y la vinculación a publicaciones/temas de Discourse específicos cuando sea posible.

Incrustaciones de Medios Corregidas: Asegura que todos los medios importados (YouTube, Twitter/X) estén en sus propias líneas para habilitar la función de oneboxing/incrustación de Discourse, y convierte las antiguas etiquetas [MEDIA] de BBCode a URLs estándar.

Conversión de Tablas: Convierte el BBCode [TABLE] de XenForo en tablas de Markdown.

Manejo de Archivos Adjuntos (En Línea y Añadidos): La lógica de procesamiento de archivos adjuntos fue refactorizada. Ahora intenta reemplazar las etiquetas [ATTACH] con el Markdown correcto para el archivo cargado. Crucialmente, cualquier archivo adjunto que no estuviera explícitamente etiquetado como [ATTACH] en el contenido de la publicación ahora se añade al final de la publicación bajo un encabezado claro “Archivos adjuntos:”, asegurando que no se pierdan archivos.

Conversión de Emojis/Sonrisas: Mapeo ampliado de las sonrisas de XenForo a emojis nativos de Discourse, mejorando la consistencia visual.

Limpieza General de BBCode: Eliminación y conversión más completa de varias etiquetas de BBCode (por ejemplo, [B], [I], [URL], [IMG], [LIST], [CODE], [COLOR], [FONT], [SIZE], [INDENT], [USER]).

Codificación y Limpieza de Caracteres: Incluye .scrub! para secuencias UTF-8 inválidas y CGI.unescapeHTML para la decodificación adecuada de entidades HTML.

Manejo de Usuarios Suspendidos: Los usuarios baneados de XenForo ahora se importan como usuarios suspendidos de Discourse, conservando sus cuentas pero limitando su actividad, con las razones del baneo conservadas en campos personalizados.

Importación de Marcadores: Importa todos los marcadores de XenForo a Discourse. No había muchos para empezar.


Una gran parte de los usuarios no quedaron contentos después de la migración. Lo cual es esperado. No es algo que no hayan escuchado antes después de una migración. Sin embargo, compartiré un resumen de los comentarios más adelante en este tema, podría haber algo para reflexionar y alimentar el futuro de Discourse.

17 Me gusta

¡Gracias por compartir! Un montón de cosas en la lista que identifiqué como elementos de acción para un proyecto en curso de migración de SMF a Discourse :slightly_smiling_face:

¿Está tu código de importación personalizado disponible para el público? Estaría especialmente interesado en cómo manejaste la importación de dos pasadas para asegurar enlaces nuevos correctos.

2 Me gusta

Puede consultar los scripts de importación que utilicé. El archivo que desea ver es este:
xenforo_import_enhanced.rb

7 Me gusta

La razón por la que tuvimos que hacer dos pasadas fue porque con el tiempo, inevitablemente, un tema antiguo se fusionará con un tema nuevo. Pero las publicaciones tendrán el ID antiguo y se recogerán primero. Sin que se haya importado ningún tema correspondiente en ese momento, todas esas publicaciones se descartarán y se perderán.

4 Me gusta

¡Muchas gracias! Le echaré un vistazo.

Además, agradezco el comentario adicional sobre el razonamiento detrás de esto. Ese es un problema con el que, afortunadamente, no nos hemos encontrado. La razón principal por la que estaba pensando en una importación de dos pasos es que los hipervínculos en las citas todavía tienen la URL antigua, y aunque los permalinks también deberían funcionar, creo que sería mejor usar la nueva URL para las publicaciones de inmediato.

1 me gusta

¡Guau! ¡Felicidades! Y gracias por compartir.

Es lo esperado, sí. La forma en que manejes sus comentarios ahora es crucial. Aborda sus comentarios, asegúrate de que se sientan escuchados y destaca las mejoras y las nuevas funciones (¡estoy seguro de que hay muchas!). Si tienes algún problema con los comentarios, publícalo aquí y estaré encantado de ayudarte.

Echa un vistazo a la última sección de este artículo, te dará algunas indicaciones: How to prepare your community for a Discourse migration

9 Me gusta

Después de cuatro intentos fallidos con el importador estándar, tu versión funcionó a la perfección.

4 Me gusta

Comparto este resumen como prometí. Usé Gemini 2.5 Pro para resumir todos los comentarios recopilados en los últimos 3 meses.

Yo diría que la mayor preocupación ha sido un buen tema. Desearía que hubiera un mercado de temas de pago en Discourse como en otras plataformas de foros.


Resumen

La retroalimentación sobre la migración a Discourse está fuertemente dividida, pero una mayoría de usuarios vocales expresa una frustración significativa, lo que lleva a una menor participación. Los problemas más críticos se centran en la Navegación y Usabilidad y la UI y Diseño, particularmente para los usuarios de escritorio acostumbrados a los diseños de foros tradicionales. Si bien algunos usuarios aprecian la apariencia moderna y las mejoras técnicas, el consenso entre los críticos es que la plataforma prioriza la forma sobre la función, creando una alta carga cognitiva y una experiencia menos intuitiva.


1. Navegación y Usabilidad (Máxima Prioridad)

Esta categoría recibió la retroalimentación negativa más frecuente y detallada. Los usuarios encuentran que la nueva plataforma es fundamentalmente más difícil de usar, lo que es una causa directa de su menor participación.

  • Puntos Clave de Retroalimentación y Ponderación:

    • El Scroll Infinito No Es Popular: El punto de mayor consenso es la aversión al scroll infinito, especialmente en escritorio. Los usuarios extrañan el contexto y el control de los números de página para navegar por hilos largos.
    • Generalmente Difícil de Navegar: Un número significativo de usuarios describe la plataforma como confusa, desordenada, tediosa y con una curva de aprendizaje pronunciada en la que no desean invertir para un foro.
    • Dificultad para Encontrar Publicaciones Últimas/No Leídas: Una lucha común es la incapacidad de saltar intuitivamente a la última publicación o reanudar la lectura desde un punto específico en un hilo, lo que requiere que los usuarios aprendan soluciones alternativas no obvias.
    • Mala Detección de Contenido: Los usuarios extrañan la antigua página de categorías, que proporcionaba una visión general clara y jerárquica de la estructura del foro y la actividad más reciente dentro de las secciones. El nuevo diseño se considera un “desastre”.
    • Citas Rotas: El proceso de citar texto se describe como difícil y poco fiable, especialmente en dispositivos móviles y tabletas, donde la ventana emergente de cita puede quedar oculta por la interfaz de usuario nativa.
  • Perspectivas Accionables:

    • Priorizar una Experiencia de “Foro Tradicional”: El problema central es la desviación del modelo de foro esperado. Un tema o diseño que emule una vista paginada y más estructurada, especialmente para la página de categorías, abordaría las quejas más significativas.
    • Mejorar las Indicaciones de Navegación: Hacer que saltar a la primera, última y última publicación no leída sea una acción obvia de un solo clic. La funcionalidad actual de la barra de desplazamiento no es intuitiva para muchos. Considere agregar botones explícitos en la parte superior e inferior de los hilos.
    • Reevaluar el Comportamiento Predeterminado de las Citas: La necesidad de seleccionar manualmente texto para citar es un punto de fricción importante. Investigue complementos o configuraciones que hagan que citar una publicación completa sea la acción predeterminada de un solo clic.

2. UI y Diseño (Alta Prioridad)

Los usuarios sienten que el diseño actual desperdicia espacio y perjudica la legibilidad, lo que afecta directamente su capacidad y deseo de consumir contenido.

  • Puntos Clave de Retroalimentación y Ponderación:

    • Exceso de Espacio en Blanco: Este fue el defecto de diseño más citado. Los usuarios con monitores de escritorio más grandes sienten que la columna central estrecha desperdicia una cantidad significativa de espacio en pantalla y reduce la densidad de información.
    • Deseo de Personalización: Los usuarios buscan activamente formas de mejorar su experiencia a través de CSS personalizado, diferentes temas (Predeterminado sobre Horizon) y tamaños de fuente más pequeños. Esto indica un fuerte deseo de un mayor control a nivel de usuario sobre la apariencia.
    • Mala Legibilidad: La combinación de espacio en blanco, tamaños de fuente y la falta de una separación clara entre las publicaciones hace que sea más difícil escanear y leer el contenido en comparación con el software anterior.
  • Perspectivas Accionables:

    • Desarrollar un Tema “Compacto” o “Pantalla Completa”: Abordar directamente la queja del espacio en blanco ofreciendo un tema oficial que utilice más el ancho de la pantalla. Esto también satisfaría el deseo de personalización y es la solución alternativa más común que los usuarios están implementando por sí mismos.
    • Refinar los Separadores Visuales: Aumentar la distinción visual entre las publicaciones. Cambios sutiles como bordes, colores de fondo alternos o diferentes diseños de bloques de información del usuario pueden mejorar significativamente la legibilidad y reducir la sensación de “chat”.
    • Revisar el Tamaño de Fuente y la Jerarquía: Realizar una revisión de la tipografía del tema para garantizar una jerarquía más consistente y densa en información, particularmente para el texto de subcategorías y el contenido de las publicaciones.

3. Sentimiento General y Participación del Usuario (Alto Impacto)

Una parte significativa de la retroalimentación indica un impacto negativo directo en la actividad del usuario. Si bien parte de esto es resistencia al cambio, la consistencia de las quejas sugiere problemas más profundos.

  • Puntos Clave de Retroalimentación y Ponderación:

    • Sentimiento Negativo / Uso Disminuido: Esta es una métrica crítica. Múltiples usuarios afirman explícitamente que visitan el foro con menos frecuencia ahora.
    • Sentimiento Positivo: Un grupo más pequeño pero notable disfruta de la sensación moderna, la velocidad y las funciones como el sistema de notificaciones y el editor de markdown.
    • Usuarios Adaptables: Este grupo extraña el antiguo foro pero comprende las razones técnicas de la migración y está dispuesto a adaptarse.
  • Perspectivas Accionables:

    • Reconocer y Comunicar: Reconocer públicamente la retroalimentación de los usuarios y comunicar una hoja de ruta clara para las mejoras de UI/UX. Esto puede ayudar a retener a los usuarios que actualmente están frustrados pero dispuestos a adaptarse.
    • Priorizar las Correcciones de “Calidad de Vida”: Enfocarse primero en cambios de bajo esfuerzo y alto impacto (por ejemplo, cambiar los colores de las categorías para que coincidan con el tema anterior como sugirió un usuario) para demostrar que se está escuchando y actuando sobre la retroalimentación.
    • Crear una Guía de “Primeros Pasos”: Si bien algunos usuarios se resisten a leer guías, un tema fijado que explique rápidamente los 5 cambios más confusos (como navegar por los hilos y citar) podría facilitar la transición para muchos.

4. Funcionalidad Central y Rendimiento (Prioridad Media)

Aunque no se mencionan con tanta frecuencia como la UI/UX, estos problemas afectan el propósito central del foro.

  • Puntos Clave de Retroalimentación y Ponderación:

    • Sensación de Chat: El diseño fomenta respuestas cortas y reactivas en lugar de discusiones largas y estructuradas, lo que hace que se sienta más como una aplicación de chat que como un foro.
    • Búsqueda Deficiente: Los usuarios informan que la búsqueda no prioriza eficazmente los resultados de los títulos de los temas, lo que dificulta la búsqueda de hilos conocidos.
    • Problemas de Rendimiento: Un usuario señaló que el editor de texto se vuelve lento y hace que su portátil se caliente en hilos largos.
  • Perspectivas Accionables:

    • Ajustar la Relevancia de la Búsqueda: Investigar la configuración o los complementos de Discourse que puedan dar más peso a los títulos de los temas en los resultados de búsqueda. La sugerencia del administrador de usar sintaxis avanzada es una solución alternativa, no una solución para el comportamiento de búsqueda predeterminado.
    • Monitorear el Rendimiento en Hilos Largos: Mantener un ojo en el rendimiento del editor y el desplazamiento en hilos con miles de respuestas para abordar posibles cuellos de botella del lado del cliente.
    • Habilitar la Búsqueda con IA: Como sugirió el administrador, habilitar la búsqueda impulsada por IA podría ser una solución a largo plazo para el problema de la relevancia de la búsqueda, pero debe sopesarse frente a los costos potenciales.
3 Me gusta

¿Por qué no Marketplace? Aunque el resultado suele ser privado.

Para estos usuarios, podrías considerar destacar explícitamente la vista general de categorías. O incluso considerar cambiar esa vista general a algo que les guste más. Es una oportunidad para involucrarlos también.
Comparte algunas capturas de pantalla de cómo se verían los diferentes ajustes de Estilo de página de categoría de escritorio y pregunta cuál prefieren.

Esto parece ser un comentario que nos gustaría recibir explícitamente. ¿Podrías pedirles que lo informen aquí en Meta?

Esto se puede solucionar con temas de usuario :slight_smile: Considera agregar este componente de tema a un tema seleccionable por el usuario GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

¿No entiendo “separación clara de las publicaciones”?

El cambio siempre es difícil, la gente siempre se quejará. Si el grupo “negativo” es lo suficientemente pequeño, creo que podrías ignorarlos de forma segura por ahora y centrarte en los adaptadores. Haz que su experiencia sea excelente y las personas negativas se alinearán (o se irán).

2 Me gusta

Con un mercado de temas, el costo se divide entre varios compradores. El creador del tema también tiene incentivos para crear muchos temas.

1 me gusta

El componente realmente no ofrece ancho completo. Agrupa el diseño a la izquierda, pero no lo expande. He implementado un tema personalizado que sí se expande, pero desearía que fuera posible para todos los temas.

Con el componente de ancho completo en Horizon

Con el tema personalizado basado en Foundation

Sin embargo, tienes razón, el cambio es difícil y muchos usuarios se han adaptado, a algunos todavía les resulta difícil. Es difícil satisfacer a todos. Solo pensé en compartir toda la experiencia.

Compartiré más detalles sobre el problema de las citas en dispositivos móviles/tabletas.

2 Me gusta