Agora

De Troulite
Aller à : Navigation, rechercher

Sommaire

Introduction

Le projet Agora vient d'un sentiment de frustration (partagé ou non) face aux moteurs de recherche intégrés aux forums actuels. En effet, c'est généralement la croix et la bannière pour retrouver un message précis ou un ensemble de messages correspondant à un même thème. Afin de faciliter un peu cette recherche, ces forums utilisent un système de catégories (hiérarchisées ou non) permettant de classifier les différents topics. Cela fonctionne relativement bien, mais est loin d'être parfait. En effet, il n'est pas rare que les sujets de threads s'élargissent ou au contraire se précisent, et dans ce cas-là il peut être encore difficile de s'y retrouver.

Agora se propose de tenter de résoudre ces problèmes en rajoutant une certaine sémantique aux messages par le biais de tags ainsi qu'une notion plus "Web 2.0" (bip ! buzz-word).

Nota : Dans ce document, un certain nombre de questions sont posées dans le but d'en discuter tous ensemble dans la page de discussion. Bien entendu, tout commentaire quel qu'il soit est recommandé, toujours sur la page de discussion.


Glossaire


Pour se mettre d'accord sur le vocabulaire.

Catégorie thème permettant de classer les threads.
Discussion ensemble (structuré ou non) des messages et réponses sur un sujet.
Interface d'une catégorie partie du forum présentant la liste des topics d'une catégorie.
Interface du forum partie du forum présentant la liste des catégories.
Message le truc qui permet de communiquer quoi !!
Premier post le premier post (a avoir été envoyé) qui ouvre une discussion.
Post cf message.
Sujet titre d'une discussion
Tag marqueur (ici sous la forme d'un mot ou d'un ensemble de mot) que l'on associe à quelque chose dans le but de le retrouver facilement.
Titre résumé du contenu de qch (message, discussion, ...)
Thread cf discussion.
Topic "de quoi on cause". Peut être le sujet, le sujet et le premier post, le sujet et un ensemble de posts, ...

Un "tag-based" forum


Que sont les tag ?

Définition de Wikipedia :

A tag is a (relevant) keyword or term associated with or assigned to a piece of information (like picture, article, or video clip), thus describing the item and enabling keyword-based classification of information it is applied to.

Dans cette définition apparaissent les deux principaux intérêts des tags :

  • Une simple lecture des tags doit permettre d'avoir une idée du contenu
  • Une classification beaucoup plus précise que les classiques catégories

Il apparaît également assez évident que ces tags vont grandement faciliter la recherche de contenu, puisqu'il suffira alors de rechercher les messages associés à un ensemble de tags.

Cette notion de tags n'est pas réservée au Web, ni même à l'informatique (cela peut s'avérer très utile pour une bibliothèque), mais le Web permet de rajouter un côté communautaire à la gestion des tags : c'est ce que l'on appelle la folksonomie. Au lieu qu'une seule personne crée et précise les tags relatifs à une ressource, c'est toute la communauté qui s'en charge. Cependant, comme l'explique l'article ci-dessus, cette possibilité de tout un chacun de créer des tags et les associer à ce qu'il souhaite, peut rendre la recherche plus difficile que prévu. On peut par exemple imaginer une personne utilisant le tag "chat" alors qu'une autre utilisera "chats". Ce cas est relativement facile à résoudre en utilisant des algorithmes de détection de singulier/pluriel, mais dans d'autres cas cela peut être beaucoup plus difficile d'automatiser cette résolution de conflits : les synonymes ou les mots à signification mutliples en sont un bon exemple.

Un des challenges du projet sera donc d'arriver à balancer ce que peut faire l'utilisateur et ce qu'il ne peut pas faire afin d'éviter ces problèmes.

Représentation des tags

Dans un premier temps, les tags seront représentés très simplement par un nom. Faut-il également leur adjoindre une description ? Cela peut être utile pour fixer leur sens dans le cas de tags pouvant avoir plusieurs sens, mais d'un autre côté, si un tag a plusieurs sens possibles, pourquoi devrait-on le restreindre ?

Arbre des tags ?

Lorsque le forum sera fonctionnel avec les tags simples, une bonne chose serait de pouvoir organiser les tags : si un sujet parle de Jeux videos, il parle également de jeux. Quelqu'un qui cherche les sujets parlant de jeux devra donc trouver également trouver les sujets de jeux videos. Cela peut déjà se faire avec la version basique des tags, mais cela implique de tagguer manuellement un sujet avec "jeux videos" et "jeux", ce qui n'est pas très agréable. Si par contre on n'a non plus un tag mais un arbre de tags (en fait une forêt), on pourra utiliser seulement le tag "jeux videos", mais comme "jeux videos" est un fils de "jeux", lorsqu'on cherchera les topics parlant de jeux, on tombera également sur ceux parlant de jeux videos.

Graphe de tags ?

on sait tous que l'arbre a pas mal de défaut pour la taxonomie, mais on pourrait envisager l'héritage multiple. On garde l'aspect hiérarchisé de l'arbre mais avec un peu de la souplesse du graphe.

Exemple :

              Jeux
     ___________|____________
    |                        |
Jeux de Rôles           Jeux vidéos
    |                        |
     ------------------------
                |
              MMORPG

Un MMORPG est un jeu, un jeu de rôles, un jeu vidéo.

Un problème tout de même

Les RPG sont un bon exemple des problèmes que peut poser cette hiérarchisation. En effet, un RPG peut être un jeu video, mais pas forcément. Donc que se passe-t-il si on veut parler de jeux de rôles sur table ? Si on utilise le tag RPG, le sujet sera automatiquement taggué "jeux videos", ce qui ne convient pas. Utiliser un deuxième tag "jeux de rôle sur table" ? Permettre à l'utilisateur de "détacher" un tag momentanément un tag de son père ? Est-ce bien au forum de gérer ces cas où au(x) administrateurs de bien choisir les tags ?

Bonne question...

Structure générale du forum

Catégories

Un forum classique est divisé en catégories et sous-catégories thématiques pour faciliter la navigation. Agora se doit aussi de proposer cela afin de s'y retrouver.

Plusieurs possibilités s'offrent à nous :

  • Utiliser des catégories statiques, indépendantes des tags : un utilisateur peut choisir de poster dans une certaine catégorie et choisit ensuite les tags qu'il souhaite. Cela revient à utiliser un système classique de catégories
  • Utiliser des catégories dynamiques : une catégorie est alors une aggrégation de tags. Ecrire un post dans une certaine catégorie revient alors à utiliser des tags par défaut (ceux de la catégorie). Cela permet ainsi une gestion plus souple, et de faire du cross-posting entre plusieurs catégories si on donne à un topic plusieurs tags correspondant à différentes catégories. Est-ce une bonne chose ? L'utilisateur risque de tomber plusieurs fois sur les mêmes topics, ce qu'il ne souhaite peut-être pas, mais sur les forums classiques, on est souvent confronté au problème de savoir dans quelle catégorie poster, problème de facto résolu par ce système.

Mais pour que ce système de catégories dynamiques fonctionne bien, il faudrait aussi permettre à une catégorie d'exclure des tags : si je poste dans cette catégorie, je ne pourrais pas utiliser tels tags (et donc si j'utilise certains tags, mon topic n'apparaitra pas dans telle catégorie, bien que certains des tags l'y autoriseraient).

Note: Il faut aussi une catégorie qui recueille tous les topics ne rentrant dans aucune catégorie.

Posts

Les posts seront hiérarchisés : on écrit une réponse à un post, ce qui devrait permettre d'éviter majoritairement l'utilisation de la citation comme on le voit sur les forums à présentation linéaire type JoL ou HFR.

A chaque post seront associées deux listes de tags :

  • une liste de tags décrivant le post, sélectionnés par l'utilisateur
  • une liste de tags de discussion, représentant les thèmes de la discussion (donc le post lui-même et toutes ses réponses). Cette liste est calculée automatiquement et n'est pas directement modifiable par l'utilisateur.

Topics

Un topic est un ensemble hiérarchisé de posts. Deux vues seront disponibles :

  • une vue linéaire type JoL ou HFR
  • une vue arborescente comme les mailing-list

Dans la vue linéaire, on perd la notion de réponse à un post, il faut donc avoir un moyen de savoir à quel post se réfère tel autre.

La structure d'un topic est la suivante :

Topic
 |_ Post original
 |   |_ Réponse 1
 |   |   |_ Réponse 2
 |   |   |_ Réponse 3
 |   |_ Réponse 4
 |   |_ Réponse 5
 |_ Post 2
     |_ Réponse 6
     |_ Réponse 7
     |   |_ Réponse 8
     |_ Réponse 9
         |_ Réponse 10

Le topic en lui-même n'est qu'un "point d'entrée" d'une discussion. Il contiendra des informations globales sur celle-ci telles que le nombre de messages, si le topic est fermé ou non, la liste de tous les tags de la discussion, ...

On se rend compte que contrairement à une mailing list, on n'est pas obligé de répondre à un post pour écrire dans un topic (cf. Post 2 ci-dessus). Cela peut permettre par exemple d'écrire de longs textes sur plusieurs posts sans pour autant relier hiérarchiquement ceux-ci (la date suffit à déterminer la précédence). Mais est-ce une fonctionnalité réellement utile ?

Sa présence dans une catégorie sera déterminée par la liste des tags qu'il contient (ensemble des tags de tous les posts).

Plusieurs questions en rapport avec les catégories se posent.

  • Comme chaque post pourra avoir ses propres tags, que se passe-t-il si un topic appartient à une catégorie et qu'un tag "contradictoire" est utilisé ? Une des possibilités serait d'interdire d'utiliser ces tags dans cette catégorie (ce qui est en fait le cas pour le premier post d'un topic).
  • Un autre point intéressant est de voir ce qu'il arrive lorsqu'un utilisateur répond à un message dans une certaine catégorie et rajoute des tags. Le topic peut éventuellement se retrouver dupliqué dans une autre catégorie. Mais doit-on se contenter d'une duplication simple ? Ne vaudrait-il pas mieux également que cette duplication marque le début du topic là où les tags pour la nouvelle catégorie sont réunis ? Peut-être pas, car il se peut que cela arrive dans plusieurs branches d'une discussion à la fois, dans ce cas là, où placer le pointeur ? Sur le post le plus ancien ? A voir...

Les fonctions de recherche

Une chose faisant généralement défaut dans les forums est un moteur de recherche fonctionnant correctement et facilement exploitable.

Dans Agora, il sera possible de choisir entre des recherches de messages ou de discussions. Ces recherches pourront s'effectuer par auteurs, tags ou contenu et pourront utiliser les opérateurs (), NOT, AND, et OR (de la plus haute priorité à la plus basse) pour effectuer des recherches précises.

Ainsi, une version peu agréable à utiliser mais permettant d'illustrer le fonctionnement serait la suivante :

discussions(((author:Ze Reaper AND tag:troulite) OR (author:Nymuo AND tag:cuisine AND !content:baba au rhum))

Ce qui aurait pour effet de rechercher toutes les discussions traitant de troulite auxquelles Ze Reaper a participé et toutes les discussions parlant cuisine, mais pas baba au rhum auxquelles Nymuo a participé.

Là encore, il reste des questions en suspens :

  • la recherche dans le contenu est une tâche relativement lourde, qui n'est peut-être pas utile grâce à la présence des tags
  • dans le cas d'une recherche de discussions :
    • faut-il permettre de préciser si un auteur est le créateur de la discussion
    • faut-il permettre de préciser si un tag a été utilisé par un auteur particulier
  • dans le cas d'une recherche de posts :
    • faut-il permettre de rechercher des posts dont les discussions reliées ont certaines propriétés ? (ie : je recherche les posts de Shivien dans les discussions qui parlent de jeux videos (même si Shivien lui n'en parle pas))
  • ...

Il existe bien d'autres possibilités de recherche comme par exemple, rechercher les posts d'AK en réponse à un post de Lolo, ... Faut-il essayer de prendre en compte toutes ces variantes ? Cela semble assez difficile, donc dans un premier temps la réponse est non, à voir lorsqu'Agora en sera à un stade de développement avancé.

Utilisateurs

Les utilisateurs seront représentés par les mêmes caractéristiques que sur les forums classiques. En plus de cela, chaque utilisateur aura la possibilité de créer sa propre vue du forum. En d'autre termes, il aura la possibilité de créer lui-même ses catégories afin de classer les topics comme il le souhaite. Dans ce cas, une catégorie reviendra en fait à nommer une requête de recherche. La catégorie non triée sera en revanche toujours présente, pour assurer la complétude (pas de topics invisibles)

Gestion des Permissions

(Discussion sur Discuter:Agora#Classes d'utilisateur, groupes et permissions)

Un point épineux pour Agora est la gestion des permissions. Voyons pourquoi...

Sur un forum normal

Sur un forum normal, on a la notion de groupes d'utilisateurs. Chacun de ces groupes possède un certain nombre de droits pour chaque catégorie du forum. Les droits possibes sont généralement les suivants (le droit n impliquant le droit n-1):

  • lire un topic
  • répondre à un topic
  • créer un topic
  • modérer un topic

Les groupes ne sont en fait pas indispensables mais permettent de faciliter la gestion des permissions : en affectant des droits à un groupe, on les affecte ainsi à plusieurs utilisateurs réunis par centre d'intérêts (guildes, modérateurs, chefs cuisiniers, ...).

La gestion des droits est donc très simple sur un forum classique : des groupes d'utilisateurs possédant des droits particuliers sur chaque catégorie.

Sur un forum basé sur des tags ?

Dans le monde d'Agora, des tags et des catégories dynamiques, cela se complique. Plusieurs possibilités sont envisageables :

  • donner des droits par catégorie, comme sur un forum classique. Dans ce cas que se passe-t-il si une personne ne peut poster dans une catégorie mais qu'un topic de cette catégorie "glisse" vers une autre où il a le droit d'écrire ? Indirectement, il vient de gagner le droit de poster dans la catégorie interdite... sauf si on considère que son éventuel post n'apparait que dans la catégorie autorisée, auquel on risque de se retrouver avec des discussions tronquées
  • associer des droits à chaque tag : tel utilisateur (ou groupe) peut lire les topics ayant ce tag, utiliser tel tag, ... Mais dans ce cas, que se passe-t-il si un topic a un tag qu'un utilisateur peut voir et un autre qu'il ne peut voir ? Faut-il prioritiser ces droits (si un utilisateur ne peut lire un tag, alors tous les topics contenant ce tag lui sont masqués, quels que soient les autres tags) ? Faire une moyenne de tous les droits pour déterminer le pouvoir de l'utilisateur sur un topic ? Cette solution a également le problème de mélanger deux concepts différents et ainsi de réduire les possibilités d'expression d'un utilisateur : cela revient en fait à dire par exemple qu'un groupe d'utilisateurs n'aurait pas le droit de parler informatique
  • utiliser une seconde série de tags spécialisés dans les permissions ? Il faut noter que la gestion des droits devrait rester la plus transparente possible pour l'utilisateur. Sur un forum classique, l'utilisateur choisit tout au plus une catégorie, dans laquelle il a certains pouvoirs. Cette solution semble trop complexe à utiliser pour être envisageable.
  • laisser tomber le système de droits ?

Il existe sans doute d'autres possibilités et aucune décision n'ayant encore été prise, la discussion est ouverte (et même encouragée). Ce qui est sûr c'est que cette gestion des permissions ne sera intégrée qu'assez tard dans le développement, n'étant pas primordiale au fonctionnement du forum.

Autres Fonctionnalités

On passera ici sous silence les fonctionnalités évidentes comme l'édition de ses messages, de son profil, visualisation de la liste des utilisateurs, ... Les points qui vont être cités sont sujets à discussion.

Côté utilisateur

  • Rajouter des tags à un topic auquel il n'a pas participé / post d'une autre personne
  • Créer de nouveaux tags
  • Influer sur le graphe des tags

Côté administrateur

  • Permettre à l'administrateur de choisir les réponses aux questions ci-dessus

Technologies

Ruby on Rails

Symfony

A l'ancienne

Et le Web 2.0 dans tout ça ?

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils