Quindi non parlo della distribuzione dell’istanza con db ecc.
Esiste uno schema per mantenere un’istanza utilizzando un formato dichiarativo? Categorie, tag, policy, ecc. Pensavo sarebbe bello per i nostri utenti tecnici raccomandare modifiche tramite PR invece di thread di discussione ed esecuzione manuale, ma non ho visto plugin o altri strumenti “as code” focalizzati sulla configurazione organizzativa di Discourse.
Penso che l’aspettativa sia che i siti utilizzino la categoria pre-impostata Site feedback per questo. La sua descrizione è: “Discussione su questo sito, la sua organizzazione, come funziona e come possiamo migliorarlo”.
È un’idea interessante. Quale sarebbe il vantaggio rispetto al semplice fatto che gli utenti suggeriscano modifiche negli argomenti normali? L’obiettivo è avere un modo per tenere traccia delle modifiche apportate alla configurazione del sito nel tempo?
Le impostazioni del sito, le categorie, i tag, le policy, ecc., possono essere configurate con l’API di Discourse. Potrebbe essere possibile avere uno script che gestisca la configurazione del tuo sito tramite l’API in un repository git. Lo script potrebbe essere eseguito quando un PR sul repository viene accettato. Dal mio punto di vista, questo sarebbe più difficile che apportare manualmente modifiche alla configurazione del sito tramite l’interfaccia utente.
10-4 sulla categoria. Per ora ho fatto un po’ di crowdsourcing su uno schema esistente. Per me si tratta di ottenere quel tipo di coinvolgimento della community in stile gitops, quindi sono atterrato su questo, ma posso spostarlo sull’altro se aiuta.
E sì, usiamo un po’ di configurazione come codice per molte cose, quindi si ottiene il controllo delle revisioni pulito, il rollback deterministico, la chiara revisione delle modifiche, ecc. Le modifiche basate su GUI non sono male (ed è quello che facciamo oggi tramite cicli di feedback della community), ma è un’operazione manuale e il contesto decisionale può andare perso nel tempo. E le costruzioni organizzative esistono nel mezzo tra l’infrastruttura e il dialogo effettivo, quindi non si tratta di un’operazione di distribuzione o reidratazione.
E sì, i trigger basati su PR (o anche un Issue) possono avviare un runbook che individua la modifica proposta ed esegue l’operazione. Eseguire l’analisi delle differenze e il linting può essere difficile, motivo per cui stavo curiosando per vedere se qualcuno ci avesse già provato. La richiesta rientra sicuramente nella categoria “nice to have” e potrebbe risuonare solo con una certa demografia.
Mi (e sono abbastanza sicuro che la nostra comunità di linguaggi di programmazione) apprezzerebbe assolutamente questa capacità. In particolare, vorrei poter gestire temi, componenti e testi del sito su un repository GitHub dove le persone possono facilmente inviare pull request. Anche le impostazioni generali del sito sarebbero gradite, ma sono quelle tre cose che sono più difficili da mantenere in un’interfaccia web.
Se ciò non fosse possibile oggi — e non credo lo sia, almeno non per un’istanza a pagamento/ospitata — si potrebbe ricategorizzare questa richiesta come una richiesta di funzionalità?
Subito dopo aver scritto questo, ho pensato di ricontrollare l’interfaccia utente. Sembra che questo sia possibile, almeno per creare/importare un tema da una repository git! Come funziona per gli aggiornamenti? È in grado di recuperare nuovi commit? Ho trovato Installing a theme from a private Git repository, ma non discute dell’aggiornamento.
Puoi esportare un tema, caricarlo in un repository e installarlo.
Tutti i temi remoti hanno una sezione in alto dove puoi decidere se vuoi che si aggiorni automaticamente quando Discourse viene aggiornato. Inoltre, c’è un processo in background che controlla se è disponibile una versione più recente e puoi anche verificare manualmente nuovi aggiornamenti. Quando è disponibile una nuova versione, il pulsante offre di aggiornare il componente.
Fantastico, grazie @Moin! Questo copre due grandi fonti di personalizzazione del nostro sito.
Mi piacerebbe ancora molto usare git per gestire i Testi del Sito poiché molti di essi (come le linee guida, le FAQ e altro) sono lunghi, non banali e possono essere open source per l’input e la revisione della community.
Le altre impostazioni del sito sarebbero utili, ma sicuramente non così cruciali.
Di solito si basano su un argomento nella categoria dello staff. Penso che tu possa spostarli in una categoria diversa e rendere il post una wiki. Quindi i tuoi membri possono modificarli.
Puoi anche usare le impostazioni del sito FAQ URL, Privacy policy URL e ToS URL e ospitarli altrove.
Ho iniziato a sperimentare con un’azione di GitHub che invia aggiornamenti alla sezione site_texts del pannello di amministrazione tramite API. Al momento è piuttosto rudimentale (e per qualche motivo fallisce con valori grandi restituendo un errore 422), ma è promettente.
Attualmente non abbiamo in programma di rilasciarlo come strumento riutilizzabile. Ma puoi controllare il codice della nostra sincronizzazione qui. Si basa su tutte le normali API REST di Discourse, inclusa una query di data-explorer (dettagli qui).