Bug in import_script di vBulletin nell'importazione delle sottocategorie

Carissimi,

innanzitutto, un GRANDE GRAZIE a Discourse. Discourse è un’opera d’arte e molto impressionante. Dopo oltre un decennio con vBulletin, non siamo riusciti a trovare alcun software per forum a cui migrare (era tutto sempre lo stesso, sempre lo stesso… bla bla), fino a Discourse. GRAZIE

Attualmente, sono in modalità di test, importando da vB 3.8.X all’ultima versione di Discourse in un container docker, entrambe cose nuove per me. Anzi, prima di questa settimana, non avrei mai pensato di scrivere una sola riga di Ruby, ma Discourse è così valido che ne vale la pena.

Lo script di importazione vbulletin.rb sta procedendo da un giorno o due; e per la maggior parte, funziona bene. Anzi, è estremamente impressionante. Qualche volta ha generato un errore, ma quando ho riavviato lo script, l’errore è scomparso.

Ho trovato un bug nell’importazione delle categorie figlie. (che non scompare con il riavvio) ed è questo:


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'

Il mio piano per risolvere questo problema è poco elegante. Pensavo di ridumpare il database vB e rendere tutti i forum figli dei genitori, per poi eseguire l’intera migrazione di nuovo; ma poi ho pensato che forse dovrei essere più sociale e pubblicare questo come un rapporto di bug.

Avete suggerimenti su un modo migliore per risolvere il problema, diverso dalla mia idea da principiante sopra?

Se no, ho intenzione di fare un dump di nuovo, apportare modifiche manualmente al DB e migrare di nuovo, cosa che sono sicuro sia un modo da principiante per risolvere il problema.

Grazie!

Forse dovresti considerare di aggiornare almeno alla versione vB 4… l’importatore è principalmente mirato alla versione 4.x.

Quanto sono nidificate le tue categorie? Se hai solo uno o due livelli, commenta semplicemente il codice di appiattimento nelle righe 287-291.

No. Non lo farò (aggiornare a vB4).

Ho già commentato le righe problematiche ieri.

La mia domanda è essenzialmente come risolvere questo problema per vB 3.8; altrimenti, lo correggerò da solo. Ho segnalato, in questo post, un “bug” relativo al codice e, se non ottengo una risposta con una “correzione del bug nel codice”, provvederò personalmente a implementare la correzione.

È per questo che ho pubblicato il bug qui :). Si tratta di una segnalazione di “bug” riguardante il codice. Il codice presenta un “bug” e quindi l’ho segnalato…

Hmm. Stavo cercando di essere “socievole” pubblicando il bug qui, nella speranza di ricevere suggerimenti dai leader (del codice) che funzionino nel mio caso (non nel caso vB4); e mi scuso ancora, ma non aggiornerò a vB4 in nessuna circostanza. Scusa se sono stato così diretto e per non aver seguito quell’idea. Modificherò lo script di migrazione come necessario e aggiornerò il nostro database come richiesto. Finora, ho già aggiunto codice per tag personalizzati, ecc.

Saluti.

In quanto uno dei contributori dell’importatore per vBulletin, autore dell’importatore per VB 5 e persona che ha eseguito oltre 50 conversioni da vB a Discourse, stavo semplicemente condividendo l’informazione che l’importatore è stato testato principalmente su vB 4, non su 3.8, che è fuori supporto da oltre 7,5 anni. Non stavo cercando di “impressionarti”…

Comunque. Mi chiedo se si tratti di un bug nell’importatore, di un problema relativo a vB 3.x o di un database danneggiato. Sospetto che le ultime due opzioni siano più probabili. Potresti modificare il codice per selezionare una categoria predefinita nel caso in cui la funzione di rilevamento non restituisca alcun risultato, ma (almeno) su vB 4 ciò indicherebbe una categoria orfana senza un genitore valido, ovvero un database danneggiato.

Non c’è nulla di rotto nel nostro DB e potrebbe trattarsi o meno di un problema legato a vB3.8.X. Ma ovviamente è correlato a vB3.8.X perché si tratta di un aggiornamento da vB3.8.X, LOL.

D’altra parte, ho letto molti post su Internet in altri forum dove molte persone hanno riscontrato problemi durante la migrazione a Discourse, anche da vB4. (è normale) Quindi, ovviamente, non sono l’unica persona al pianeta a segnalare bug di migrazione. A nessuno piace la migrazione. È noiosa per tutti. Ma per me va bene, perché amo Discourse. I ragazzi che lo hanno scritto sono artisti! Sono impressionanti.

Come ho detto, l’“approccio goffo” che funzionerà sicuramente è semplicemente scaricare nuovamente il nostro DB, modificare manualmente tutti i forum figli che vogliamo mantenere trasformandoli in forum genitori e procedere di nuovo con la migrazione. Non voglio un argomento ‘predefinito’ per i forum figli importanti, e tutti i nostri forum principali sono figli, non genitori.

@michaelp se non hai esperienza o interesse a garantire che questo script funzioni con le versioni legacy di vB3.8.X, è perfettamente comprensibile. Ma d’altra parte, ho anche anni e anni di esperienza nella programmazione, nel porting, nella migrazione, nella costruzione e nella correzione di bug, e ho pubblicato un report di bug qui su Meta Discourse relativo a questo codice. Amo vB3.8 e ancora oggi penso che fosse un forum migliore rispetto a vB4 e vB5. È per questo che non ho mai aggiornato a vB5 o vB5. Non ci piacciono vB4/5. :slight_smile:

Se questa cosa si trasformerà in una discussione del tipo “beh, non è vB4 e non è vB5”, allora è meglio che non pubblichi più alcun bug di migrazione qui e diventi più attivo solo dopo il completamento della migrazione.

Saluti.

Manterrò un resoconto aggiornato qui e mi ritiro temporaneamente da questa discussione per semplicemente portare a termine il lavoro:

No, non è così. Stavo solo cercando di aiutarti e di capire il percorso di migrazione che richiedesse meno sforzo per te. Mi dispiace se ti ho offeso con la mia risposta onesta. A quanto pare ho toccato un punto sensibile. Non era mia intenzione.

Buona fortuna con la migrazione! Forse, una volta finito, potrai creare una pull request con i tuoi miglioramenti.

Nessun problema, @michaeld.

Grazie mille per aver scritto lo script di migrazione vbulletin.rb.

So che stavi cercando di essere utile e sì, il tuo suggerimento di “migrare a vB4” mi ha dato fastidio; ma non ci sono rancori. A volte sono facile da “irritare”, specialmente quando segnalo un bug e ricevo una risposta che non mi è d’aiuto (nella mia situazione/caso).

In realtà, se questa porta funzionerà (sono ancora in fase di porting), ti sarò debitore (e a tutti i co-autori) di un grande grazie per lo script vbulletin.rb!

Discourse è davvero FANTASTICO!!

Grazie ancora per lo script di migrazione. Senza di esso, non ci saremmo certo avventurati in questo processo laborioso!

Grazie ancora!

PS: Come ho detto, il mio piano per questa “correzione” è semplicemente fare un dump del database, trasformare i forum figli importanti in forum genitori e “rifare la stessa cosa, Sam”… :slight_smile:

Per chiarezza: non ho scritto l’intero vbulletin.rb, ho solo contribuito. Ho invece creato quello specifico per vbulletin5.

In ogni caso, GRAZIE.

Entrambi i contributi sono solidi e un dono per la comunità dei forum.

Aggiornerò le eventuali migrazioni vB3.8.X “lì”, dove tengo un resoconto continuo degli eventi mentre si svolgono.

Saluti


L’unico commento “di cautela” che ho finora è che, delle due persone dal “lato Discourse della casa” con cui ho interagito finora, entrambe “avevano le mani tese”, cercando di guadagnare da questa migrazione. Uno era un “esperto di migrazione” ingaggiato che voleva soldi per aiutarmi, e l’altra persona era nei forum di Discourse, l’altra era un fornitore di server Discourse.

Questo mi rende piuttosto triste. Stavo cercando di aiutarti senza alcun interesse commerciale.

Sì, non è proprio giusto @neounix

@michaeld è molto attivo nella comunità Discourse e restituisce moltissimo a tutti, nello stile open source. Il che è particolarmente prezioso dato che loro (Communiteq (precedentemente DiscourseHosting)) ospitano molti siti Discourse a tariffe molto ragionevoli e hanno tanta esperienza con l’hosting reale di Discourse. :revolving_hearts:

Ciao Jeff,

Recentemente ho sviluppato diverse soluzioni Node-RED e mi sono unito al forum di Node-RED (che è un sito basato su Discourse).

In quel forum, tutti si aiutano a vicenda con grande entusiasmo. Dai principianti agli esperti, tutti contribuiscono attivamente a sostenere gli altri. Anzi, a volte sembra un po’ “guidato dal testosterone”, dato che molti degli utenti esperti competono per essere i “migliori aiutanti” e i “primi a rispondere”. È interessante. Ho visto questo comportamento in comunità online in passato, inclusa la nostra, nell’ultimo decennio (ma questa è un’altra storia per un’altra occasione).

Come qualcuno che opera in questo settore da molto tempo, e sono sicuro che tu sia d’accordo, ogni comunità online ha i suoi punti di forza e le sue debolezze. Quando arrivano nuove persone nella comunità, offrono una prospettiva preziosa perché non fanno parte della gerarchia sociale consolidata. Credo che chiunque abbia esperienza nelle comunità online sia d’accordo su questo.

Ovviamente, apprezzo moltissimo i contributi di @michaeld, e lo script vbulletin.rb è stato un punto di partenza molto utile e molto apprezzato per questa migrazione da un sistema legacy verso il “capolavoro” che hai creato, Discourse. Discourse è davvero GRANDE. Aspettavo qualcosa di così GRANDE da anni, e quindi eravamo bloccati, tristemente, con vB3, e non sono un programmatore così bravo da costruire qualcosa come Discourse da solo.

Quindi, sì, mi dichiaro colpevole (e accetto qualsiasi punizione) di essermi sentito scoraggiato e non benvenuto quando ho inviato un rapporto di bug durante un test di migrazione e ho ricevuto quello che mi è sembrato un trattamento freddo, e ancora più scoraggiante quando il mio rapporto di bug è stato spostato da ‘bug’ a ‘supporto’, quando chiaramente ci sono bug nello script vbulletin.rb. Il suggerimento di migrare un forum vB3 perfettamente funzionante verso un orribile forum vB4 per far funzionare meglio questo script è una soluzione irrealizzabile (e mi ha scoraggiato, onestamente); e finora, nessuno ha preso sul serio i miei rapporti di bug né ha mostrato interesse a risolverli; quindi penso che non inviare rapporti di bug relativi a una migrazione da vB3 sia una buona idea, vero?

Quindi, non è un problema. Ad esempio, l’attuale script di migrazione vbulletin.rb (nell’allegato della migrazione) richiede una tabella, filedata, che non esiste in vB3. Non è un problema. Creerò una soluzione alternativa. Ci sono bug nella migrazione da forums a categories. Ho già creato una soluzione alternativa per questo. Forse la mia soluzione non è perfetta, ma va bene. Sto ancora facendo test.

Non trasformiamo questo in una discussione sulla personalità. Sto lavorando alla migrazione. È un lavoro enorme e procede lentamente; come guardare secca la vernice; ma d’altra parte è entusiasmante vedere Discourse prendere vita. Devo davvero molto a questa comunità e contribuirò non appena supererò questa “fase non così divertente” e entrerò nella “fase divertente”, sicuramente.

Apprezzo moltissimo Discourse - è un capolavoro, e un prodotto open source di altissima qualità. È brillante. Grazie. E lo script di migrazione, sebbene un po’ buggato per vB3, è utilizzabile; e apprezzo moltissimo quel punto di partenza per la migrazione.

Mi dispiace che tu abbia sentito i miei commenti come ingiusti. È colpa mia, perché sono appena uscito da alcune settimane di visite intensive nel forum di Node-RED; dove la comunità ha un atteggiamento così positivo verso l’aiuto reciproco, che sono rimasto scoraggiato dalla mia esperienza iniziale con alcuni partecipanti di Discourse, entrambi con interessi commerciali. Finora, questa è la mia impressione. Mi dispiace per quella prima impressione “qui” rispetto a “là”. È stato Node-RED e il loro utilizzo di Discourse che mi ha convinto a spostare il nostro sito su Discourse.

Anche se potresti pensare che le mie prime impressioni siano ingiuste, non ho fatto nomi e ho mantenuto le mie impressioni anonime, cosa che credevo giusta in quel momento. Inoltre, considerando che il mio rapporto di bug è stato sostanzialmente sminuito e ignorato da meta (come in, beh, è solo vB3, LOL), cosa sarebbe giusto secondo te? Vuoi che elimini il mio commento “di cautela” sugli interessi commerciali?

Sto facendo il lavoro sulla migrazione; e sta procedendo, bug nello script e tutto, perché i bug sono solo bug, cose da risolvere e poi andare avanti.

Mi scuso se durante questa migrazione di test improvvisata, uscendo da un’esperienza vibrante e di supporto nel forum di Node-RED, non sono stato così impressionato come lo sono stato nella comunità Discourse di NR; ma come ha risposto @michaeld, ha detto che non gli importa se sono “impressionato” o “no”; e va bene. Ognuno ha diritto alla propria opinione. Presumo che ciò includa anche la mia opinione/impressione iniziale, giusto?

Sono molto positivamente impressionato da Discourse e, sebbene ci siano dei bug, lo script vbulletin.rb funziona abbastanza bene per iniziare; e abbastanza per divertirsi, e questa è la cosa più importante, vero?

Dovremmo divertirci!

Sarei un po’ più felice con meta se voi prendeste i miei rapporti di bug nello script vbulletin.rb più seriamente; ma poi di nuovo, capisco. Siamo su vb3 e il messaggio è sei da solo, amico e questo è perfettamente comprensibile. Capisco.

Nessuno pensa che vB3 sia più divertente. LOL Soprattutto IO dopo oltre un decennio, e sono così felice e grato per Discourse così possiamo finalmente spostarci da quel forum legacy, passato il suo apice e il suo tempo verso questo capolavoro di arte online moderna, Discourse.

Fammi sapere se vuoi che elimini il mio commento solo un avvertimento e lo farò, se pensi davvero, dopo questa risposta, che sia ancora ingiusto. Penso che fosse giusto, ma accolgo con favore anche un punto di vista esterno. I punti di vista esterni sono buoni e generalmente molto utili (e questo vale per entrambe le parti, spero)

Ciao.

Credetemi, sono totalmente a favore della migrazione delle comunità da software obsoleti. Questo è uno degli obiettivi principali di Discourse.

È possibile che sosteniamo finanziariamente il vostro lavoro di sviluppo dello script di migrazione da VB3 a Discourse con una sovvenzione da parte di Discourse, se i risultati saranno positivi e se potrete fornire prove che tutto funziona correttamente :hugs:

Ciao Jeff,

Grazie per l’offerta, ma sto bene davvero; non ho bisogno di alcun supporto finanziario.

Sono “a posto per la vita”, come si dice; non ho davvero bisogno di ulteriori risorse finanziarie. Sono fortunato, come si suol dire, veramente benedetto; e non considero la vita un gioco per diventare “sempre più ricchi”.

Il nostro sito, secondo un rapido calcolo, nel corso dei suoi molti anni, dalla nascita al picco e fino a essere “vecchio di molti denti”, ha mostrato contenuti provenienti dai risultati di ricerca a oltre 500 milioni di utenti unici non registrati, forse anche di più; non lo tengo sotto controllo così da vicino.

Quella “buona karma” è sufficiente per me, sapendo che abbiamo aiutato così tante persone bisognose nel corso di lunghe carriere nel settore IT. Per me è questo il punto (e immagino lo sia anche per te): non si tratta di denaro, ma della “buona karma” di aiutare gli altri in un forum tecnologico. Quindi, quando lo aggiorneremo a Discourse, sarà sicuramente migliore per tutti. Non sarei mai in grado di scrivere un capolavoro come Discourse. Sono un dilettante a tutto tondo e un esperto di cybersecurity e ingegnere dei sistemi per professione, e sono felicemente ritirato dalla vita pubblica e professionale, per la maggior parte.

La prima migrazione di prova è andata molto meglio del previsto. Ho individuato alcuni bug e alcune problematiche specifiche del nostro sito, come i tag BBCODE personalizzati. Posso gestirli tutti, non è un problema; poi dovrò personalizzarlo per la nostra comunità, quindi ci sarà del lavoro interessante da fare, e non vedo l’ora di arrivare a superare la migrazione 101.

Per quanto riguarda vb3, ci sono sicuramente molte comunità legacy vb3 là fuori ed è fantastico che tu sia interessato ad aiutarle. Concordo sul fatto che vbulletin.rb non sia abbastanza avanzato per gestire le migrazioni per chi è meno esperto di noi; lo trovo il core vbulletin.rb “sufficientemente buono” e posso modificarlo facilmente (e lo sto facendo man mano che sorgono errori).

Torno al lavoro su questo; devo modificare alcune altre cose in vbulletin.rb per tener conto degli errori, che sto registrando nel dettaglio sul nostro sito man mano che procedo. Devo portare a termine questa attività, e sarà più veloce se me ne occupo direttamente ora.

Grazie ancora per la gentile offerta. Tutte le note su questo, a ogni passo, le cose buone, quelle “non perfette” e quelle eccellenti, saranno disponibili in questo link, che ho pubblicato in precedenza:

Sarò felice di tornare a occuparmi della sezione meta dopo aver completato questa fase definitivamente e aver fatto testare il tutto ai nostri utenti, per poi raccogliere i loro feedback. Sono convinto che la maggior parte vorrà passare a Discourse e abbandonare il nostro legacy… caos.

Grazie ancora per Discourse. Non posso dire abbastanza cose positive sul tuo generoso regalo open source al mondo.

Onestamente, non voglio sottrarre il tuo prezioso tempo a questo; so che vb3 non è più divertente per nessuno, e questo vale soprattutto per me stesso. Spero che il pesante ancorone vb3 venga presto tolto dal mio collo. Posso gestirlo, nessun problema, credo.

Ancora una volta, il mio cappello in segno di rispetto a te e al team di Discourse per Discourse, e grazie a te e al tuo team per lo script di migrazione di base vbulletin.rb. I bug non sono affatto un problema. Se fosse troppo facile, non sarebbe così interessante!

In realtà, la migrazione funziona già bene, ma devo scrivere altro codice personalizzato per i nostri BBCODE personalizzati, correggere alcuni bug qua e là e rilanciare tutto!

Grazie ancora!

D’altra parte,

@codinghorror

Se vuoi che qualcuno del tuo team collabori con me per risolvere alcuni dei bug più gravi, come l’errore filedata causato da una tabella mancante in vb3, sono felice di dare una mano e rallentare i tempi, a beneficio di altre comunità vb3 e per rendere vbulletin.rb migliore per vb3.

Fammi sapere. Sono disposto a rallentare e aiutare, ripensandoci. Di certo, non voglio apparire egoista o poco collaborativo in questa faccenda.

A dire il vero, non sono un grande collaboratore di codice, ma sono felice di provare se questo può aiutare altri utenti legacy di vb3.

Aspetta. Prima di tutto, non l’ho detto io. Ho detto che non stavo cercando di “impressionarti” e questo era una risposta alla tua affermazione di non essere “impressionato dalla mia risposta”, che poi hai rimosso dal tuo post. Ancora una volta: questo mi rattrista.

E non importa se sei impressionato o no, se senti di aver ricevuto un trattamento freddo o no, hai detto - alle mie spalle - che “avevo (le) mani tese cercando di guadagnare da questa migrazione”, il che semplicemente non è vero. E poi ci sono molte parole da parte tua, ma non hai affrontato il fatto che ciò sia semplicemente falso. In effetti, lo hai ripetuto. E “mi dispiace che tu la pensi così” non è una scusa.

Rimango dell’idea che non si tratti di un bug e che ci sia qualcosa che non va nel modo in cui i tuoi forum sono archiviati nel tuo database, sia qualcosa di palesemente “sbagliato” o qualcosa che era accettabile in vB3 ma non in vB4.

Non ti ho mai chiesto di eseguire vB4, ho suggerito di migrare il tuo database verso di esso e poi eseguirlo attraverso l’importatore. Vero stile “unix” dove si collegano più passaggi per ottenere l’obiettivo desiderato - a mio avviso il percorso di migrazione più breve ed economico.

Questo è il consiglio corretto. C’è qualche motivo per cui non puoi aggiornare a VB4? Perché potrebbe essere più semplice che scrivere un intero migratore per VB3.

Micheald,

Fai un favore a tutti noi e smetti con questo discorso.

So leggere abbastanza bene quanto chiunque altro, e quello che hai detto è stato:

Forse considera di aggiornare almeno a vB 4 prima… l’importatore è principalmente mirato alla versione 4.x.

Questo è molto diverso da:

Ho suggerito di migrare il tuo database su di esso e poi elaborarlo con l’importatore.

Smettila semplicemente, @Micheald.

Per favore, fermati con queste inutili discussioni. Per favore.

È completamente improduttivo.

Mi dispiace davvero se hai frainteso il mio suggerimento e mi dispiace ancora di più che tu lo abbia considerato un commento “non produttivo”, dato che era un consiglio sincero.

Non suggerirei mai a nessuno di gestire il proprio forum su vB4.

Ora mi disiscriverò da questo argomento perché non mi sento trattato in modo equo.

Non sono d’accordo. In effetti, secondo il nostro pannello di controllo per i membri legacy di vB, non possiamo affatto aggiornare a vB4.

Ovviamente, dato che il nostro sito è un utente vB da molto tempo, dovremmo avere un’idea di come funziona dal lato vB.

Ho già menzionato che l’aggiornamento a vB4 è fuori discussione per noi.

Questa situazione non porta da nessuna parte (è come una sparatoria circolare, LOL): prima si dice “migrate a vB4”, poi “lavoriamo insieme su vB3 e divertiamoci”… e poi, oh aspetta, “ciò che intendevamo era ‘andate a migrare a vB4 come ci avete detto giorni fa che era fuori discussione’”.

Davvero non è divertente qui su meta, LOL.

Per favore, smettiamo con le idee del tipo “aggiornate semplicemente il vostro DB a vB4 e la vita sarà fantastica”. Sono stato chiaro: è fuori discussione e non accadrà.

GRAZIE MOLTO

Vedete da soli… nessuna opzione per aggiornare a vB4… È una “non opzione”, come ho già detto.

Dovrebbe essere chiaro da questa immagine del pannello di controllo su vB… :