Reputação Federada

No SocialHub, @keunes propôs federar a reputação no sentido de que, se o Discourse suportasse o ActivityPub, as pessoas poderiam usar sua reputação existente em uma ou mais instâncias do Discourse na internet para contornar os níveis de confiança iniciais 0 e 1 e ir direto para o nível 2 (membro) ao ingressar em um novo fórum.

Acabei de criar minha primeira postagem nesta instância do Discourse e, como sou novo aqui, só posso postar dois links. Compreensível, mas bastante irritante. Então pensei: não existe uma maneira de federar o Discourse, particularmente minha reputação?

Por exemplo, no fórum do AntennaPod, poderíamos definir o SocialHub como uma ‘fonte de confiança confiável’ e permitir que os usuários se beneficiem de seus níveis de confiança conquistados em outros lugares.

De fato, quando você é um internauta conhecido com boa reputação, as limitações dos níveis de confiança mais baixos podem se tornar um fardo ao ingressar em novos fóruns. Por outro lado, se você ganhar uma má reputação, isso também pode impedir que você obtenha privilégios em novos fóruns (por exemplo, atuar como um peso negativo na promoção do seu nível de confiança, embora isso seja facilmente contornado usando uma nova identidade).

Portanto, a ideia é realmente facilitar o compartilhamento da reputação de bom comportamento entre instâncias do Discourse. Como já existe uma rede global de instâncias do Discourse, com vários usuários aqui no Meta que também frequentam várias outras instâncias, torna-se cada vez mais desejável unificar identidades entre instâncias para usuários comuns, para que as conversas se tornem mais fluidas. O ActivityPub é uma maneira de fazer isso, e atualmente estamos explorando formas de criar um plugin para adicionar suporte ao ActivityPub para o Discourse, o que poderia servir como base para outros recursos federados, incluindo este.

História Paralela

@erlend_sh me lembrou dessa proposta passageira de três anos atrás:

Resumo dos recursos interessantes propostos

Opt-in

Rede de Confiança

Descoberta

No post #4, @erlend_sh propôs adicionar “comunidades em comum” com outros usuários e, eventualmente, portar distintivos entre comunidades para facilitar que os membros descubram novas comunidades.

9 curtidas

Primeiras impressões que me vieram à mente sobre a “migração de reputação”:

  • isso deve ser opt-in por fórum
  • isso deve ser opt-in por usuário (veja 1)
  • deve haver uma lista branca editável (talvez fornecida pelo próprio Discourse) de fóruns permitidos
  • deve haver uma lista negra editável de fóruns permitidos

1: isso levanta a questão de se queremos incomodar o usuário com isso nos primeiros 5 minutos de uso do fórum

4 curtidas

Eu pensava que os Níveis de Confiança fossem mais sobre aprender as regras e os costumes dos fóruns individuais. Permitir que as pessoas pulem a fase de ‘aclimatação’ de duas semanas/15 visitas (padrão) com base nas regras de outros fóruns pode não funcionar tão bem.

Eu não me importaria com um nível de confiança extra de ‘membro associado’ que pudesse ser aplicado a fóruns/usuários registrados em um diretório central. Algo que me permitisse acesso de leitura a muitos fóruns e talvez a opção de votar em pesquisas ou curtir coisas — enquanto ainda precisasse me inscrever em um fórum específico para ter membresia completa, postar e progredir no Nível de Confiança, etc.

2 curtidas

Estou rodando algumas pequenas instâncias do Discord e estou temendo o dia em que terei que começar a mexer em bots de moderação para prevenir spam e outros comportamentos maliciosos.

A maioria das limitações de moderação do Discord poderia ser resolvida com Níveis de Confiança, que ainda são subutilizados em softwares de comunidade.

Níveis de Confiança em rede (federados) compartilhados entre várias instâncias interoperáveis permitem duas funcionalidades importantes:

Rede de Confiança

Um usuário que atingiu o Nível de Confiança (TL) 2 no Meta deve ser promovido diretamente para o TL1 ao entrar em qualquer fórum que tenha listado o meta.discourse.org como um Fórum Confiável. Basicamente, o próximo passo após Let experienced users skip "new to Discourse" features.

É um sistema muito direto, semelhante ao PageRank.

Descoberta

O Discord tem um recurso útil que permite ver em quais comunidades de chat (servidores) você e outro usuário têm em comum:

Isso me lembrou o que ainda considero o caso de uso mais atraente para nosso elusivo Discourse Hub:

Uma forma semelhante de levar distintivos de outras instâncias também seria muito útil. Quando alguém recebe seu primeiro distintivo ‘Útil’ (ainda não existe tal distintivo por padrão), cada instância adicional em que ele é exibido serve como um lembrete e uma afirmação para essa pessoa de que ela é o tipo de membro da comunidade que ajuda os outros.

6 curtidas

Se a rede de confiança fosse introduzida, eu gostaria de ver suporte a uma Lista de Confiança Confiável, além de Fórum Confiável. Ou seja, uma instância do Discourse poderia publicar sua lista de Fóruns Confiáveis, e eu poderia optar por confiar em meta.discourse.org/trusted-forums.json na minha instância, por exemplo. (Provavelmente não recursivo)

3 curtidas

Como você vê isso funcionando? De forma anônima, sem dados do usuário ou…?

Não tenho certeza de quais dados do usuário seriam relevantes especificamente para a lista de fóruns confiáveis. Imagino que os Fóruns Confiáveis sejam algo escolhido pelo administrador da instância e, se o administrador optar por publicá-los, uma solicitação a meta.discourse.org/trusted-forums.json (ou qualquer que seja a URL) produziria algo como:

{
  "trustedForums": [
    "meta.discourse.org",
    "bestforum.com",
    "marvellousdiscussions.org",
    ...
  ]
}

Então, como administrador de uma instância, eu poderia inserir “meta.discourse.org” em Fóruns Confiáveis para confiar apenas naquela instância (não nas instâncias que ela confia) ou, alternativamente, inseri-lo na Lista de Confiança Confiável (com um nome melhor…) para confiar naquela instância e nas instâncias que ela confia.

O JSON provavelmente não conteria realmente uma referência à sua própria instância; isso é apenas para ilustrar que confiar na lista de outra instância deveria implicar também confiança naquela instância.


Como você mencionou dados do usuário, presumo que esteja se referindo à forma como vejo a própria confiança funcionando. Isso está além do escopo do que comentei, mas, dada a ideia de @erlend_sh de promover um usuário para TL1, imagino que a instância teria que compartilhar algo como um hash SHA256 do endereço de e-mail com os fóruns confiáveis no momento do registro (ou, mais provavelmente, em um job do Sidekiq após o registro).

Embora isso evite compartilhar diretamente dados do usuário, consigo ver imediatamente uma falha nisso, usando o JSON acima como exemplo. Se um usuário tiver uma conta em bestforum.com e depois se registrar em meta.discourse.org, isso revelaria ao primeiro que o usuário criou uma conta no segundo e poderia revelar ao segundo que o usuário já possui uma conta no primeiro, o que pode ser indesejável.

Não tenho muita certeza de como lidar com isso. Ter o usuário optando por participar no momento do registro não pode ser realmente confiável, pois uma instância que deseja abusar desse mecanismo poderia simplesmente removê-lo.

Possivelmente, o “Discourse Hub” poderia resolver grande parte desse problema, pois ele manteria (e só receberia) endereços de e-mail hashados com instâncias associadas e níveis de confiança. Uma instância consultaria o hub com um endereço de e-mail hashado e talvez usasse um sistema baseado em pontuação com as instâncias onde esse hash foi visto e os níveis de confiança alcançados, de modo que uma instância nunca veria quais outras instâncias estão envolvidas, apenas a pontuação resultante.

No entanto, com um operador óbvio de tal hub sendo a Civilized Discourse Construction Kit, Inc., essa configuração ainda levanta uma questão importante: eu, como usuário do meta e de outras instâncias, quero que a CDCK possa ver em quais outras instâncias estou usando? (Pois seria possível para um operador de instância+hub conectar usuários de sua própria instância com entradas no hub)

Acho que, para resumir, como a confiança pode funcionar é muito complicado para este cérebro confuso. :slight_smile:

Embora eu ache a abordagem de ‘fóruns confiáveis’ interessante e útil, também vejo uma possível questão de segurança, onde atacantes mirariam fóruns confiáveis menos vigiados para obter acesso ao seu alvo real — onde não conseguiriam acesso direto. Portanto, se formos implementar tal mecanismo de confiança transitiva, ele não deve ser facilmente navegável e deve vir acompanhado de um forte mecanismo de retaliação que suspenda um agressor em todas as instâncias: vejo isso como uma restrição rígida que adicionaria uma quantidade considerável de complexidade e que seria melhor deixada para uma segunda fase de desenvolvimento.

Por outro lado, seria (pareceria) mais fácil manter uma lista privada de fóruns confiáveis, onde a reputação remota de um membro em cada um desses fóruns reforçaria seu status localmente. Talvez o conceito de níveis de confiança pudesse ser estendido tanto para instâncias quanto para usuários? Se uma instância, digamos, Meta, tiver um NConf3, então pessoas vindas de lá poderiam ter inicialmente um NConf2, com um fator de decaimento caso o usuário não participe; isso adiciona outra camada de complexidade, mas estou apenas pensando em voz alta e quis esboçar algumas possibilidades alternativas à confiança em instâncias inteiras.

Concordo com a discrição sobre quem está usando quais instâncias. Isso deve ser levado em conta, embora publicar em instâncias públicas possa ser equivalente a divulgar o fato de que você as utiliza de qualquer forma; isso pode se aplicar a fóruns privados, no entanto.

2 curtidas

Ainda estou adiando a criação de uma lista de usuários no nível do diretório. :slightly_smiling_face:

 https://DiscourseDiscovery.org -

Usuários anônimos verão um diretório de fóruns que se registraram para serem incluídos na lista pública (pesquisável por categoria ou ‘tags de fórum’), além de poderem pesquisar palavras-chave em todas as instâncias do diretório.

Cadastre-se para criar uma conta de usuário no DiscourseDiscovery. Novas contas começarão no Hub_Level_0 e poderão avançar pelos demais Hub_Levels ao completar certas ações e o treinamento adaptado do Discobot ‘Forum Training’, que cobrirá todas as habilidades necessárias que você acha que as pessoas precisarão.

Diferentes Hub_Levels permitirão acesso a mais recursos no diretório. Por exemplo: ver categorias normalmente invisíveis para usuários anônimos, realizar ações como curtir ou votar em enquetes (imagens de avatar poderiam ser circundadas em vermelho para indicar membros associados/membros de Hub_Level), receber notificações sobre conteúdo de tópicos, etc. Ao tocar em um avatar, aparecerá o Usercard do DiscourseDiscovery do usuário.

Os usuários poderão então adicionar contas de fóruns de ‘membros completos’ a uma Página de Usuário DiscourseDiscovery concatenada (com a opção de excluir aquelas que desejarem). Aqui também poderão ser somadas as conquistas (badges), além de mostrar a atividade mais recente, etc, etc.

Os fóruns também poderão ter opções de segurança para restringir o acesso a certos recursos (categorias, enquetes, etc.) apenas a membros completos. Eles também poderão escolher se desejam ser incluídos no diretório público, em um diretório mais privado baseado nos Hub_Levels do usuário, ou não ser incluídos de forma alguma.

Apenas algumas ideias. :slightly_smiling_face:

3 curtidas