Analyse des besoins
Darks edited this page 1 year ago

Introduction

Les premières réflexions sur la v5 de Darks, Lephe et Louloux (il y a quelques années) donnent une analyse assez complète des besoins. Le document suivant est le résumé complet et propre des idées qui ont été énoncées et validées sur le pad de l’époque qui est maintenant accessible ici :

Pad Planète Casio v5

Il faut l’avoir lu au moins une fois avant de pouvoir contribuer à la v5.

Vocabulaire

Afin que l’on se comprenne correctement, voici quelques termes dont on convient :

  • Visiteur : toute personne naviguant sur le site
  • Membre : visiteur authentifié dont le compte a été validé
  • Membre+ : visiteur authentifié dont le niveau est supérieur ou égal à 1 (~30 points actuels)
  • Invité : visiteur ne possédant pas de compte ou n’étant pas authentifié

Révisions

  • 1.0 [2018-06-08] Dark Storm
    • Création du document
  • 1.1 [2018-06-09] Lephe
    • Diverses précisions et reformulations
    • Des ajouts tirés du Pad, qui me paraissent importants
  • 1.2 [2018-06-10] Dark Storm et Lephe
    • Ajustements de la page d’accueil et des pages spéciales pour les membres
  • 1.3 [2018-06-12] Dark Storm
    • Reformulation du passage sur les sondages

Plan global du site

Le site est divisé en parties qui se distinguent par leurs catégories d’URLs.

  • Page d’accueil
  • Gestion des comptes utilisateurs (dont boîte de réception)
  • Forum, ses sections et ses topics
  • Programmes, leurs commentaires et tests
  • Bibliothèque de tutoriels
  • Pages d’aide, statiques ou dynamiques (dont FAQ)
  • Partages de graphismes et d’assets

S’y ajoutent des outils externes dont :

  • Une forge Git (Gitea a priori)
  • Un serveur IRC
  • Un serveur Mumble
  • Le Casio Universal Wiki

L’authentification est le plus possible commune à tous ces modules. Les détails de la gestion des droits seront certainement assez nombreux et seront traités dans les spécifications.

Page d’accueil

La page d’accueil est le point d’entrée d’une majorité de visiteurs. Elle s’adresse à eux en priorité et met en avant :

  • Les liens cruciaux menant aux tutoriels majeurs (FA-124) ou aux programmes d’actualité (bac)
  • Un index des différentes parties du site
  • Les contenus pédagogiques permanents ou de saison (Python, cours, tutoriels vidéos…)
  • Les derniers articles sont présentés par un titre, un chapeau de quelques lignes et une image, pas plus

Les membres qui passent plus souvent et s’intéressent aux projets et à l’actualité de la communauté utilisent une autre page, qui est actuellement appelée boîte de réception mais dont le rôle pourra être amené à changer. Voyez dans la section plus bas pour les détails ce que cette page contient.

On conserve une option pour afficher le texte complet dans news sur la page d’accueil, au moins pour les membres (pour les invités, il faut voir si on peut utiliser un cookie ou un stockage similaire).

Gestion des comptes utilisateurs

Les membres inscrits sont caractérisés par leur pseudo unique. De nombreuses informations leur sont associées :

  • Points d’XP : représentatif des échanges réalisés sur le site
  • Points d’innovation : caractérise les contenus postés par le membre
  • Avatar, fonctions et titre
  • Biographie et signature
  • Adresse mail
  • Appartenance à certains groupes et droits.
  • Des paramètres à ne plus savoir où les mettre (probablement).

Dans l’affichage des profils, l’actuel « pseudo, statut » sera remplacé par « pseudo, statut, titre ». Le status est la fonction qu’occupe le membre ; le titre est une décoration humoristique offerte automatiquement suivant les contributions des membres (« posteur avéré », « vieux de la vieille », « maître du code » par exemple). Voir Trophées et titres pour plus de précisions.

Cette partie contient un certain nombre de pages spéciales pour les membres. Les principales sont :

  • La boîte de réception, qui contient la liste des tous les messages privés échangés et permet de les consulter
  • La page activité du site, qui recense tout ce qui se passe sur Planète Casio
  • La configuration du compte, où chaque membre peut personnaliser ses paramètres
  • Une page de notifications où l’on peut trouver :
    • Les nouveautés des sujets suivis
    • Les projets du moments, highlights et événements en cours et à venir
    • Si l’intégration est possible, le signalement de changements sur les dépôts du membre.

Forum

  • Le forum est hiérarchisé sur au moins 2 niveaux (comme actuellement sur la v42) : section, topic.
  • On attend une modification fine des droits (lecture, écriture, modération) pour chaque section du forum, si possible avec un contrôle par-topic.
  • Il est possible d’attacher des contenus externes (fichiers, dont images) sur chaque message ; des limitations sont nécessaires, mais contrôlables selon les droits du posteur. Notamment :
    • Le nombre de pièces-jointes par message
    • Le poids total par message
    • Les extensions autorisées
  • Un système de sondage est proposé par-topic ou par-message.

Bibliothèque de programmes

La bibliothèque de programmes est un des points clés de la v5.

Organisation des programmes

Les programmes peuvent être triés selon plusieurs critères combinables et pour cibler les résultats. Quelques critères seront par exemple… (liste non exhaustive) :

  • Type de programme, catégorie
  • Plateformes ciblées
  • Progrank, dont la formule est à élaborer suivant les autres critères
  • Moyenne et nombre des évaluations
  • Participation à un évènement
  • Labels (tags)
  • Date d’ajout, de modification
  • Indicateur d’activité, dont la formule est elle aussi à définir.

L’utilisation de labels (tags) permet de gérer finement l’appartenance d’un programme à telles ou telles catégories, sans pour autant devoir se restreindre à une unique. Ces labels ne sont pas libres mais choisis dans une liste maintenue par les administrateurs (cf Panel d'administration).

De plus, une liste « spotlight » peut être maintenue (par des membres habilités) pour améliorer la visibilité de programmes méritants.

Programmes

Un programme possède une page dédiée et peut être possédé par plusieurs membres de façon simultanée. La description du programmeur et ses métadonnées sont affichées sur la page ; cela inclut :

  • Un certain nombre de fichiers en téléchargement
  • Une catégorie qui peut être « jeu », « utilitaire » ou « cours »
  • Jusqu’à 3 tags pour classifier plus finement que la v42 : « action », « aventure », « combat » par exemple.
  • Une image (peut-être plusieurs, à discuter)
  • Ses évaluations (notes, tests) et récompenses (label PC, coup de cœur…)
  • Classement au progrank, le système de notation de Planète Casio
  • Une liste des plateformes (modèles) supportés
  • La version du programme

La page d’un programme est un thread de forum à part entière et dispose à ce titre de toutes les fonctionnalités du forum. Les programmes peuvent par ailleurs être évalués par tous les membres, et possiblement notés par les invités (à discuter).

Les métadonées des fichiers de programmes incluent l’extension, le logiciel typiquement utilisé pour les manipuler, la taille, la date d’upload et de dernière modification. Toutes ces informations sont affichées dans une section réservée de la page (par opposition aux pop-ups, infobulles…).

Bibliothèque de tutoriels

Les tutoriels peuvent être collaboratifs (plusieurs auteurs) ; le Lightscript et le LaTeX sont encouragés pour leur rédaction. L’intégration du LaTeX au site est encore à discuter. Un export en PDF est proposé.

  • Les tutoriels sont suivis par un système de versionnage pour permettre des mises à jour majeures.
  • Ils possèdent des métadonnées (durée, difficulté) et, comme les programmes, sont classés par tags.
  • Ce sont les seuls contenus pour lesquels le site offre le support d’une rédaction français et anglais.
  • Les différentes sections (titres de divers niveaux) sont indexées automatiquement pour générer un sommaire.

Partage de graphismes ou d’assets

À remplir.

Fonctionnalités

Commentaires

Tous les messages textuels possèdent les mêmes fonctionnalités, qui incluent :

  • Mise en forme en Lightscript
  • Prévisualisation
  • Fusion en cas de double post rapide
  • Post invité, sous conditions (captcha…)
  • Déplacement de messages d’un thread à l’autre et en particulier d’une partie du site à une autre
  • Recherche et tri selon plusieurs critères dont la chronologie et la pertinence
  • Système de notifications (nouveautés) pour les membres+.

Notifications

La gestion des notifications peut (si le visiteur le souhaite) se faire en temps réel. Elle est contrôlée finement par les préférences du compte.

Messagerie privée

  • Les membres peuvent s’échanger des messages privés.
  • Ces messages ne peuvent pas contenir de pièces jointes (déjà discuté et re-discuté).
  • Les messages de la boîte de réception peuvent être exportés dans un format générique.

Le chiffrement des messages privés est une grande question et elle n’a pas de solution facile. Il faudra en discuter.

Panel d’administration

Un panel d’administration est disponible pour l’équipe. Il centralise ses ses tâches de l’équipe, parmi lesquelles :

  • Activités à organiser (news, RDP, concours…)
  • Modération des dernières activités (notes, tests, messages)
  • Gestion des tags des programmes et tutoriels
  • Modération des comptes (points, ban rapide, modification des informations…).

Newsletter

Suivant les options auxquelles les membres auront souscris, ils peuvent recevoir par mail :

  • Un résumé de l’activité du site et de ses contenus les plus populaires
  • Les annonces de concours ou d’événements à venir.

Philosophie générale

Principes de développement

  • Code open-source et libre
  • Principe Don’t Repeat Yourself (DRY)
  • Principe Keep It Simple, Stupid (KISS)

Les conventions de programmation (indentation, style-case, nommage) seront définies dans un autre document.

Responsive design

On propose de designer le site pour des écrans dont la largeur varie entre 320 pixels (téléphones) et 1920 pixels (écrans full HD). Typiquement, on aurait :

  • Entre 320 et 768 pixels : vue minimale, entièrement verticale, juste les contenus. Peut-être un menu déroulant en haut de l’écran.
  • Entre 768 et 1280 pixels : ajout d’informations sur la page (profils, détails). Toujours vertical.
  • Entre 1280 et 1366 pixels : ajout d’une colonne sur le côté, sommaire du tutoriel, méta-données, etc.
  • Entre 1366 et 1920 pixels : plus grande police, autre aside éventuellement (si applicable), barres de recherche…

Langages utilisés

  • Python avec le micro framework Flask
  • C pour quelques éléments critiques (interpréteur Lightscript, entre autres)
  • HTML 5
  • CSS 3 avec le micro framework à définir si besoin
  • Javascript avec le micro framework à définir si besoin

Optimisation

La v5 cherche un niveau d’optimisation honnête côté client et serveur, que ce soit d’un point de vue bande passante ou consommation CPU.

  • Réduction du nombre de requêtes HTTP
    • Fusion des scripts communs
    • Optimisation des CSS
    • Utilisation de clipping pour les icônes
    • Optimisation des caches
  • Limitation de l’usage du Javascript : le site doit pouvoir tourner sur un JS minimum, le reste est configurable par-utilisateur.
  • Réduction du nombre de requêtes à la base de données : Flask s’en chargera certainement.

Conventions du travail collaboratif

Plusieurs éléments sont écrits en collaboration, sur un Framapad. Lorsque vous participez à ces étapes, merci de respecter les consignes suivantes :

  • Vérifiez que votre pseudo est défini avant d’écrire quoi que ce soit.
  • Attribuez vous une couleur claire et unique pour tout le document.
  • N’effacez la paternité (couleur) des messages qu’une fois que le consensus a été atteint.
  • Lorsqu’un point est validé, essayez de mettre à jour les documentations associées (Wiki, topic…).