Bug du script d'importation vBulletin lors de l'importation des sous-catégories

Bonjour à tous,

Eh bien, tout d’abord, un GROS MERCI à Discourse. Discourse est une œuvre d’art et très impressionnante. Après plus d’une décennie avec vBulletin, nous n’avions trouvé aucun logiciel de forum vers lequel migrer (tout était du « toujours pareil, toujours pareil »… bla bla bla), jusqu’à Discourse. MERCI

Actuellement, je suis en mode test, en train d’importer depuis vB 3.8.X vers la dernière version de Discourse dans un conteneur docker, deux premières fois pour moi. En fait, avant cette semaine, je n’aurais jamais pensé écrire une seule ligne de Ruby, mais Discourse est si bon que cela en vaut la peine.

Le script d'import vbulletin.rb tourne depuis un jour ou deux ; et pour l’essentiel, il fonctionne bien. En fait, il est extrêmement impressionnant. À quelques reprises, il a généré une erreur, mais lorsque j’ai redémarré le script, l’erreur a disparu.

J’ai toutefois trouvé un bug dans l'importation des catégories enfants. (celui-ci ne disparaît pas au redémarrage) et voici ce que cela donne :


Traceback (most recent call last):

5: from script/import_scripts/vbulletin.rb:942:in `<main>'

4: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'

3: from script/import_scripts/vbulletin.rb:84:in `execute'

2: from script/import_scripts/vbulletin.rb:287:in `import_categories'

1: from script/import_scripts/vbulletin.rb:287:in `each'

script/import_scripts/vbulletin.rb:289:in `block in import_categories': undefined method `[]' for nil:NilClass (NoMethodError)

root@localhost-app:/var/www/discourse# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'

Mon plan pour résoudre ce problème est pitoyable. Je comptais redumper la base de données vB et transformer tous les forums enfants en parents, puis effectuer toute la migration à nouveau ; mais ensuite, j’ai pensé que je devrais peut-être être plus sociable et poster cela comme un rapport de bug.

Avez-vous des suggestions pour une meilleure solution que mon idée de débutant pitoyable ci-dessus ?

Sinon, je compte simplement redumper, apporter des modifications manuelles à la base de données, puis migrer à nouveau, ce qui est sûrement une méthode de débutant pitoyable pour régler ce problème.

Merci !

Peut-être envisagez-vous de mettre à jour vers au moins vB 4 d’abord… l’outil d’importation est principalement destiné à la version 4.x.

À quel point vos catégories sont-elles imbriquées ? Si vous n’avez qu’un ou deux niveaux, commentez simplement le code d’aplatissement aux lignes 287 à 291.

Non. Je ne ferai pas cela (passer à vB4).

J’ai déjà commenté les lignes problématiques hier.

Ma question revient essentiellement à corriger cela pour vB 3.8 ; sinon, je corrigerai moi-même le problème. J’ai signalé, dans ce message, un « bug » lié au code, et si je ne reçois pas de réponse indiquant qu’un « correctif de bug » a été apporté au code, je programmerai moi-même la correction.

C’est pourquoi j’ai publié ce bug ici :). Il s’agit d’un signalement de « bug » concernant le code. Le code contient un « bug », et je l’ai donc signalé…

Hum. J’essayais d’être « sociable » en publiant ce bug ici, en espérant obtenir des suggestions de la part des responsables (du code) qui fonctionneraient dans mon cas (et non dans le cas vB4) ; et encore désolé, mais je n’upgraderai pas vers vB4 sous aucune condition. Désolé d’être si direct et de ne pas avoir suivi cette idée. Je modifierai le script de migration selon les besoins et ajusterai notre base de données comme requis. Jusqu’à présent, j’ai déjà ajouté du code pour les balises de code personnalisées, etc.

Salutations.

En tant que l’un des contributeurs à l’importateur vBulletin, l’auteur de l’importateur pour VB 5 et ayant réalisé plus de 50 conversions de vB vers Discourse, je partageais simplement l’information selon laquelle l’importateur est principalement testé sur vB 4, et non sur 3.8, qui est en fin de vie depuis plus de 7,5 ans. Je ne cherchais pas à vous « impressionner »…

Quoi qu’il en soit. Je me demande s’il s’agit d’un bug dans l’importateur, d’un problème lié à vB 3.x ou d’une base de données corrompue. Je soupçonne que les deux dernières options sont plus probables. Vous pourriez modifier le code pour sélectionner une catégorie par défaut au cas où la fonction de détection ne renverrait aucun résultat, mais (du moins) sur vB 4, cela indiquerait une catégorie orpheline sans parent approprié, c’est-à-dire une base de données corrompue.

Rien n’est cassé dans notre base de données et cela peut ou non être un problème lié à vB3.8.X. Mais bien sûr, c’est lié à vB3.8.X car il s’agit d’une mise à niveau depuis vB3.8.X, LOL.

D’un autre côté, j’ai lu de nombreux posts sur Internet dans d’autres forums où beaucoup de gens rencontrent des problèmes lors de leur migration vers Discourse, même depuis vB4. (C’est normal) Donc, bien sûr, je ne suis pas la seule personne sur la planète à signaler des bugs de migration. Personne n’aime les migrations. C’est ennuyeux pour tout le monde. Mais je vais bien, car j’adore Discourse. Les gars qui l’ont écrit sont des artistes ! Ils sont impressionnants.

Comme je l’ai dit, l’« approche mauvaise » qui fonctionnera à coup sûr consiste simplement à vider à nouveau notre base de données, à changer manuellement tous les forums enfants que nous souhaitons conserver en forums parents, et à refaire la migration. Je ne veux pas de sujet « par défaut » pour les forums enfants importants, et tous nos forums principaux sont des enfants, pas des parents.

@michaelp si vous n’avez aucune expérience ou intérêt à garantir que ce script fonctionne avec les versions legacy de vB3.8.X, c’est tout à fait compréhensible. Mais d’un autre côté, j’ai aussi des zillions d’années d’expérience en codage, portage, migration, construction et correction de bugs, et j’ai publié un rapport de bug ici sur Meta Discourse concernant ce code. J’adore vB3.8 et je pense encore aujourd’hui que c’était un forum plus agréable que vB4 et vB5. C’est pourquoi je n’ai jamais fait la mise à niveau vers vB5 ou vB5. Nous n’aimons pas vB4/5. :slight_smile:

Si cela doit se transformer en une discussion du type « eh bien, ce n’est pas vB4 et ce n’est pas vB5 », alors je ferai mieux de ne plus poster aucun bug de migration ici et de devenir plus actif une fois la migration terminée.

Salutations.

Je tiendrai un compte rendu ici et je vais quitter cette discussion pour l’instant pour simplement faire le travail :

Non, ce n’est pas le cas. Je tentais simplement de vous aider et de trouver la voie de migration qui vous demanderait le moins d’efforts. Désolé si ma réponse franche vous a offensé. Apparemment, j’ai touché une corde sensible. Ce n’était pas mon intention.

Bonne chance pour la migration ! Peut-être pourrez-vous faire une demande de tirage (pull request) avec vos améliorations une fois terminé.

Aucun souci du tout @michaeld

Merci beaucoup d’avoir écrit le script de migration vbulletin.rb.

Je réalise bien que vous cherchiez à être utile, et oui, votre suggestion de « migrer vers vB4 » m’a effectivement froissé ; mais aucune rancune de ma part. Parfois, je suis facile à froisser, surtout lorsque je signale un bug et que je reçois une réponse qui ne m’est pas utile (dans ma situation / mon cas).

En fait, si ce portage fonctionne (je suis encore en train de le porter), je vous devrai (ainsi qu’à tous les co-auteurs) une dette de gratitude immense pour le script vbulletin.rb principal !

Discourse est vraiment GÉNIAL !!

Merci encore pour le script de migration. Nous n’aurions certainement jamais entrepris ce processus laborieux sans lui !

Merci encore !

PS : Comme je l’ai mentionné, mon plan pour cette « correction » est simplement de faire un dump de la base de données, de changer les forums enfants importants en forums parents, et de « rejouer la même chose, Sam »… :slight_smile:

Pour plus de clarté : je n’ai pas écrit l’intégralité de vbulletin.rb, j’y ai simplement contribué. En revanche, j’ai bien créé celui spécifique à vbulletin5.

Dans les deux cas, MERCI.

Les deux contributions sont solides et un cadeau pour la communauté des forums.

Je publierai toutes les mises à jour de migration vB3.8.X « là-bas », où je tiens une chronique des événements au fur et à mesure qu’ils se déroulent.

Salutations


Le seul commentaire « de prudence » que j’ai à faire jusqu’ici est que, parmi les deux personnes du « côté Discourse de la maison » avec lesquelles j’ai interagi jusqu’à présent, toutes deux « tendaient la main » dans l’espoir de gagner de l’argent grâce à cette migration. L’un était un « expert en migration » engagé qui voulait de l’argent pour m’aider, et l’autre personne était présente sur les forums Discourse, l’autre étant un fournisseur de serveurs Discourse.

Cela me rend plutôt triste. J’essayais de vous aider sans aucun intérêt commercial.

Oui, ce n’est pas vraiment équitable @neounix

@michaeld est très actif dans la communauté Discourse et ils offrent énormément de choses à tous, dans le style open source. Ce qui est particulièrement précieux, car ils (Communiteq (anciennement DiscourseHosting)) hébergent de nombreux sites Discourse à des tarifs très raisonnables et possèdent une grande expérience de l’hébergement réel de Discourse. :revolving_hearts:

Bonjour Jeff,

Récemment, j’ai développé plusieurs solutions Node-RED et j’ai rejoint le forum Node-RED (qui est un site Discourse).

Sur ce forum, tout le monde s’entraide avec une grande ardeur. Des débutants aux experts, chacun aide les autres avec enthousiasme. En fait, cela semble parfois un peu « piloté par la testostérone », où de nombreux utilisateurs expérimentés rivalisent pour être les « meilleurs aides » et les « premiers à répondre ». C’est intéressant. J’ai déjà observé ce phénomène dans des communautés en ligne, y compris la nôtre, au cours de la dernière décennie (mais c’est une autre histoire pour un autre jour).

En tant que personne évoluant dans ce domaine depuis longtemps, et je suis sûr que vous serez d’accord, chaque communauté en ligne a ses forces et ses faiblesses. Lorsque de nouvelles personnes arrivent dans la communauté, elles apportent une perspective précieuse car elles ne font pas partie de la hiérarchie sociale établie. Je pense que tous ceux qui ont de l’expérience dans les communautés en ligne seraient d’accord avec cela.

Bien sûr, j’apprécie énormément les contributions de @michaeld, et le script vbulletin.rb a été un point de départ très utile et très apprécié pour cette migration d’une plateforme héritée vers la « œuvre d’art » que vous avez créée, Discourse. Discourse est vraiment FORMIDABLE. J’attendais quelque chose d’aussi FORMIDABLE depuis des années, et nous étions malheureusement coincés avec vB3. Je ne suis pas un codeur assez doué pour construire quelque chose comme Discourse moi-même.

Donc, oui, je reconnais ma culpabilité (et j’accepte toute sanction) pour avoir été rebuté et avoir eu le sentiment d’être indésirable lorsque j’ai soumis un rapport de bug lors d’un test de migration, puis pour avoir reçu ce qui me semblait être un accueil glacial, et encore plus rebuté lorsque mon rapport de bug a été déplacé de la catégorie « bug » à « support », alors qu’il y avait clairement des bugs dans le script vbulletin.rb. La suggestion de migrer un forum vB3 parfaitement fonctionnel vers un forum vB4 horrible pour que ce script fonctionne mieux est une impasse (et m’a vraiment rebuté, honnêtement) ; et jusqu’à présent, personne n’a pris au sérieux aucun de mes rapports de bug ni montré le moindre intérêt pour les corriger ; je pense donc que ne pas soumettre de rapports de bug liés à une migration vB3 est une bonne idée, n’est-ce pas ?

Donc, ce n’est pas un problème. Par exemple, le script de migration vbulletin.rb actuel (dans la pièce jointe de migration) requiert une table filedata qui n’existe pas dans vB3. Ce n’est pas un problème. Je vais créer une solution de contournement. Il y a des bugs dans la manière dont les forums sont migrés vers les catégories. J’ai déjà créé une solution de contournement pour cela. Peut-être que ma solution n’est pas parfaite, mais ce n’est pas grave. Je teste toujours.

Ne transformons pas cela en une discussion sur la personnalité. Je travaille sur une migration. C’est beaucoup de travail et cela avance lentement ; c’est comme regarder la peinture sécher ; mais d’un autre côté, c’est excitant de voir Discourse prendre vie. Je suis vraiment redevable envers cette communauté et je contribuerai en retour une fois que j’aurai dépassé cette « phase pas très amusante » pour entrer dans la « phase amusante », c’est certain.

Je suis très reconnaissant envers Discourse - c’est une œuvre d'art, et un produit open source très fin. C’est brillant. Merci. Et le script de migration, bien qu’un peu bogué pour vB3, est utilisable ; et j’apprécie énormément ce point de départ pour la migration.

Je suis désolé que vous ayez l’impression que mes commentaires étaient injustes. C’est de ma faute, car je viens de passer quelques semaines à visiter intensivement le forum Node-RED ; où la communauté a une telle attitude d’entraide, que j’ai été rebuté par ma première expérience avec quelques acteurs de Discourse, qui ont tous deux des intérêts commerciaux. Jusqu’à présent, c’est mon impression. Désolé pour cette première impression « ici » par rapport à « là-bas ». C’est Node-RED et leur utilisation de Discourse qui m’ont convaincu de déplacer notre site vers Discourse.

Bien que vous puissiez estimer que mes premières impressions sont injustes, je n’ai cité aucun nom, et je garde mes impressions anonymes, ce que je pensais être juste à ce moment-là. De plus, considérant que mon rapport de bug a été essentiellement minimisé et ignoré par meta (en disant, eh bien, ce n’est que vB3, LOL), qu’est-ce qui serait juste selon vous ? Voulez-vous que je supprime mon commentaire « préventif » sur les intérêts commerciaux ?

Je fais le travail de migration ; et cela avance, bugs du script et tout, car les bugs sont juste des bugs, des choses à éliminer avant de passer à autre chose.

Je m’excuse si, lors de cette migration de test improvisée, sortant d’une expérience Node-RED vibramment soutenante, je n’ai pas été aussi impressionné que dans la communauté NR Discourse ; mais comme @michaeld me l’a répondu, il a dit qu’il ne se souciait pas si j’étais « impressionné » ou « pas » ; et c’est OK. Chacun a droit à son opinion. J’assume que cela incluait ma première opinion / impression, n’est-ce pas ?

Je suis très favorablement impressionné par Discourse et, bien que bogué, le script vbulletin.rb fonctionne assez bien pour commencer ; et assez pour s’amuser, et c’est la chose la plus importante, n’est-ce pas ?

Nous devrions nous amuser !

Je serais un peu plus heureux avec meta si vous preniez mes rapports de bug concernant le script vbulletin.rb plus au sérieux ; mais encore une fois, je comprends. Nous sommes sur vb3 et le message est « vous êtes seul, mon ami » et c’est tout à fait compréhensible. Je comprends.

Personne ne trouve vB3 amusant maintenant. LOL SURTOUT MOI après plus d’une décennie, et je suis si heureux et reconnaissant envers Discourse pour que nous puissions enfin quitter ce forum hérité, dépassé et usé pour passer à cette œuvre d'art moderne en ligne, Discourse.

Dites-moi simplement si vous voulez que je supprime mon mot de mise en garde et je le ferai, si vous pensez vraiment, après cette réponse, qu’il est toujours injuste. Je pense qu’il était juste, mais j’accueille volontiers un point de vue extérieur, aussi. Les points de vue extérieurs sont bons et généralement très utiles (et cela vaut dans les deux sens, j’espère)

Salutations.

Croyez-moi, je suis tout à fait favorable à la migration des communautés hors de logiciels obsolètes. C’est l’un des principaux objectifs de Discourse.

Il est possible que nous puissions soutenir votre travail de développement de script de migration de VB3 vers Discourse par une subvention financière de la part de Discourse, si vos résultats sont positifs et que vous pouvez fournir des preuves que tout fonctionne :hugs:

Bonjour Jeff,

Merci pour votre proposition, mais je vais très bien et n’ai pas besoin d’aide financière.

Je suis, comme on dit, « tranquille pour la vie » ; je n’ai pas vraiment besoin de plus de ressources financières. Je suis chanceux, vraiment béni ; et je ne vois pas la vie comme un jeu visant à devenir « de plus en plus riche ».

Notre site, selon un calcul rapide, sur ses nombreuses années, de sa naissance à son apogée, puis jusqu’à ce qu’il soit « bien avancé en âge », a affiché du contenu issu des résultats de recherche à plus de 500 millions d’utilisateurs uniques non enregistrés, peut-être même plus. Je ne le surveille pas de si près.

Cette « bonne karma » me suffit, sachant que nous avons aidé tant de personnes dans le besoin au fil de longues carrières en informatique. C’est cela qui compte pour moi (et j’imagine pour vous aussi) : ce n’est pas l’argent, c’est la « bonne karma » d’aider les autres dans un forum technologique. Ainsi, lorsque nous le migrerons vers Discourse, ce sera mieux pour tout le monde, c’est certain. Je ne pourrais jamais coder une telle œuvre d'art que Discourse. Je suis un amateur polyvalent et un expert en cybersécurité de métier, ainsi qu’un ingénieur système, et je suis heureusement retraité de la vie publique et professionnelle, pour l’essentiel.

La première migration de test s’est déroulée bien mieux que prévu. J’ai trouvé quelques bugs et certains problèmes spécifiques à notre site, comme des balises BBCODE personnalisées. Je peux tout gérer, ce n’est pas un problème ; ensuite, je devrai le personnaliser pour notre communauté, ce qui offrira du travail amusant à faire. J’ai hâte d’y arriver et de dépasser migration 101.

Concernant vb3, il existe certainement de nombreuses communautés vb3 héritées, et c’est formidable que vous soyez intéressé par leur aide. Je suis d’accord pour dire que vbulletin.rb n’est pas assez avancé pour gérer les migrations de ceux qui sont moins techniques que nous ; car je trouve que le vbulletin.rb de base est « assez bien » et je peux facilement le modifier (et je l’ai déjà fait au fur et à mesure que des erreurs apparaissaient).

Je retourne au travail sur ce sujet ; je dois modifier davantage de choses dans vbulletin.rb pour tenir compte des erreurs, que j’enregistre en détail sur notre site au fur et à mesure. Je dois en finir, et cela ira plus vite si je le fais tout de suite.

Merci encore pour votre aimable proposition. Toutes les notes à ce sujet, à chaque étape, les bonnes, les « imparfaites » et les excellentes, se trouvent à ce lien, que j’ai publié plus tôt :

Je serai ravi de revenir dans le forum meta une fois cette phase terminée et réglée, après que nos utilisateurs l’auront testée et nous auront donné leur retour. Je suis convaincu que la majorité souhaitera que nous passions à Discourse et que nous quittions ce … bordel hérité.

Merci encore pour Discourse. Je ne saurais dire assez de bien de votre généreux cadeau open source au monde.

Honnêtement, je ne veux pas vous prendre de votre temps précieux sur ce sujet, et je réalise que vb3 n’est plus amusant pour personne, et cela est particulièrement vrai pour moi-même. J’espère que l’ancrage lourd que représente vb3 sera bientôt retiré de mon cou. Je peux le gérer, pas de problème, je pense.

Encore une fois, chapeau à vous et à l’équipe de Discourse pour Discourse, et merci à vous et à votre équipe pour le script de migration de base vbulletin.rb. Les bugs ne posent aucun problème. Si c’était trop facile, ce ne serait pas aussi intéressant !

En fait, la migration fonctionne déjà très bien, mais je dois écrire plus de code personnalisé pour nos balises BBCODE personnalisées, corriger quelques bugs ici et là, et tout relancer !

Merci encore !

En y réfléchissant,

@codinghorror

Si vous souhaitez qu’un membre de votre équipe travaille avec moi pour corriger certains des bugs les plus importants, comme l’erreur filedata due à une table manquante dans vb3, je suis ravi de vous aider, même si cela ralentit les choses, au bénéfice des autres communautés vb3 et pour améliorer vbulletin.rb pour vb3.

Faites-le-moi savoir. Après réflexion, je suis d’accord pour ralentir et apporter mon aide. Je ne veux surtout pas passer pour quelqu’un d’égoïste ou qui ne joue pas l’esprit d’équipe dans cette affaire.

Pour être honnête, je ne suis pas un excellent collaborateur en matière de codage, mais je suis heureux d’essayer si cela aide les autres utilisateurs hérités de vb3.

Attends. Tout d’abord, je n’ai pas dit cela. J’ai dit que je n’essayais pas de « t’impressionner », et c’était une réponse à ton affirmation selon laquelle tu n’étais pas « impressionné par ma réponse », que tu as ensuite retirée de ton message. Encore une fois : cela me rend triste.

Et peu importe si tu es impressionné ou non, si tu as l’impression d’avoir reçu un accueil froid ou non, tu as dit – dans mon dos – que j’avais « les mains tendues pour essayer de gagner de l’argent grâce à cette migration », ce qui est tout simplement faux. Et puis il y a beaucoup de mots de ta part, mais tu n’as pas abordé le fait que c’est tout simplement inexact. En fait, tu l’as répété. Et « je suis désolé que tu te sentes ainsi » n’est pas une excuse.

Je pense toujours qu’il ne s’agit pas d’un bug, et je pense toujours qu’il y a un problème avec la façon dont vos forums sont stockés dans votre base de données, soit quelque chose de purement « incorrect », soit quelque chose qui était acceptable dans vB3 mais pas dans vB4.

Je ne t’ai jamais demandé d’exécuter vB4, j’ai suggéré que tu migreras ta base de données vers celui-ci et que tu le ferais ensuite passer par l’importateur. Vrai style « unix » où tu pipes plusieurs étapes pour obtenir le résultat souhaité – à mon avis, le chemin de migration le plus court et le moins coûteux.

C’est le bon conseil. Y a-t-il une raison pour laquelle vous ne pouvez pas passer à VB4 ? Car cela pourrait être plus simple que d’écrire un tout nouveau script de migration pour VB3.

Micheald,

Fais-nous tous une faveur et laisse tomber, s’il te plaît.

Je peux lire presque aussi bien que n’importe qui, et ce que tu as dit, c’est :

Peut-être envisagez-vous de mettre à niveau vers au moins vB 4 en premier… l’importateur est principalement conçu pour la version 4.x.

C’est tout à fait différent de :

J’ai suggéré que tu migrasses ta base de données vers celui-ci et que tu le fasses ensuite passer par l’importateur.

Laisse tomber, @Micheald.

Arrête tout ce jeu de va-et-vient mesquin. S’il te plaît.

C’est totalement improductif.

Je suis vraiment désolé si vous avez mal compris ma suggestion, et encore plus désolé que vous ayez jugé ce commentaire « improductif », alors qu’il s’agissait d’un conseil bien intentionné.

Je ne suggérerais jamais honnêtement à quelqu’un de gérer son forum avec vB4.

Je me désabonnerai maintenant de ce sujet car je ne me sens pas traité de manière équitable de votre part.

Je ne suis pas d’accord. En fait, selon notre panneau de contrôle des membres vB hérité, nous ne pouvons absolument pas passer à vB4.

Évidemment, puisque notre site utilise vB depuis longtemps, nous devrions avoir une idée de la façon dont cela fonctionne côté vB.

J’ai déjà mentionné que la mise à niveau vers vB4 est exclue pour nous.

Cela ne mène nulle part (c’est comme une fusillade circulaire, LOL), d’abord c’est « migrez vers vB4 », puis c’est « travaillons ensemble sur vB3 et amusons-nous »… puis, oh attendez, « ce que nous voulions dire, c’est « allez, migrez vers vB4 comme vous nous l’avez dit il y a quelques jours être exclu ».

Ce n’est vraiment pas amusant ici sur meta LOL.

Arrêtons s’il vous plaît les idées du genre « passez simplement votre DB à vB4 et tout sera génial ». J’ai été clair : c’est exclu et cela n’arrivera pas.

MERCI BEAUCOUP

Voyez par vous-mêmes… aucune option pour passer à vB4… C’est une « option exclue » comme je l’ai mentionné.

Cela devrait être clair à partir de cette image du panneau de contrôle sur vB… :frowning: