Includere più plugin popolari con il core di Discourse

Nelle prossime settimane, sposteremo diversi plugin popolari di Discourse nel repository principale. Ciò significa che Discourse verrà fornito con un numero maggiore di plugin per impostazione predefinita e sarà più facile per noi mantenerli tutti testati e aggiornati.

Tutti questi plugin rimarranno disabilitati per impostazione predefinita, quindi questo non avrà alcun impatto visibile sulle community esistenti. Se utilizzi un servizio di hosting gestito come discourse.org, non è necessario fare nulla.

Community self-hosted

Se esegui l’hosting di Discourse autonomamente e stai già utilizzando uno di questi plugin, ti verrà richiesto di rimuovere la riga pertinente dal tuo file app.yml prima della prossima ricostruzione.

Ambiente di sviluppo

Se hai già uno dei plugin installato localmente, e poi scarichi l’ultima versione di Discourse core, accadrà una delle due cose.

  1. Se utilizzi symlink per i tuoi plugin, otterrai un errore durante git pull. Per risolvere il problema, elimina il symlink, quindi esegui nuovamente git pull.

  2. Se cloni i plugin direttamente, il git pull del core avrà successo, ma avrai alcune “modifiche non salvate” sorprendenti causate dai repository git annidati. Il modo migliore per procedere è eliminare la directory interessata, quindi ripristinarla da main. Ad esempio:

    rm -rf plugins/discourse-reactions
    git restore plugins/discourse-reactions
    

Plugin interessati

65 Mi Piace

Grazie per aver fornito l’intera riga HINT nel primo post qui, questo mi ha aiutato a diagnosticare un rebuild fallito stamattina :blush:

17 Mi Piace

Grazie. Con la mia scarsa conoscenza dello sviluppo e della programmazione, vorrei comunque farti una domanda. Questi plugin, che originariamente sono componenti destinati ad essere aggiunti a un’installazione di base, potranno un giorno perdere il loro carattere di plugin e diventare parte integrante di un’installazione di base, senza essere affatto chiamati plugin?

3 Mi Piace

Potrebbero farlo, sì. In particolare, i plugin di autenticazione (ad esempio, apple-auth) è molto probabile che vengano assorbiti nel core, proprio come i nostri altri metodi di autenticazione integrati (ad esempio, Google, Facebook, ecc.).

3 Mi Piace

Una mossa interessante che potenzia ulteriormente il discorso per impostazione predefinita e facilita le nuove installazioni.

Una domanda riguardo a:

ti verrà chiesto di rimuovere la riga pertinente dal tuo file app.yml prima della prossima ricostruzione.

Ci sarà anche un prompt o un messaggio di avviso prima/quando si fa clic sul pulsante di aggiornamento dalla pagina di aggiornamento dell’amministratore?

3 Mi Piace

Se ricordo bene dalla mia esperienza, potrai aggiornare docker solo all’inizio. Una volta aggiornato docker, ti verrà mostrato un messaggio nell’interfaccia utente di aggiornamento che spiega che devi aggiornare tramite la riga di comando e come farlo.

Quindi, quando aggiorni dalla riga di comando, vedrai il SUGGERIMENTO per ogni plugin che devi rimuovere da app.yml come spiegato nel primo post sopra.

4 Mi Piace

Questo è un buon aggiornamento, ma era davvero necessario? Dare un fallimento di ricostruzione mi sembra un po’ troppo severo… un avviso dell’interfaccia utente o un aggiornamento automatico (o semplicemente ignorarli del tutto) sarebbe stato meglio che mettermi una pistola alla tempia e dire “rimuovili ora”

6 Mi Piace

Questo mi ha tratto in inganno la scorsa settimana quando ho provato ad aggiornare tramite riga di comando e non è riuscito (plugin delle reazioni).

Mi ha tratto in inganno di nuovo quando il mio aggiornamento da riga di comando è fallito di nuovo stamattina (plugin data explorer).

Accoglierei con grande favore un avviso sulla riga di comando prima che inizi il processo di aggiornamento, e poi inevitabilmente fallisca.

Due volte in due settimane i miei aggiornamenti sono falliti e questo ha significato che il mio Discourse è rimasto offline per tutto il tempo necessario per risolvere il problema, modificare le configurazioni, riprovare, ecc. - tutto mentre ero in un lieve stato di panico perché tutto era rotto.

8 Mi Piace

C’è un altro problema.

Dipendenze Gem.

Non si tratta solo di eliminare cloni di plugin ridondanti.

Abbiamo anche il problema degli scontri tra le versioni delle gem.

Sto semplicemente passando attraverso un processo di downgrade di dipendenze specifiche in un paio dei miei plugin perché il plugin principale è molto indietro.

Quindi questa mossa introduce alcune dipendenze aggiuntive non necessarie secondo me e rende la ricostruzione più fragile.

3 Mi Piace

2 post sono stati divisi in un nuovo argomento: Miglioramenti suggeriti alla pagina dei plugin, ora che più plugin sono inclusi nel core

Una mossa che seguiremo a breve è eliminare le righe gem nei plugin principali e passare al file gem monolitico.

3 Mi Piace

Sono curioso, hai ottenuto questo elenco di plugin dalle installazioni di Discourse in uso? Corrisponde a quasi il 50% della mia installazione principale!

2 Mi Piace

Mi chiedo se avere tutti questi plugin inclusi nel core non appesantisca i forum? Ad esempio, ci saranno probabilmente alcuni plugin che gli amministratori non vorranno sul loro forum (ad esempio, Discourse AI), ma non avranno altra scelta che averlo aggiunto. Può essere disabilitato, ovviamente, ma mi chiedo se i file aggiunti e altro rallenteranno i forum?

2 Mi Piace

Sul lato client, Discourse non serve alcun asset javascript per i plugin disabilitati, quindi non ci sarà alcun impatto lì.

Sul lato server, per i plugin implementati correttamente (come lo sono tutti questi), le personalizzazioni dei plugin vengono ignorate quando sono disabilitati. Quindi sì, tecnicamente potrebbe esserci un leggero overhead per verificare lo stato abilitato/disabilitato, ma dovrebbe essere minuscolo.

I plugin che stiamo unendo qui sono quelli che eseguiamo su ogni singola istanza di Discourse sul nostro hosting discourse.org. Quindi sono tutti molto ben testati su larga scala.

15 Mi Piace

Capito. Grazie per aver chiarito!

2 Mi Piace

C’è un motivo per cui state facendo tutto questo in una volta sola poco prima del rilascio? Per i traduttori che lo fanno nel loro tempo libero, 3.000 stringhe aggiuntive in due settimane sono molte. E anche nelle lingue in cui i plugin erano stati precedentemente tradotti, tutti i 3.000 testi devono essere nuovamente revisionati. Ogni tanto, 300 sarebbero probabilmente più gestibili di 3.000.

6 Mi Piace

Per le community self-hosted che eseguono già uno o più di questi plugin, i plugin perderanno i dati di configurazione quando verranno rimossi da app.yml e integrati nel core?

Ho configurato il plugin AI esattamente come voglio; se dovessi riconfigurarlo (o almeno annotare le opzioni di configurazione in modo da poterle riaggiungere), sarebbe utile saperlo ora. :+1:

6 Mi Piace

Abbiamo cercato di rendere il processo il più agevole possibile per i traduttori sfruttando la memoria di traduzione in crowdin, in modo che le traduzioni non debbano essere rifatte da zero. Ma comunque, sono d’accordo, ci sono molte cose da revisionare.

Mi chiedo se ci sia altro che possiamo automatizzare qui, ad esempio, forse possiamo “approvare automaticamente” tutte le stringhe di questi plugin, invece di richiedere una revisione :occhi:

Tutta la configurazione/i dati verranno mantenuti.

10 Mi Piace

Un messaggio nell’interfaccia utente che richiedeva una ricompilazione destinata a fallire è sembrato davvero poco elegante.

Non c’era modo di segnalare almeno questo argomento per i siti che eseguono una versione minima del gestore Docker?

2 Mi Piace

Tuttavia, questo meta argomento non è proprio quello che vorresti vedere.

La difficoltà sta nel sapere quali plugin rimuovere dal tuo app.yml e quali no.