Então não estou falando sobre a implantação da instância com banco de dados, etc.
Existe algum padrão para manter uma instância usando algum formato declarativo? Categorias, tags, políticas, etc. Pensei que seria bom para nossos usuários técnicos recomendarem mudanças via PR em vez de threads de tópicos e cumprimento manual, mas não vi nenhum plugin ou outra ferramenta “as code” focada na configuração organizacional do Discourse.
Acho que a expectativa é que os sites usem a categoria pré-definida Site feedback para isso. A descrição dela é: “Discussão sobre este site, sua organização, como ele funciona e como podemos melhorá-lo.”
Essa é uma ideia interessante. Que benefício isso teria em vez de apenas ter usuários sugerindo mudanças em tópicos regulares? O objetivo é ter uma maneira de acompanhar as mudanças que foram feitas na configuração do site ao longo do tempo?
Configurações do site, categorias, tags, políticas, etc., podem ser configurados com a API do Discourse. Seria possível ter um script que gerenciasse a configuração do seu site via API em um repositório git. O script poderia ser executado quando um PR no repositório fosse aceito. Do meu ponto de vista, isso seria mais difícil do que fazer alterações manualmente na configuração do site através da interface do usuário.
10-4 na Categoria. Por enquanto, eu estava fazendo um crowdsourcing em um padrão existente. Para mim, trata-se de obter o engajamento da comunidade no estilo gitops, então fiquei com este, mas posso transferi-lo para o outro, se ajudar.
E sim, usamos um pouco de configuração como código para muitas coisas, então você obtém o controle de revisão limpo, reversão determinística, revisão clara de alterações, etc. Mudanças baseadas em GUI não são ruins (e é o que fazemos hoje por meio de ciclos de feedback da comunidade), mas é uma operação manual e o contexto da decisão pode se perder com o tempo. E as construções organizacionais existem no meio entre a infraestrutura e o diálogo real, então não é uma coisa de implantação ou reidratação.
E sim, gatilhos baseados em PR (ou mesmo um Issue) podem disparar um runbook que descobre a alteração proposta e executa a operação. Fazer a análise de diff e linting pode ser difícil, é por isso que eu estava investigando para ver se alguém já havia tentado. A solicitação está definitivamente no campo do “bom ter” e só pode ressoar com uma certa demografia.
Eu (e tenho certeza que nossa comunidade de linguagens de programação) adoraria essa habilidade. Em particular, eu gostaria de poder gerenciar temas, componentes e textos de sites em um repositório do GitHub onde as pessoas possam facilmente enviar pull requests. Configurações gerais do site também seriam boas, mas são essas três coisas que são mais difíceis de manter em uma interface web.
Se isso não for possível hoje — e acho que não é, pelo menos não para uma instância paga/hospedada — isso poderia ser reclassificado como uma solicitação de recurso?
Imediatamente após escrever isso, pensei em verificar a interface do usuário. Parece que isso é possível — pelo menos para criar/importar um tema de um repositório git! Como isso funciona para atualizações? Ele é capaz de puxar novos commits? Encontrei Installing a theme from a private Git repository, mas isso não discute atualizações.
Você pode exportar um tema, carregá-lo em um repositório e instalá-lo.
Todos os temas remotos têm uma seção no topo onde você pode decidir se deseja que ele seja atualizado automaticamente quando o Discourse for atualizado. Além disso, há um trabalho em segundo plano que verifica se uma versão mais recente está disponível, e você também pode verificar novas atualizações manualmente. Quando uma nova versão estiver disponível, o botão oferecerá a atualização do componente.
Ótimo, obrigado @Moin! Isso cobre duas grandes fontes de personalização do nosso site.
Eu ainda gostaria muito de usar o git para gerenciar os Textos do Site, já que muitos deles (como as diretrizes e FAQ e afins) são longos, não triviais e podem ser de código aberto para contribuição e revisão da comunidade.
As outras configurações do site seriam boas de ter, mas definitivamente não são tão cruciais.
Geralmente, eles são baseados em um tópico na categoria de staff. Acho que você pode movê-los para uma categoria diferente e tornar a postagem um wiki. Então, seus membros podem editá-los.
Você também pode usar as configurações do site FAQ URL, Privacy policy URL e ToS URL e hospedá-los em outro lugar.
Comecei a mexer em uma ação do GitHub que envia atualizações para a seção site_texts do painel de administração via API. No momento, é bem rudimentar (e está falhando para valores grandes com um 422 por algum motivo), mas é promissor.
Atualmente, não temos planos de lançá-la como uma ferramenta reutilizável. Mas você pode verificar o código da nossa sincronização aqui. Ela se baseia em todas as APIs REST normais do Discourse, incluindo uma consulta do data-explorer (detalhes aqui).