Zeste de savoir continue son amélioration

22 v'la la release !

Depuis le mois de décembre et la sortie de la version 211 – principalement orientée sur la correction de bugs –, les développeurs ont été actifs pour améliorer votre expérience d’utilisation sur le site. Voici leur histoire2.


  1. Qui n’a pas eu d’article consacré, parce que pourquoi pas? 

  2. Au moment d’écrire cette ligne, j’ai le jingle de New York police judiciaire dans la tête. 

Poulets, featuring elasticsearch

Vous le savez sûrement, ZdS possède un moteur de recherche. Ce moteur vous permet de trouver des informations sur tout le site, forum comme contenus. Pourtant, plus le site grandissait, plus nous nous sommes rendu compte que les résultats avancés par le moteur étaient particulièrement peu pertinents.

Ce manque de pertinence nous avait fait prendre une décision qui n’a pas manqué d’être remarquée sur les forums : la barre de recherche (et Clem qui lui est associée) avaient été masquées afin de ne pas gâcher l’expérience d’utilisation des nouveaux arrivants.

Nous avions donc un grand chantier qui avait pour but d’améliorer cet outil névralgique du site : l’expérience de l’ancien staff du Site du Zéro montrait qu’une part non négligeable des utilisateurs l’utilisent pour trouver une réponse à leurs questions !

C’est pierre_24 qui s’y est collé. Et il a compris que la principale raison de l’incohérence des résultats était notre pile technologique. En effet, nous avions choisi, aux commencements du site, d’utiliser le combo Solr et Haystack car ils étaient facile d’accès et éprouvés, Haystack étant une technologie permettant de lier une base de données MySQL et Solr.

Néanmoins, avec l’arrivée de la ZEP-12, nous avions éprouvé plusieurs difficultés à lier efficacement les modèles des contenus (qui sont plutôt basés sur git que MySQL) et Haystack. De plus même après le travail colossal de Hugo pour adapter l’analyse de Solr à notre utilisation (français/HTML…) et booster les éléments les plus importants de nos données, le système avait bien du mal à remonter les données qui vous étaient utiles. Ainsi, pierre_24 a choisi d’utiliser une des technologies les plus efficientes du moment quand on désire un moteur de recherche : Elasticsearch.

Les curieux pourront aller se renseigner via un article de firm1 qui traite d’une version antérieure à celle que nous utilisons tant le développement du moteur est actif ! Et après un travail titanesque visant à remettre à plat toute la recherche, avec l’aide de sandhose pour que la page de recherche soit bien plus lisible, les résultats sont là, et Clem est de retour sur la page d’accueil.

La nouvelle page de recherche.

Je ne sais pas pour vous, mais je pense que notre pingouin-chimiste-quantique-belge1 mérite bien un smoothie !

Cette 22ème version de ZdS se nomme donc « poulets », parions qu’il s’agit d’un régionalisme helvète… ou pas.


  1. Seule une erreur s’est glissée dans cette énumération. La retrouverez-vous ? 

Aperçu, meilleur suivi du site, améliorations diverses

La rédaction de contenus

Grâce à un gros travail d’Anto59290, la prévisualisation des contenus a été fortement améliorée. Vous pouvez maintenant prévisualiser tout type de contenu réalisé en Markdown (y compris les introductions et conclusions de contenus ainsi que la biographie de votre profil) sans rechargement de page !

De nombreux projets sont également à venir. Tout d’abord en ce qui concerne l’interface de rédaction en elle-même, artragis est en train de préparer une interface d’édition des chapitres (ou des contenus dans le cas d’articles ou de « mini-tutos ») où les sections ne seront pas séparées. Anto59290 prépare quant à lui une interface de fusion dans le cas d’un conflit d’édition.

Enfin, d’autres améliorations devraient également arriver. Citons entre autres une nouvelle page de présentation des contenus, une notation communautaire pour permettre de mieux trier les contenus et une interface de statistiques pour les auteurs. :)

Un meilleur code pour faciliter le développement

Le code a été pas mal trituré pour le rendre encore et toujours plus maintenable. De même, pour améliorer le suivi des bugs, l’intégration à Sentry a été largement améliorée.

Et d’autres améliorations moins importantes

Comme toute nouvelle version, celle-ci ajoute quelques améliorations moins importantes, mais également très utiles. Tout d’abord, une première nouveauté est le temps de lecture calculé automatiquement sur les contenus.

Le temps de lecture est calculé automatiquement.

Ensuite, il est maintenant possible de marquer toutes ses notifications comme lues. Cela peut vous être utile si vous vous absentez pendant un certain temps et que vous êtes submergé de notifications. :)

Enfin, une dernière amélioration est la possibilité pour le staff de marquer des contenus comme obsolètes. Cela permet de conserver ces contenus comme archives, mais de rester transparent pour éviter que des lecteurs ne se retrouvent piégés.

Un contenu obsolète est maintenant signalé comme tel.

Cachez cette tribune que je ne saurais voir

Par treize fois tu publieras

Il fut un temps où les fonctionnalités majeures de ZdS étaient décrites dans des « ZdS Enhancement Proposal » – aka ZEP. Si depuis la communauté a, à l’unanimité, décidé leur abandon, la treizième ZEP avait pour but de fournir à la communauté un nouvel espace d’expression. Nommé « tribunes libres », cet espace s’inspire des journaux de LinuxFr.org.

Durant l’été 2016, gustavi, second sysadmin du site s’est lancé dans le développement desdites tribunes et c’est en novembre que les tests du code ont commencé.

Et la loi de Pareto nous a frappés de plein fouet. Bien que les bugs détectés étaient assez peu nombreux, leur correction a pris du temps. On peut y ajouter qu’au débogage, plusieurs débats sont venus s’ajouter pour s’assurer que les tribunes étaient bien comme la communauté l’attendait.

Parce qu’un bug peut être très gênant.

Et c’est aussi là que les autres gros travaux commencèrent pour le moteur de recherche, l’interface de rédaction, etc. Si on ajoute l’indisponibilité de gustavi (qui, derrière ce spaceinvader cache un humain qui voyage beaucoup :) ), nous avons pris du retard. La v22 devenant trop grosse, les tribunes n’y sont pas incluses. Mais rassurez-vous, elles viendront. Nous voulons juste nous assurer qu’elles seront conformes à vos attentes.

Ping the world, make it better place

En parlant de tests et de volonté de vous fournir un site aux petits oignons, il est une fonctionnalité que nous vous préparons depuis un moment : le ping via une mention telle que @artragis par exemple.

Cette fonctionnalité est apparue durant la fin du développement de la v21, version qui avait surtout apporté un gros débug du système de notifications. Comme nous avions jugé que la stabilisation du système était trop récente et que les tests du ping étaient trop peu développés, victor a choisi de ne pas activer la fonctionnalité.

Et la v22 fut l’occasion de faire ces tests. Malheureusement, la RC1 a révélé quelques problèmes. Bien qu’ils soient faciles à corriger, nous avions considéré l’arrivée des diverses améliorations contenues dans cette version comme prioritaire sur le ping. De ce fait, le ping reste désactivé et devrait arriver dans la v23 (sauf problème bloquant).

Et de nouveaux développeurs

Parce que sans eux nous n’aurions pas tout ça, il est important de remercier victor pour son suivi de la release, mais aussi les nouveaux développeurs qui sont arrivés sur le projet entre novembre et décembre 2016. C’est ainsi grâce à l’activité et la réactivité de GCodeur, Anto59290 et AmarOk que le développement a pu reprendre une activité importante après les inquiétudes levées par Andr0.

Après une période de plus faible disponibilité, le trio de la ZEP-12, pierre_24, artragis et Hugo sont de nouveau prêts à vous fournir de nouvelles fonctionnalités. Et avec l’appui de Sandhose et Abdelazer au front, ça devrait être très beau. :)

Si vous souhaitez vous aussi contribuer au développement du site, n’hésitez pas à nous rejoindre. La procédure d’installation a été grandement simplifiée et les tickets faciles sont répertoriés comme tels. Notez par ailleurs que le framework Django, que nous utilisons, est facile à appréhender et en grande partie documenté en français. ;)


Pour rappel, un thème sombre est disponible sur nos forums.

En résumé, c’est une nouvelle version majeure qui arrive sur le site et elle sera forcément suivie de plusieurs autres car nous avons dans les bacs de très belles fonctionnalités, souvent déjà codées mais qui doivent encore passer l’épreuve des tests. En attendant, si vous aimez lire les rapports, voici le changelog complet de la version 22 :

Rapport pour le jalon v22

70 tickets sont compris dans ce jalon (0 ouverts et 70 fermés)

Tickets fermé

Corrections de bug

Ticket # Titre Label(s)
#4176 Fix align on Suivre button (2) C-Front, S-BUG
#4171 Répare le compte de caractères des contenus C-Back, QA svp, S-BUG
#4169 Corrige le titre du message de résolution d’alerte C-Back, S-Régression
#4162 Fix un test C-Back, S-Régression
#4161 Les sujets n’apparaissent plus en double pour les membres de plusieurs groupes C-Front, S-Régression
#4152 Correction de style dans le JS de la prévisualisation C-Front, S-BUG
#4144 bump: gulp-sourcemaps@2.2.2 C-Front, S-Régression
#4138 Corrige #4093 C-Back, S-Régression
#4108 Fixe 4106 : plus d’erreur 404 en marquant ses notifications comme lues C-Back, S-BUG
#4099 fix(admin): Topic admin C-Back, S-Régression
#4086 Corrige le choix de type de recherche C-Front, S-BUG
#4077 4075 reordonne les membres C-Back, S-BUG
#4071 Corrige test galerie C-Back, S-BUG
#4047 Empêche un membre non staff d’en bannir un autre C-Back, S-BUG
#4043 Vérifie qu’un membre non staff ne peut pas éditer le profil d’un membre C-Back, S-BUG
#4042 Règle les pbs de docs C-Documentation, S-BUG

Évolutions

Ticket # Titre Label(s)
#4187 Permet de marquer un contenu comme obsolète C-Back, S-Évolution
#4172 Utilise update pour la désinscription C-Back, S-Évolution
#4149 Correction de la documentation sur les MP C-Documentation, S-Évolution
#4147 Correction de la documentation sur les membres C-Documentation, S-Évolution
#4145 Correction de l’orthographe de la doc sur les forums C-Documentation, S-Évolution
#4142 Enlève la possibilité de nommer un membre super-utilisateur depuis l’interface de promotion C-Back, S-Évolution
#4109 Améliorations de la page Pseudo et Email C-Back, S-Évolution
#4096 Recherche via Elasticsearch C-Back, QA svp, S-Évolution
#4095 Titre du module d’alertes dans l’en-tête C-Front, S-Évolution
#4093 Fix 2743 : Ajout du temps de lecture aux contenus publiés C-Back, S-Évolution
#4088 Nom du site dans l’aide pour les licences C-Front, S-Évolution
#4085 Modification du format de la date de publication des contenus pour les petits écrans C-Front, S-Évolution
#4081 Ajout des tooltips manquants (menu dropdown et forum) C-Front, S-Évolution
#4080 Fix 4008 : Ajoute un bouton au menu d’envoi des MP C-Front, S-Évolution
#4079 Permet de marquer ses notifications comme lues C-Back, S-Évolution
#4076 sentry releases C-Back, C-Infra, S-Évolution
#4046 Titre de la page de modification du profil C-Front, S-Évolution
#4044 Corrige le contenu du topic de mise en bêta C-Front, S-Évolution
#4036 Suivi des contenus par mail C-Back, S-Évolution
#4021 API : ajout de last_visit C-API, C-Back, S-Évolution
#4016 Ajoute un bouton pour revenir au sommaire C-Front, S-Évolution
#4005 Crée un paramètre pour l’intervalle entre deux mises à jour de dernière visite C-Back, S-Évolution
#3985 add munin graph for tribunes C-Infra, S-Évolution

Non défini

Ticket # Titre Label(s)
#4189 Utilise permission_required pour la gestion des droits – module pages
#4188 Pysolr enlevé des dépendances C-Back, S-Refactorisation
#4182 Utilise permission_required pour la gestion des droits – module member C-Back, S-Refactorisation
#4180 Correction de la documentation sur les contenus C-Documentation, S-Refactorisation
#4175 README.md mis à jour pour Elasticsearch C-Documentation
#4167 Ne supprime pas les notes de karma et les sanctions par un modérateur qui se désinscrit
#4166 Corrige une faute d’orthographe sur le modèle Forum C-Back, S-Refactorisation
#4165 Mise à jour de Pillow C-Back
#4163 [Code style] Dernier oublis et ajout de flake8-quote dans la stack dev C-Back, S-Refactorisation
#4159 [Code-style] Uniformise les quotes -> single-quote - module utils C-Back, S-Refactorisation
#4158 [Code-style] Uniformise les quotes -> single-quote - module member C-Back, S-Refactorisation
#4155 Corrige l’orthographe du topic de mise en bêta C-Front
#4148 Correction de la documentation sur les galeries C-Documentation
#4146 Fix 3881 : Ajout des classes d’admin pour certains modèles C-Back, QA svp
#4141 Pluriel sur le nombre de publications C-Front
#4140 [Code-style] Uniformise les quotes -> single-quote - module tutoriels C-Back, S-Refactorisation
#4139 [Code-style] Uniformise les quotes -> single-quote - module forums C-Back, S-Refactorisation
#4135 [Code-style] Uniformise les quotes -> single-quote - module notification
#4131 [Code-style] Uniformise les quotes -> single-quote - module mp
#4130 [Code-style] Uniformise les quotes -> single-quote - module search
#4129 [Code-style] Uniformise les quotes -> single-quote - module pages and munin
#4128 [Code-style] Uniformise les quotes -> single-quote - root files
#4127 [Code-style] Uniformise les quotes -> single-quote - module Middlewares
#4121 Fix l’envoi des mails pour les MPs
#4112 [Code-style] Uniformise les quotes -> single-quote - module Gallery
#4111 [Code-style] Uniformise les quotes -> single-quote - module "Featured"
#4102 Upgrade DRF C-API, C-Back
#4089 Renommage de get_alerts_posts_count en get_active_alerts_count C-Back, S-Refactorisation
#4087 3237 Refonte du preview de plusieurs modules (biographie et contenus) C-Back, S-Refactorisation
#4037 [Py3k]: utilise str C-Back, S-Refactorisation
#3992 Add test to user model C-Back

13 commentaires

Sympa cet article :)

J’aurais deux questions/remarques.

  • Comment est calibrée la recherche ? Par exemple, si je tape "Arduino" je m’attends à voir les tutos en premier mais le big tuto n’arrive que tard en deuxième page…
  • Comment est calculé le temps de lecture ? (Parce que ça doit être sympa de bouffer le tuto Arduino en 9h et 45 minutes :D , du coup est-ce pertinent de calculer les temps de lecture sur les tutos ?)
+6 -0

Bravo au dev pour cette v22 et longue vie à Zds !
Sinon je rejoins Eskimon sur sa remarque, j’aurais bien vu les filtres sur la page d’accueil aussi et pas uniquement sur la page des résultats de recherche.

https://gyazo.com/2955c39de962ecfd05096232011ec34e

Là on est obligé de lancer une première recherche, se rendre compte que tout est mélangé, activer un filtre et relancer la recherche.

+0 -0

Comment est calibrée la recherche ? Par exemple, si je tape "Arduino" je m’attends à voir les tutos en premier mais le big tuto n’arrive que tard en deuxième page…

Pour l’instant, on n’a pas boosté par la taille du tuto, mais ça devrait arriver car c’est pas le seul à subir ça. On a cependant dit que :

  • tuto > article > forum
  • présence dans le titre > présence dans le sous-titre > présence dans le texte

Comment est calculé le temps de lecture ? (Parce que ça doit être sympa de bouffer le tuto Arduino en 9h et 45 minutes :D , du coup est-ce pertinent de calculer les temps de lecture sur les tutos ?)

C’est un truc qu’il faudra changer. L’algo qu’on utilise est pertinent sur les petits tuto et articles mais pas sur les tutos plus gros. On va voir ce qu’on peut faire.

Sinon je rejoins Eskimon sur sa remarque, j’aurais bien vu les filtres sur la page d’accueil aussi et pas uniquement sur la page des résultats de recherche.

En fait on ne peut pas vraiment surcharger la page d’accueil avec une sélection. Par contre avec abdelazer on est en train de s’assurer que des bons filtres sont ajoutés quand on fait une recherche depuis la page de la liste des tutos par exemple.

Je ne sais pas pour vous, mais je pense que notre pingouin-chimiste-quantique-belge mérite bien un smoothie !

Cette énumération :p

Bon, je prend mon ticket et je passe au bar juste après le boulot.

Comment est calibrée la recherche ? Par exemple, si je tape "Arduino" je m’attends à voir les tutos en premier mais le big tuto n’arrive que tard en deuxième page…

Preuve si il en est qu’il faudrait encore un tout petit peut ajuster les paramètres, parce que effectivement, il est encore un peu bas à mon goût, le tuto arduino.

Pour compléter mon collègue du dessus, je rajoute que les tags influent beaucoup sur les résultats (probablement trop), ce qui explique probablement la pelletée de sujets qui se glissent entre les résultats de la recherche sur "arduino" :)

+0 -0

Fromage pour tout le monde !

A propos des contenus obsolètes, il serait temps de marquer le tuto Blender d’aerodark comme tel. (Pardon si c’est pas ici qu’il faut en parler, sinon ça se passe où ?)
La flemme d’expliquer pourquoi en détail ici (et puis ça ferait un long pavé hors sujet). Mais je suis dispo en mp si besoin est.

+0 -0

Le fait de marquer un contenu comme obsolète est une première itération. Le projet est, à terme, de faire une interface pour le staff lisant les contenus non vérifiés depuis un certain temps (non défini pour le moment il me semble) afin de pouvoir les marquer comme obsolètes ou valider qu’ils sont toujours à jour. :)

Cependant, je me demande s’il ne serait au final pas plus utile de faire une fonctionnalité de signalement de contenus obsolètes. À voir si on intègre ça au système d’alertes actuelles ou pas.

Fromage pour tout le monde !

A propos des contenus obsolètes, il serait temps de marquer le tuto Blender d’aerodark comme tel. (Pardon si c’est pas ici qu’il faut en parler, sinon ça se passe où ?)
La flemme d’expliquer pourquoi en détail ici (et puis ça ferait un long pavé hors sujet). Mais je suis dispo en mp si besoin est.

-L0Lock-

Le fait de marquer un contenu comme obsolète est une première itération. Le projet est, à terme, de faire une interface pour le staff lisant les contenus non vérifiés depuis un certain temps (non défini pour le moment il me semble) afin de pouvoir les marquer comme obsolètes ou valider qu’ils sont toujours à jour. :)

Cependant, je me demande s’il ne serait au final pas plus utile de faire une fonctionnalité de signalement de contenus obsolètes. À voir si on intègre ça au système d’alertes actuelles ou pas.

GCodeur

J’imagine qu’un sujet dans le fofo des suggestions permettrait d’en discuter. Mais je ne connais pas de directive officielle :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte