Explicação excepcional. Muito obrigado por essa resposta. Isso destaca algo que eu não havia percebido antes:
A partir dessas respostas, estou concluindo que (como você diz) interagir com a API JSON pode ser um bom ponto de partida em muitos casos, o que poderia evitar a necessidade de criar um novo tema ou plugin. No entanto, existem alguns tipos de dados que não são expostos pela API. Para acessar e trabalhar com esses tipos de dados, você precisaria usar o serializador de dados do Discourse para expor essas informações; e para fazer essa serialização, é necessário usar um plugin.
Parece que um bom exemplo de dados não disponíveis através da API são os proprietários de um grupo. Digo isso porque (em relação ao acesso aos proprietários de grupo):
Um ponto de confusão: na API do Discourse, quando você obtém um grupo específico, uma das características retornadas é listada como "is_group_owner": true, então não tenho certeza do que isso significa…
Mas parece que, para obter o proprietário do grupo, eu precisaria serializar a característica do proprietário do grupo.
Existem bons exemplos de uso do serializador do Discourse? Já vi este, mas, dada sua importância, um tutorial com alguns exemplos seria extremamente útil.
O exemplo mais próximo que tenho é:
Isso é útil, mas não está totalmente correto (pelo menos me dá erros dizendo “plugin inválido”). Não tenho certeza de como ajustá-lo para que, na página de índice de grupos, eu possa acessar os proprietários de cada grupo.