Migrare una mailing list su Discourse (mbox, Listserv, Google Groups, ecc)

La soluzione è letteralmente nel post sopra il tuo. :wink:

Dovremmo correggere lo script. Forse puoi creare una PR che risolva il problema per tutti?

Grazie, ha risolto il problema, mi dispiace. Come penitenza per la mia incapacità di leggere, ho aperto Added duplication to name to prevent modification of frozen string exception by adam-skalicky · Pull Request #30325 · discourse/discourse · GitHub per risparmiare a chiunque altro la vergogna di fare una domanda stupida.

1 Mi Piace

Questo script di importazione replica in qualche modo il threading delle email di Mailman 2 in Discourse (ad esempio, utilizzando la piccola freccia di Discourse per indicare “In-Reply-To”) o è puramente cronologico (per ogni thread basato su Message-ID, In-Reply-To e References)?

1 Mi Piace

Sì, lo fa

3 Mi Piace

Fantastico. Molte delle email della mia mailing list non hanno gli header In-Reply-To e References che dovrebbero avere, quindi potrebbero essere importate come nuovi argomenti anziché come semplici risposte. Per quanto ricordo, lo script utilizza quegli header o gli header dell’oggetto (non entrambi).

Penso di averlo già chiesto in passato, ma ci sono modi non manuali per aggiungere questi header al file MBOX e/o riorganizzare le email prima o dopo l’importazione in Discourse?

Ora è possibile unire argomenti e mantenere l’ordine cronologico, quindi forse questa è la soluzione. Mancherebbe solo la piccola freccia di Discourse per indicare a chi il messaggio era una risposta.

1 Mi Piace

Lo script di importazione mbox ha due fasi. La prima è l’indicizzazione e produce un database SQLite. Potresti modificare i dati in SQLite prima dell’importazione, oppure modificare lo script Ruby.

Tutta la magia di ordinamento/raggruppamento per oggetto o intestazioni avviene qui:

Potresti aggiungere la tua logica di raggruppamento se sai come vuoi raggruppare le email.

3 Mi Piace

Ci vorrà un po’ prima che io prenda in considerazione qualcosa di così complesso!

Su https://bazaar.launchpad.net/~mailman-coders/mailman/2.1/view/head:/Mailman/Archiver/pipermail.py#L669, Pipermail di Mailman 2 sembra cercare quanto segue in ordine di preferenza:

  1. In-Reply-To.
  2. References.
  3. Email più vecchia con oggetto corrispondente.

Quella combinazione di approcci sembra ideale. Nel terzo caso, potrebbe avere senso che Discourse non utilizzi la freccia “in risposta a”.

A memoria, Hyperkitty di Mailman 3 non considerava affatto l’oggetto, il che non era altrettanto buono.

2 Mi Piace

Perdonate se intervengo con una domanda forse stupida, ma non sono riuscito a trovare una risposta chiara qui. Vorrei sapere se il processo di importazione crea un nuovo utente Discourse per ogni email, con de-duplicazione ovviamente, o se entrano tutti come un unico utente di sistema. Ho una mailing list con 20 anni di post ed è piuttosto grande e difficile da sperimentare. Inoltre, che mi dite delle risposte nella lista originale? Vengono inserite in discussioni separate (threaded)?

Sì, gli utenti vengono creati, uno per indirizzo email.

Ciao a tutti,

Sto cercando di migrare da Google Groups. Quando tento di scaricare i messaggi usando questo comando script/import_scripts/google_groups.rb -g <nome_gruppo> -d <nome_dominio> ottengo subito una stacktrace:

Fetching gem metadata from https://rubygems.org/.......
Resolving dependencies...
/usr/local/lib/ruby/gems/3.4.0/gems/childprocess-4.1.0/lib/childprocess.rb:6: warning: logger was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0.
You can add logger to your Gemfile or gemspec to silence this warning.
/usr/local/lib/ruby/gems/3.4.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/zipper.rb:23: warning: base64 was loaded from the standard library, but is not part of the default gems starting from Ruby 3.4.0.
You can add base64 to your Gemfile or gemspec to silence this warning.
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:71:in 'block (2 levels) in Bundler::Runtime#require': There was an error while trying to load the gem 'webdrivers'. (Bundler::GemRequireError)
Gem Load Error is: cannot load such file -- base64

Posso aggiungere un gem "base64" allo script google_groups.rb per andare avanti un po’, ma poi vedo questo:

Logging in...
/usr/local/lib/ruby/gems/3.4.0/gems/rubyzip-3.2.2/lib/zip/entry.rb:757:in 'File#initialize': No such file or directory @ rb_sysopen - /root/.webdrivers/root/.webdrivers/chromedriver (Errno::ENOENT)

Qualche suggerimento su come posso procedere con il download dei messaggi?

Modifica: c’è forse una versione più recente di questo script? I Gruppi non usano più /forum nel loro URL, ora è la notazione /g/ e ci sono altre modifiche.