Great Tool for Admins and Serious Fighters

modifier

Ehh, non, ça ne parle pas de jeu :)

Améliorer l'efficacité des patrouilles RC en limitant les collisions, en permettant de savoir s'il y a quelqu'un d'autres sur les RC et en favorisant le travail d'équipe.

  • Architecture client-serveur:
    • Le serveur IRC qui distribue les diffs
    • Le serveur GTA-SF qui assure le partage du savoir des actions de chacun
    • Le client chez chaque utilisateur

Utilisation/Fonctionnalités

modifier

Au démarrage d'une session, la personne se loggue au moyen d'un mot de passe qui lui donne accès au système (pour éviter que des IP valident des édits). Le client récupère la liste des patrouilleurs en ligne et charge une liste d'ignorés qui permet à chacun de ne pas tenir compte des actions de certaines personnes (en qui elles ont, par leur jeunesse ou leurs habitudes, peu confiance).

Après choix du canal (IP, user, newbie, all) et appui sur le bouton de connexion, connexion au serveur IRC et affichage des diff demandés, avec cumul des diffs de l'éditeur courant lors de l'affichage de chaque diff, si les précédents n'ont pas été validés. Pour mieux se répartir les tâches, on peut également choisir une inclination: révoquer ou avertir/bloquer, ce qui permet de travailler à deux sur les mêmes vandalismes.

L'appui sur une action (valider, enquêter, révoquer, avertir -plusieurs niveaux-, bloquer) fait une requête au serveur. Si une action est déjà en cours par un non-ignoré, celle-ci s'affiche de couleur. Il est alors possible d'aller au-delà, après un petit message d'avertissement. Il peut arriver que la couleur n'est pas eu le temps de venir, mais le message viendra de même, le temps pour le paquet de faire l'aller-retour vers le serveur. La personne dont l'action était en cours en est averti (pratique notamment si elle était en enquête et que l'autre savait déjà).

Les édits non validés sont sur fond de couleur, les édit révertés au contributeur non averti/non bloqué sont d'une autre couleur et les édits non-validé de personnes avertis sur une autre encore.

Les édits révoqués disparaissent après une poignée de secondes (le temps de laisser le temps de demander l'avertissement et le blocage).

Enfin, une black-list permet de mettre en valeur les contributions de certains utilisateurs.

A priori, pour procéder aux révocations et blocage, il sera nécessaire de passer par l'ouverture d'une page dans un browser (sauf à faire une fausse révocation à la main, ce qui pourrait être pratique pour les non-admin).

Un petit chat peut être affiché en bas de l'écran.

On peut prévenir de son départ prochain (ce qui permet de se répartir vaguement le temps, en faisant une pause, par exemple).

Pour aider à la décision, un système de popup (comme il existe pour prévisualiser les liens wur WP) montrant un aperçu de la page de discussions, de la liste de contrib et des contribs d'un éditeur serait sympa.

Résumé

modifier
  • Cercle de confiance
  • Filtrage IP/User/Newbies (Special:Contributions/newbies)
  • Mise en valeur Validé/Averti/Blacklisté/blocké/déjà bloqué auparavant/IP d'établissement
  • Affichage cumulé des diffs
  • Chat
  • Découpage du travail en 2 parties (révoquer, punir) pour parallélisation
  • Vérification de marchage sur les pied avec possibilité de passer outre
  • Système de popup de collecte d'info: liste de contrib de l'utilisateur, preview de ses diffs, de sa page de discussion.
  • Évaluation heuristique de la probabilité de vandalisme

Propositions d'implémentation

modifier

Proposition 1

modifier

Je propose d'implémenter cet outil collaboratif avec Ruby on Rails.

Avantages
  • facilité pour écrire le code
  • pas de clients et donc différentes versions d'un outil à gérer
  • intégration directe dans le browser (très simple à utiliser avec les tabs de Firefox)
Inconvénients
  • synchronisation problématique qui ne peut qu'être obtenue par un refresh

Dans un premier temps, l'outil se contentera de suivre ce que le serveur IRC lui envoie. Après on pourra développer des traitements spécialisés (par exemple se souvenir des pages qui n'ont jamais été vues par les participants, etc) --NeuCeu 20 avril 2006 à 13:27 (CEST)[répondre]

Proposition 2

modifier

Je propose d'implémenter cet outil collaboratif avec Ruby et FXRuby (pour l'interface) en application standalone.

Avantages
  • facilité pour écrire le code
  • Utilisation des threads, timeout scorch
  • interface/onglets/menu/bouton (pas de chargement/changement de page)
  • pas de refresh manuel (utilisation de timeout)
Inconvénients
  • Mise à jour de l'application (quoique)
  • installation de Ruby / Gem sur poste client.

Proposition 3

modifier

Je propose l'architecture ci-dessous, utilisant principalement Ruby on Rails pour le core, et reste suivant les besoins.

Il utilise une réplication de WP pour éviter d'attaquer le serveur sans arrêt, un core qui se charge de cette BDD, d'effectuer les tâches une et une seule fois pour tous les clients et qui sert à optimiser les traitements en servant de serveur de cache pour la BDD et en préchargeant les pages qui risque d'être demandé (historique d'une page à haut potentiel de vandalisme, contrib d'un user soupçonnable...) de manière à réduire les temps d'attente tout en gardant la charge à un niveau raisonnable.

Avantages
  • Architecture n-tiers, chaque partie peut évoluer de façon interne sans trouble si l'interface de communication est bien définie
  • Peut-être aisément réparti sur plusieurs machines reliées par un réseau un minimum rapide
  • Prévu pour satisfaire si nécessaire tous les besoins ergonomiques/restrictions techniques
  • Plus ou moins ceux des autres suivant le client choisi
  • Une période d'analyse plus longue, pour bien formaliser les communications
Inconvénients
  • Plus de code à écrire car plus de formalisme, plusieurs traducteurs, plusieurs clients (mais on peut rendre les utilisateurs voulant un client responsable de l'écriture du translator et client adéquate)
  • Plus ou moins ceux des autres suivant le client choisi

La distinction broadcast/request est par exemple celle de l'IRC et d'AJAX: AJAX demande des infos selon les besoins du client, l'IRC prend tout par défaut et pousse les infos qu'il souhaite, par exemple en envoyant toutes les modifications, le client filtrant ce qu'il souhaite de son côté

L'architecture d'Euca33e utiliserait alors le translator IRC (avec en plus un filtrage pour ne pas envoyer les diffs, puisque récupéré par le client sur le vrai canal IRC. Dans l'idéal, les translators devraient pouvoir choisir un certain nombre d'évènements, pour lesquels il souhaitent recevoir les infos -diffs non, estimation de vandalisme, par exemple-) et non standalone (qui utilise une connexion directe), une application standalone client faisant une traduction des échanges. Avantage par rapport au translator standalone: c'est l'IRC qui prend la charge réseau. Désavantage (faible): texte, donc sans doute plus verbeux, plus de traffic global probable (mais freenode est habitue :o) ).

On peut imaginer que le request interface soit en AJAX, ce qui supprime le translator AJAX et fait passer les autres translators non-broadcats en RoR.

Proposition 4

modifier

Cette solution est basée sur IRC. L'idée c'est d'aller plus loin que le CDVF. Alors que le CDVF ne fait qu'écouter ce qui passe sur le canal IRC de browne.wikimedia.org, notre outil permettrait de se logguer complètement. Ensuite, basé sur un certain protocole basé sur des mots-clés (éventuellement assorti d'une signature GPG pour plus de sécurité), les différents clients connectés communiquent entre eux, permettant le travail collaboratif en temps réel.

Avantages
  • Solution éprouvée, robuste et simple à implémenter
  • Communications simples (IRC est largement documenté et des librairies externes existent)
  • Chacun est libre de développer son propre client
  • Possibilité d'intégration directe à la passerelle IM de Denis Dordoigne
  • Pas de dépendance vis-à-vis d'une réplication de la base de données
  • Pas besoin de serveur (dont nous n'avons pas le contrôle)
Inconvénients
  • Développement d'un client nécessaire


RoadMap (Feuille de route)

modifier

(ceci reste une proposition)

Module 0

modifier
  1. Quatre carrés gris Lié à ce qui suit : structure des objets, des messages à définir
    1. Quatre carrés gris Définition des objets et/ou de la BDD (tables, MCD)
    2. Quatre carrés gris Nomenclature et définition des messages d'échanges (s'il y a lieu) (messages entrants/sortants, flux IRC?)
  2. Quatre carrés gris Internationalisation des messages à prévoir dès le début (ou tout du moins de l'interface)

Module 1

modifier

(basé sur le principe que l'appli écrit sur channel de comm et lit channel des rc et channel de comm)

  1. Deux carrés gris et deux carrés violets Lecture/Écriture sur IRC (1 à X channels)
    1. Quatre carrés verts Lecture sur IRC irc.wikimedia.org#fr.wikipedia
      1. Deux carrés gris et deux carrés violets Capture et parsing des événements RC
      2. Trois carrés gris et un carré marron Constitution d'objets : (objets à définir)
        • Deux carrés gris et deux carrés violets Liste des articles édités (états, reverté o/n...)
        • Deux carrés gris et deux carrés violets Liste des utilisateurs qui ont édités
    2. Un carré gris et trois carrés oranges Écriture sur IRC xxx.xxxxxxxxx.xxx#xx.xxxxxx (à définir)
      1. Trois carrés gris et un carré marron Écriture d'information (structures des messages d'information à définir)
          • Quatre carrés gris UserX a averti UserY au niveau Z
          • Quatre carrés gris UserX propose UserY au blocage
          • Quatre carrés gris UserY est bloqué
    3. Quatre carrés gris Lecture sur IRC xxx.xxxxxxxxx.xxx#xx.xxxxxx
      1. Quatre carrés gris Constitution d'objets :
          • Quatre carrés gris Liste des utilisateurs avertis + niveau.
          • Quatre carrés gris Liste des utilisateurs porposés au blocage
          • Quatre carrés gris Liste des utilisateurs bloqués

ces trois dernières listes peuvent être gérées en une seule, avec un statut utilisateur (averti/proposé/bloqué) ...

Module 2

modifier
  1. Quatre carrés gris Gestion de la configuration (serveurs irc, site wikipedia, ports etc...)
  2. Quatre carrés gris Gestion des préférences :
    • Quatre carrés gris Liste blanche/noire utilisateurs
    • Quatre carrés gris Liste blanche/noire articles
    • Quatre carrés gris Liste noire de mots clés

...

Module 3

modifier
  1. Quatre carrés gris Gestion Identification/habilitation
  2. Quatre carrés gris Récupération liste des utilisateurs connectés sur IRC xxx.xxxxxxxxx.xxx#xx.xxxxxx
  3. Quatre carrés gris Recherche heuristique
    1. Quatre carrés gris Gestion des critères potentiels de vandalisme.
    2. Quatre carrés gris Gestion des alertes
    3. Quatre carrés gris Gestion des événements
  4. Quatre carrés gris Enrichissement base de connaissance sur vandalisme.
    1. Quatre carrés gris Gestion des comportements
    2. Quatre carrés gris Auto-enrichissement des articles les + vandalisés (whitelist dynamique?)
    3. Quatre carrés gris Antécédant sur vandalisme (utilisation de la page "Historique des blocages).
  5. Quatre carrés gris Gestion/signalement d'une nouvelle version de l'outil (si application standalone).

...

Module 4

modifier
  1. Quatre carrés gris Interface
    1. Quatre carrés gris Module commun : Administrateurs + Serious Fighters
      1. Quatre carrés gris Interface de visualisation des RC
        1. Quatre carrés gris de la liste des RC
          1. Quatre carrés gris Filtrage IP/User/Newbies (Special:Contributions/newbies)
          2. Quatre carrés gris Mise en valeur Validé/Averti/Blacklisté/blocké/déjà bloqué auparavant/IP d'établissement
        2. Quatre carrés gris d'un diff ou diff cumulé
      2. Quatre carrés gris Interface statistique (nb edits/user, nb edits/article depuis ouverture de session GTA-SF)
        1. Quatre carrés gris Mise en valeur Validé/Averti/Blacklisté/blocké/déjà bloqué auparavant/IP d'établissement
      3. Quatre carrés gris Interface action
        1. Quatre carrés gris Action révoquer
        2. Quatre carrés gris Action blanchir
        3. Quatre carrés gris Action Ajouter un bandeau
        4. Quatre carrés gris Action Avertir / Accueillir
        5. ....
    2. Quatre carrés gris Module Administrateur
      1. Quatre carrés gris Interface action
        1. Quatre carrés gris Action bloquer
        2. Quatre carrés gris Action protéger
        3. Quatre carrés gris Action Supprimer
        4. ....

...

Autre/À définir

modifier
  1. Quatre carrés gris Module 3 : Gestion d'une liste des IP scolaires ou d'établissement... ???
  2. Quatre carrés gris Module 3 : Recherche sur copyvio ???
  3. Quatre carrés gris Module 3 : Correction orthographique potentielle ???
  4. Quatre carrés gris Module 3 : Search & replace (expression rationnelle via regexp/gsub) sur l'article ou le diff ???
  5. Quatre carrés gris Module 4 : Chat (autre channel irc à utiliser) ???
  6. Quatre carrés gris Module 4 : Affichage d'images uploadées ???
  7. Quatre carrés gris Module 4 : Gestionnaire de Bots en Ruby ???
  8. Quatre carrés gris Module 4 : Indicateur defcon (ratio nb_edit / nb_figther présents) ???

...

Prises de décision

modifier
  1. plateforme de développement (serveur cvs etc???)
  2. langage de développement (Ruby?)
  3. architecture web / interface standalone (FXRuby?) ou web (Ruby on Rails?)
  4. utilisation d'une BDD ? (hébergement, type d'utilisation...) si oui laquelle ? (MySQL, PostgreSQL, SQLite, autres....)
  5. organisation
  6. versionning
  7. mode de communication
  8. recrutement, communication externe au groupe
  9. définir les rôles, désigner un coordinateur (je le dis de suite, je ne m'y présenterai pas)

...

Voila tout ceci n'est qu'une proposition, une ébauche des idées jetées en vrac et non organisé; partant du principe que nous sommes en phase de réflexion. Donc n'hésitez pas à modifier/critiquer/ajouter. (vous avez le droit de dire que c'est un grand n'importe quoi :) ) Cordialement, Educa33e 22 avril 2006 à 23:58 (CEST)[répondre]

Contraintes à prendre en compte

modifier

Techniques

modifier
  • Ne pas surcharger d'appels les serveurs Wikipédia.
  • Une bonne partie des SF officie depuis des écoles, sur des machines où ils ne pevent pas nécessairement installé des logiciels, et sont derrière des proxys.
  • Le nombre de machines dispo est inconnu, l'espace disque et la bande bassante qui nous y serait alloué aussi.
  • Si moins des 2/3 voir 3/4 des A&SF utilisent ce logiciel, ça risque d'être insuffisant, il restera trop de collisions possibles.
  • Pour donner le maximum d'information, il faut répliquer la BDD de WP fr:; et pour pouvoir des RC avec, il faut que le lag ne dépasse pas la minute, au plus. Si ce n'est pas possible, il faut mieux récupérer un dump et le mettre à jour en temps réel avec l'IRC.
  • Les goûts de chacun mais aussi le restrictions des lieux d'exercices peut entrainer la nécessité de disposer de nombreux moyens d'accès (IRC, IM, Web...). C'est une chaude recommandation de Denis Dordoigne (développeur de la passerelle IM et du flux RSS de RC).
  • Plyd avait prévu de coder un logiciel similaire pour le Google Summer of Code (qui se déroule de fin mai à août). Soit on le laisse tenter sa chance en lui préparant le terrain et on attend août, soit on essaye de lui réserver un partie qu'il puisse présenter comme "un projet" et qui pourrait légitimement s'étaler sur cette période, soit il faudra se passer de sa coopération, car il devra bosser ailleurs (ou sur un autre projet) pour gagner le salaire qu'il aurait gagné par ce biais.
    J'avais pas vu ce message. En fait je m'en veux, j'avais même pas vu la page et je croyais que c'était tombé à l'eau :// Donc en effet, j'ai proposé deux projets pour le Google Summer of Code. Un sur les catégories, un autre que j'ai appelé "RC javascript fighter", qui correspondrait à un deuxième "SpecialRecentChanges.php" de MediaWiki (implique une mise à jour de mediawiki). La réponse de l'acceptation ou non au SoC est donnée le 23 mai. Plyd /!\ 12 mai 2006 à 18:16 (CEST)[répondre]
    Donc pour info, mes propositions au Google SoC ont été rejetées. ça va pas m'empêcher de venir bosser sur ce projet :) Il ya encore du monde ici ? Plyd /!\ 24 mai 2006 à 10:03 (CEST)[répondre]
    Oui (enfin j'espère :) ) Eden 24 mai 2006 à 10:25 (CEST)[répondre]
    Oui, oui :) --NeuCeu 24 mai 2006 à 10:37 (CEST)[répondre]