You are here -> Home » Wiki » Le site web Logram

Le site web Logram

Other languages : fr

Site webLe site web Logram est un portail communautaire et de développement disponible sous GNU Affero GPLv3, ce qui veut dire que vous pouvez le télécharger et l'installer sur votre serveur.

Ce site web est codé en Python et utilise Django.

But et utilité du site web

Logram a passé plus d'un an à se trouver un site web remplissant tout ses besoins, et pense ne pas être le projet dans ce cas.

Le problème des sites web déjà faits est qu'ils se focalisent sur une seule chose, avec parfois des modules supplémentaires pour combler leurs déficits. Par exemple, Bugzilla est un excellent gestionnaire de tickets, mais ne possède pas de forum. phpBB est un excellent forum, mais son support des nouvelles est très mauvais. Drupal est très bon pour présenter une documentation, mais son forum est très limité, ainsi que sa petite gestion des tickets.

Bref, aucun site jusqu'à présent ne comprenait toutes les fonctionnalités nécessaires à rassembler en un même endroit une communauté active, friande de forums et de nouvelles, avec des développeurs, friands de gestionnaire de tickets et de wiki.

Alors que la plupart des projets ont choisi de découper leur site web en composants éloignés : un site vitrine «fait maison», un Bugzilla, un MediaWiki (pour le wiki), une liste de diffusion pour les développeurs, un forum phpBB ou autre pour la communauté, un Wordpress ou Dotclear pour les nouvelles, éventuellement un Planet pour les blogs des développeurs, Logram a décidé de concevoir un site web unique comprenant tous les modules nécessaires, et de la meilleure qualité possible.

Modules du site web

Le site web est divisé en modules, mais très intégrés les uns aux autres. Il est assez difficile d'en retirer un et de le remplacer par un autre. Les fortes dépendances entre modules sont données un peu plus bas, mais d'autres petites dépendances sont à prévoir (c'est la clef de l'intégration entre composants, but principal du site web).

Général

Voici les fonctionnalités générales du site web, partagées (quand c'est applicable) par tous les modules. Ce sont des fonctionnalités de Django ou de l'application Django general.

  • Permissions et groupes
  • Profils complets (peudo, email, avatar, citation, «biographie» ou texte personnel, préférences)
  • Support des designs multiples et disants (CSS disponible sur un autre serveur)
  • Utilisation de Python-Markdown pour le formatage des codes, avec ajout du support des smileys
  • Interface d'administration riche et complète (avec historique des opérations), fournie par Django

Le système de nouvelles

Ce module comprend les fonctionnalités d'un blog commun à toute l'équipe de Logram et à un Planet, c'est à dire un site qui agrège tout ce que les développeurs écrivent sur leurs blogs (comme le Planet KDE).

Les nouvelles de Logram sont divisées en deux catégories : les nouvelles globales, pouvant être écrites par tout utilisateur, mais nécessitant l'approbation de l'équipe avant d'apparaître en page d'accueil (avec courte introduction) et dans les flux RSS, et les nouvelles locales, parfois appelées journaux, pouvant être écrites et publiées/dépubliées par tout utilisateur, sans contrôle de la part des administrateurs. Seule leur titre est affiché en page d'accueil, dans une boîte moins visible.

Les utilisateurs utilisent la même interface pour gérer ces deux types de nouvelles, le lien «Mes nouvelles» dans le menu utilisateur. La différence entre les deux est une simple question de case à cocher.

Le but de cette séparation est d'encourager les membres et les développeurs à communiquer sur ce qu'ils font. Un membre commencera par des journaux (s'il est timide), avant de passer aux nouvelles validées. Un développeur pourrait être amené à avoir beaucoup de choses à dire et souvent, les journaux lui permettent alors de poster en toute tranquillité, rapidement.

  • Séparation entre nouvelles publiques et privées.
  • Les nouvelles publiques doivent être validées par un membre ayant la permission adéquate.
  • Les nouvelles privées peuvent être publiées, dépubliées et éditées à volonté par leur auteur.
  • Commentaires pour chaque type de nouvelle.
  • Les nouvelles sont classées par catégories.
  • Aperçu des dernières nouvelles en page d'accueil.
  • Une page permet de lister toutes les nouvelles, et de les filtrer par catégorie, auteur, publique ou privée.

Le forum

Le forum est le plus gros module du site web, en terme de fonctionnalités et de lignes de code. Il est une dépendance de pas mal d'autres, car ces derniers réutilisent son affichage des commentaires (que le forum utilise pour afficher ses sujets).

Ses fonctionnalités sont les plus nombreuses possibles, et pourraient rattraper phpBB.

  • Arbre de catégories, forums, sujets et messages. On ne peut pas mettre un forum dans un forum, néanmoins.
  • Support de différents états pour les sujets, pouvant être définis indépendamment les uns des autres : fermé, résolu, important (affiché en haut des listes).
  • Ajout d'un sondage facultatif à un sujet. Ce sondage comprend une question et différentes options. Tout membre inscrit peut y participer, une seule fois. Il est possible pour les membres qui en ont la permission de voir qui a voté quoi (à utiliser avec modération pour éviter les problèmes). Le dernier sondage ajouté est affiché en page d'accueil.
  • Modération avancée : déplacement d'un sujet dans un autre forum, édition des messages, définition des états d'un sujet (voir deuxième point), le tout par les membres ayant les droits requis.
  • Historique d'édition pour les messages, permettant à un membre ou modérateur éditant un message de spécifier pourquoi il le fait. L'ancienne version du message n'est pas conservée.
  • Possibilité d'abonnement à un sujet : un utilisateur peut demander à recevoir un mail à chaque réponse postée par quelqu'un d'autre que lui.
  • Le dernier message lu par un utilisateur est enregistré, ce qui permet au moyen d'une petite flèche (dépendante du thème) d'amener l'utilisateur vers le dernier message qu'il a lu.

Le système de demandes

Ce module, aux fonctionnalités proches de Bugzilla (mais tout de même un peu moins développer, il faut bien dire) a pour but de permettre aux membres de rapporter des bugs et des idées.

Une attention toute particulière a été apportée à le rendre ergonomique et beau. En effet, bon nombre d'utilisateurs sont découragés par l'aspect peu engageant de certains gestionnaires de demandes.

  • Classement des demandes par type, pouvant être définis par l'administrateur (par exemple : des bugs, des idées, des patchs, des demandes d'aide, etc).
  • Regroupement des demandes par produit et composant.
  • Un produit est composé de composants et possède plusieurs versions. Par exemple, la Suite Setup est composée de LPM, libpackage, libpackageui, Pkgui et AppManager.
  • Les demandes peuvent être affichées en fonction de leur type ou de leur produit (auquel cas des informations sur le produit, comme sa description, sont affichées).
  • Possibilité de filtrer les demandes par status ou par priorité.
  • Possibilité de classer les demandes par nom, date de création ou de mise à jour, auteur, type, status, priorité, produit, composant ou version, en ordre ascendant ou descendant.
  • Une demande possède les informations «plates» (une information par demande) suivantes :
    • Type
    • Status, définis par l'administrateur (ouvert, fermé, résolu, etc)
    • Priorité, définies par l'administrateur (qui leur donne un nom et un pourcentage d'importance de 0 à 100)
    • Produit
    • Composant
    • Version du produit
    • Version du produit dans laquelle le problème est corrigé (optionnel)
    • Plateforme (système d'exploitation par exemple)
    • Version de la plateforme
    • Pourcentage effectué
  • Une demande peut posséder zéro ou plusieurs demandes liées de certaines manières (valeur uniquement informative) :
    • Dépendance à une autre demande : la sous-demande doit être corrigée pour que cette demande soit corrigée.
    • Bloquage d'une demande : inverse de la dépendance.
    • Doublon : deux utilisateurs ont rapporté le même problème
    • Simple liaison : l'autre demande est un problème différent mais pouvant avoir la même correction (même source)
  • Une demande peut posséder zéro ou plusieurs fichiers joints, pouvant être de tout type.
  • Ces fichiers joints peuvent être téléchargés ou prévisualisés (coloration syntaxique des patchs par exemple).
  • Une demande peut être assignée à zéro ou plusieurs «assignés», qui peuvent être :
    • Un membre inscrit sur le site
    • Une adresse e-mail externe, utile pour ajouter un CC à un développeur ou liste de diffusion externe.
    • Une URL quelconque, uniquement à but informatif (problème corrigé upstream par exemple)
  • Un produit peut spécifier des «assignés par défaut», qui seront ajoutés automatiquement à toute nouvelle demande pour ce produit. Utile sur un produit a une liste de diffusion spéciale, ou des mainteneurs qui veulent voir quand une demande est créée chez eux.
  • Intégration au forum : une demande peut être commentée, avec les mêmes fonctionnalités de modération que sur le forum.

Messagerie privée

La messagerie privée est un petit module permettant aux membres enregistrés de communiquer entre eux en toute discrétion, en choisissant précisément qui peut participer à la discussion.

  • Support de plus de deux participants par conversation.
  • Suppression de plusieurs conversations à la fois.
  • Supprimer une conversation ne la supprime pas pour les autres participants. Le pseudo de celui qui a supprimé sa participation apparait simplement barré. Une fois que tous les participants ont abandonné la conversation, elle est supprimée.
  • Le dernier message lu par un membre est sauvegardé, ce qui lui permet de reprendre sa lecture là où il l'a laissée.

Wiki

Le site de Logram comprend un petit wiki, suffisant pour la majorité des utilisations.

  • Édition des pages pour tous les membres enregistrés (et bientôt même pour les invités, avec un CAPTCHA)
  • Possibilité de définir une page comme étant protégée, ce qui empêche les membres de l'éditer. Seul ceux qui ont la permission adéquate peuvent le faire.
  • Possibilité de définir une page comme étant privée. Seuls les membres ayant la bonne permission peuvent la voir et la modifier. Son historique n'apparait pas en page d'accueil ni sur la page spécialement conçue pour cela. Utile pour les pages officielles en construction, ou les documentations confidentielles.
  • Chaque édition d'une page ajoute une entrée d'historique avec une sauvegarde de la page à cet instant. Il est possible de voir une page à une date spécifique, et de «défaire» une modification en un clic.
  • Les traductions sont supportées. Un clic permet de commencer la traduction d'une page dans n'importe quelle langue.

Envoi de fichiers

Ce petit module permet aux utilisateurs d'envoyer des fichiers sur le serveur sur lequel tourne le site web.

  • Support des dossiers et sous-dossiers, avec quota.
  • Chaque utilisateur reçoit un espace personnel de 4 Mio.
  • Certaines actions sur le site permettent de recevoir un dossier supplémentaire de quelques méga octets. Par exemple, éditer une page de wiki donne accès à un dossier rien que pour cette page. De même pour les commentaires (forum, news, demandes, paquets) ou les nouvelles.
  • Le type de dossiers envoyés peut être limité à certaines extensions.
  • Les utilisateurs ayant une certaine permission peuvent dépasser leur quota.
  • Les utilisateurs ayant une certaine permission peuvent envoyer tout type de fichiers.
  • Un fichier envoyé peut être supprimé par l'utilisateur en un clic.

Gestion des utilisateurs

Ce tout petit module ne contient que les pages «Membres inscrits», «Équipe», «En ligne» ainsi que les pages d'options.

Coin du développeur

Ce module contient la page «Coin du développeur» et le Pastebin.

  • Ajout et édition de snippets de code pour tous les utilisateurs.
  • Un snippet de code peut durer un jour, une semaine, un mois ou ne jamais expirer.
  • Les snippets sont affichés avec coloration syntaxique.
  • Il est possible de voir les différences entre la version courante du snippet et sa précédante.
  • Il est possible d'ajouter une alerte à un snippet s'il est inadapté à la publication en public.

Gestion des paquets

Ce module est spécifique à Logram, mais tout de même disponible dans le code source. Il permet aux visiteurs du site de voir, télécharger et noter des paquets.

  • Classement des paquets par catégories, avec icône de la catégorie.
  • Recherche de paquets en fonction de leur nom, en les filtrant par distribution si nécessaire.
  • Affichage des descriptions et du titre d'un paquet, traduits dans la langue de l'utilisateur si la traduction est possible.
  • Sélection des miroirs contenant le paquet, puis téléchargement de son archive.
  • Possibilité pour les utilisateurs de consulter une page de wiki spéciale, dédiée au paquet, et ainsi d'éditer son titre et ses descriptions. Elle sert également à proposer de nouvelles traductions.
  • Gestion complète des paquets sources :
    • Changement des drapeaux des paquets sources pour les personnes ayant la bonne permissions. Permet de redemander une construction par le serveur de construction.
    • Consultation publique des historiques de compilation (logs produits par les commandes lancées)
    • Consultation publique de l'historique des constructions du paquet : qui a construit quoi, quand, et comment.
    • Affichage des paquets binaires construits par une source.
    • Commentaires sur le paquet source.
  • La page d'accueil de ce module contient une liste de fichiers à téléchargés, regroupés en catégories, puis en produits, puis en variantes (source et binaires d'un programme appartenant à une catégorie).

Intégration entre composants

Voici la liste des composants et de ceux dans lesquels ils sont intégrés, pour proposer des fonctionnalités supplémentaires.

  • Forum
    • Nouvelles : commentaires des nouvelles
    • Demands : commentaires des demandes
    • Paquets : commentaires des paquets sources
    • Pastebin : alertes aux modérateurs sur un snippet de code
  • Wiki
    • Paquets : édition en ligne des traductions et descriptions des paquets
  • Demandes
    • Forum : envoi d'un mail aux assignés quand un commentaire est ajouté (dépendance faible)

Les modules suivants sont nécessaires au fonctionnement du site web. Les supprimer est très difficile :

  • Système de nouvelles
  • Gestion des utilisateurs
  • Forum

Les autres peuvent être supprimés sans trop de problème, à part la perte de beaucoup de fonctionnalités. Ils n'impactent pas trop les trois cités ci-dessus.

Si vous supprimez un module qui affiche quelque-chose en page d'accueil, n'oubliez pas de modifier le fichier general/views.py. N'oubliez pas non-plus de modifier templates/global/index.html. Si le module que vous supprimez affiche un onglet en haut du site web, templates/global/base.html doit être modifié.

Documentation du site web