Après un long silence radio, les développeurs de votre site favori sont de retour !
Au programme : le passage en version 19, puis en version 20. Comme vous avez peut-être pu le remarquer, ces deux versions apportent un lot important d'évolutions. Sans plus attendre, découvrons lesquelles !
Enfin, nous reviendrons sur le changement qui s'est opéré au niveau de la direction technique du projet.
- Précédemment, dans la version 19...
- ... et maintenant, la version 20 ! 🙋
- 🔥 Ça va plus vite, vous avez remarqué ?
- De l'autre côté du renard
Précédemment, dans la version 19...
Après une très importante version 18, la version 19 a été déployée le 11 juillet 2016. Même si cette nouvelle version était beaucoup plus petite que la précédente, on y trouve certains changements fort intéressants.
Tout d'abord, une fonctionnalité très demandée a fait son apparition : vous pouvez désormais vous abonner à un forum ! Imaginons que vous souhaitiez être notifié à chaque fois qu'un nouveau sujet est ouvert dans l'antre des développeurs, la Dev Zone. Vous pouvez désormais, grâce à un clic dans la sidebar (à gauche), être notifié à chaque nouveau topic.
Vous avez peut-être également remarqué que la page Contact a été modifiée afin d'y inclure les membres de l'équipe Com' et les responsables de chaque groupe.
De nombreuses modifications mineures sont également à noter : mise en cache de menu afin d'optimiser les performances, la correction de nombreux problèmes dans le MarkDown grâce au travail de Kje, la possibilité de contacter tous les auteurs d'un tutoriel, etc.
Si vous êtes curieux, voici le changelog complet de cette version 19 :
Rapport pour la v19-mangoustan
29 tickets sont compris dans ce jalon (0 ouverts et 29 fermés)
Tickets fermé
Ticket # | Titre | Label(s) |
---|---|---|
#3623 | Correction d'une faute d'orthographe sur la page de désinscription | C-Front, S-BUG |
#3563 | Le titre des pages de validation n'est pas correcte | C-Front, Facile, S-BUG |
#3481 | [v17.1] Elément "select" dépasse d'une modale | C-Front, S-Régression |
#3461 | Pas de mail pour les résolutions d’alerte | C-Back, Facile, S-BUG |
#3459 | Liens erronés sur « Mes tutoriels » ou « Mes contenus » | C-Back, S-BUG |
#3397 | Incohérences sur le modèle PublishableContent | C-Back, S-BUG |
#3396 | Paginer la page de l'historique des versions d'un contenu | C-Back, S-BUG |
Évolutions
Ticket # | Titre | Label(s) |
---|---|---|
#3727 | Django 1.8.14 | S-Évolution |
#3609 | Revoir la page de contact | S-Évolution |
#3608 | Créer un sujet sur le forum du CA pour chaque demande d'adhésion | S-Évolution |
#3607 | Mise en cache du menu | C-Back, S-Évolution |
#3539 | Souscription a un forum. | S-Évolution |
#3288 | Envoyer les commentaires des validateurs aux auteurs | S-Évolution |
#3057 | "Contacter tous les auteurs" lors de la béta ou de la version publique | C-Back, C-Front, Facile, S-Évolution |
#2911 | Ajouter les membres de l'équipe de communication sur la page contact | C-Front, S-Évolution |
#2707 | Ne pas afficher les bannis dans l'autocomplete | C-API, C-Front, S-Évolution |
#2284 | Message non lu non notifié | C-Back, S-Évolution |
Non défini
Ticket # | Titre | Label(s) |
---|---|---|
#3650 | Refacto de template tags et de Topic never_read | C-Back |
#3619 | Update markdownversion | |
#3602 | Update markdownversion | |
#3583 | Mise a jour de zMarkdown | |
#3580 | Fix #3570 : corrige l'utilisation de debug_toolbar en prod | |
#3579 | Fix #3571 : ajoute les dependances de production | |
#3578 | Fix typo in tutorialv2/forms.py | |
#3574 | Supprime fichier "path" crée dans les tests | |
#3554 | Ajout de nouvelles phrases pour Clem | |
#3552 | Met à jour les requirements Python | C-Back |
#3550 | Mise à jour de la documentation d'installation sous Windows | C-Documentation |
#3538 | Garder le nom d'utilisateur lorsque le mot de passe est faux |
... et maintenant, la version 20 ! 🙋
Après une période de faible activité, causée par la vie bien remplie de nos développeurs, la version 20 de votre site favori a enfin été déployée !
En terme de tickets fermés, cette version est tout simplement la plus importante depuis plus d'un an. On y retrouve notamment de nombreuses corrections de bugs, telles que la fin des notifications persistantes, ou l'impossibilité de s'abonner plusieurs fois à un même sujet. Des corrections ont également été apportées afin qu'il soit désormais possible de s'inscrire et de se connecter sur Zeste de Savoir via votre compte Facebook. Au total, ce sont presque 50 corrections qui ont été apportées ; vous retrouverez la liste complète ci-dessous.
Mais surtout, de nombreuses évolutions ont été apportées, qui contribuent à l'amélioration constante de votre expérience utilisateur. Il vous sera à présent possible de vous abonner au contenu d'un membre : ainsi, vous recevrez une notification à chaque fois qu'un contenu du membre suivi est publié.
Pour cela, il vous suffit de se rendre sur sa page de profil.
Une autre amélioration qui vous sera sans aucun doute appréciable : lors de la création d'un contenu, afin de vous aider à choisir les tags de votre contenu, une auto-complétion est proposée.
Il est aussi possible d'utiliser des émojis, un peu partout sur Zeste de Savoir : faites en bon usage ! 😄
Enfin, d'autres améliorations plus discrètes sont à noter, comme les notifications qui font leur apparition dans l'API, la possibilité de signaler un message masqué, ou encore l'amélioration de la page de maintenance sur mobile. Ci-dessous, le changelog complet de cette version 20.
Rapport pour le jalon Version 20
86 tickets sont compris dans ce jalon
Tickets fermé
Corrections de bug
Ticket # | Titre | Label(s) |
---|---|---|
#3885 | Marque le MP de réservation du staff comme lue. | C-Back, S-BUG |
#3882 | Ignore les tags utf8mb4 | C-Back, P-Haute, S-BUG |
#3877 | Affiche le nombre de réponses pour les sujets et les mp. | C-Front, S-Régression |
#3875 | Fix bug on no tag | C-Back, S-Régression |
#3872 | Corrige les erreurs js dues aux modales | C-Front, P-Haute, S-Régression |
#3857 | fix #3836, teste correctement la présence de caractères unicode de plus de 3 bytes | C-Back, P-Bloquante, S-BUG |
#3856 | Ne dépend plus d'assets hébergés ailleurs | P-Bloquante, S-Régression |
#3855 | Utilise le bon template pour la pagination des notifs. | C-Front, S-Régression |
#3852 | Hotfix issue3847 | C-Front, S-Régression |
#3845 | Pas de signalement MP; tests | C-Front, S-Régression |
#3822 | Invalide le cache quand une notif est modifiée. | C-API, S-BUG |
#3819 | Empêche d’éditer un message masqué | C-Back, C-Front, S-BUG |
#3816 | Affiche les catégories dans le bon ordre dans la topbar. | C-Back, S-Régression |
#3814 | Fix #3810 : ajout d'un template filter pluralize_fr | C-Front, S-BUG |
#3809 | Correction des validateurs pour les membres | C-Back, P-Bloquante, S-BUG |
#3808 | (fix) defaultdict -> dict pour le rendu topbar | C-Back, C-Front, P-Bloquante, S-Régression |
#3807 | Renvoie les notifications lues et non lues. | C-API, S-BUG |
#3806 | Corrige le pluriel pour le nombre d’abonnés | C-Front, S-BUG |
#3802 | Ajoute des filtres safe dans certains templates | C-Front, S-BUG |
#3801 | Permet de cacher les messages | C-Front, S-Régression |
#3798 | Correction du compteur d'abonnés | C-Front, S-BUG |
#3795 | Un long tag provoque une erreur 500 | C-Back, S-BUG |
#3794 | Le message d'avertissement s'affiche en mode zen | C-Front, S-BUG |
#3791 | Liste des notifications, template cassé | C-Front, S-Régression |
#3788 | Numéro de version manquant | S-Régression |
#3779 | URGENT / BLOQUANT / SITE HS : Certificat HTTPS de prod expiré | C-Infra, P-Bloquante, S-Régression |
#3778 | [ci skip] Répare la config des tests locaux | P-Haute, S-Régression |
#3777 | Répare l'affichage des MPs | C-Front, P-Bloquante, S-Régression |
#3773 | Corrige un import dans zds.notification.views qui casse Travis | C-Back, P-Haute, S-BUG |
#3757 | Ordonne les tags par popularité | C-Back, S-BUG |
#3738 | Google indexe nos pages de recherche | P-Haute, S-BUG |
#3736 | Cache menu par fragments | C-Front, S-Régression |
#3733 | Retire les avertissements en lecture zen | C-Front, S-BUG |
#3730 | Correction du script de MEP | C-Infra, P-Haute, S-BUG |
#3728 | Strip tags | C-Back, P-Haute, S-BUG |
#3722 | Répare l'admin django pour les topics | C-Back, P-Haute, S-BUG |
#3714 | utf8mb4 Script de migration & doc | C-Back, C-Infra, S-BUG |
#3713 | Documente gunicorn pid et IP serveurs | C-Infra, S-Régression |
#3706 | La réservation d'un contenu crée un MP sans le validateur | C-Back, Facile, S-BUG |
#3689 | Les tests ne passent pas suivant la gitconfig utilisateur | C-Back, S-BUG |
#3688 | Ajout des sitemaps au robots.txt | Facile, S-BUG |
#3685 | Possible de s'abonner deux fois à un sujet (et d'avoir une erreur 500 après) | S-BUG |
#3668 | Problème de rendu des smileys dans une citation | C-Front, S-BUG |
#3658 | Texte incohérent au niveau des notifications | C-Front, Facile, S-BUG |
#3642 | [v18] Un tag trop long provoque une erreur 500 | C-Back, S-BUG |
#3463 | Erreur de dépendance dans la documentation d'installation | C-Documentation, Facile, S-BUG |
#2217 | Impossible de se connecter à partir de Facebook | C-Back, S-BUG |
Évolutions
Ticket # | Titre | Label(s) |
---|---|---|
#3823 | Fix #3692 : Ajout doc HTTP/2 + reset du cache lors d'une MEP | C-Documentation, C-Infra, S-Évolution |
#3775 | Ferme la bêta des articles à la publication | C-Back, S-Évolution |
#3774 | Ajoute bouton « retour à la liste des sujets » | C-Front, S-Évolution |
#3759 | Permet de signaler un message masqué | S-Évolution |
#3758 | Supprime le bouton d’envoi de MP sur les profils bannis | S-Évolution |
#3747 | Documente les milestones | C-Documentation, S-Évolution |
#3744 | Supprimer model_name.py | C-Back, C-Documentation, Facile, S-Évolution |
#3739 | Liste les notifications dans l'API. | C-API, S-Évolution |
#3709 | Envoyer un sujet dans le bugtracker. | S-Évolution |
#3705 | [ci skip] Ajoute editorconfig | C-Back, C-Front, Facile, S-Évolution |
#3699 | Affiche la liste des notifications. | S-Évolution |
#3697 | Nouveau MP : « Un des participants saisi est introuvable » ← lequel ? | S-Évolution |
#3696 | Amélioration de la page de maintenance sur mobile | S-Évolution |
#3671 | Changer le nombre de contenus par page | C-Front, Facile, S-Évolution |
#3645 | Supprimer les fonctions des tutoriels du SdZ | C-Back, Facile, S-Évolution |
#3509 | Utiliser l'autocomplétion pour le champ des tags quand on édite/créé un contenu | C-Back, C-Front, S-Évolution |
#3472 | Optimiser Travis | S-Évolution |
Non défini
Ticket # | Titre | Label(s) |
---|---|---|
#3874 | Converti auth_user en utf8mb4 | C-Back, P-Bloquante |
#3826 | Empêche d’éditer un message masqué | C-Back |
#3815 | Affichage du nombre d'abonnés | C-Front |
#3789 | Serveur de beta anormalement lent | C-Infra, P-Bloquante |
#3786 | Résout le bug de notification lors du déplacement de sujet | |
#3781 | (doc) Ajout des fichiers de configuration de production | C-Documentation, C-Infra |
#3769 | Update config nginx subdomains | C-Infra, P-Haute |
#3768 | Corrige le bouton Valider des modales de l'éditeur | |
#3767 | Masque la biographie des membres bannis définitivement | |
#3761 | #3620 Fix url images import | |
#3756 | Correction (orthographe) | |
#3755 | Invalide le cache de l'API à chaque entrée dans la base | C-API, P-Haute |
#3753 | Ajout de sitemap pour /pages/ | |
#3750 | update markdown version | |
#3731 | [ci skip] Adapation aux nouveaux tags | C-Documentation, P-Bloquante |
#3726 | Merge de la branche hotfix-v19 vers dev pas fait | P-Bloquante |
#3698 | Les formules mathématiques ne fonctionnent pas sur les forums | |
#3694 | Permettre de suivre les contenus d'un membre | |
#3693 | Correction d'un lien mort dans la doc | |
#3691 | Optimise les tests | |
#3669 | Faute d'orthographe dans le README. | |
#3651 | Remplacement de l'adresse d'OVH par celle de Gandi |
🔥 Ça va plus vite, vous avez remarqué ?
Côté serveur, cette nouvelle version est la première à utiliser MySQL 5.6 au lieu de MySQL 5.5. C'est pas une révolution, mais ça a rendu le support des émojis nettement plus simple ✌🏾. Une compétence absente de notre équipe technique est celle de DBA (l'expertise d'administration de base de donnée). Nous faisons de notre mieux et nous nous en sortons bien, mais si une perle se cache parmi nos lecteurs, qu'elle se dénonce ! Une configuration MySQL aux petits oignons, ce serait chouette.
Pendant quelques jours nous testons une réduction drastique (de 256Mo à 16Mo) de la mémoire allouée au Query Cache, le cache chargé de garder en mémoire certaines requêtes SQL. L'impacte est pour le moment positif, voici ce qu'on observe :
- Les statistiques du cache sont presque inchangées :
- on garde environ le même nombre de requêtes en cache qu'avant,
- la grande majorité des demandes faites au cache sont des "hits" (c'est à dire qu'on demande au cache s'il a une requête, et qu'il répond "oui").
- Par contre le cache étant nettement plus petit, il subit plus souvent des élagages ("pruning" - MySQL évince sélectivement et partiellement certaines requêtes du cache pour ne pas dépasser la limite de mémoire). Semble-t-il sans impact.
- De façon un peu surprenante, et difficile d'imputer ceci au cache ou aux améliorations apportées par MySQL 5.6, on remarque clairement que beaucoup moins d'opérations sont effectuées en base de donnée. Et ça, c'est très positif.
- Nous avons également modifié la configuration de Django pour qu'il cache les templates. Le mécanisme est simple, le résultat impressionnant.
- Par défaut, quand on demande une page, après avoir traité les données à mettre dans la page Django va chercher sur le disque du serveur le template dans lequel il va rendre les données. Il cherche donc le fichier, le lit, parse le langage de template, l'évalue, génère la page HTML qui est ensuite envoyée au client.
- Désormais, Django ne fait ce travail que lorsque le site démarre. Au lieu de le faire à chaque affichage d'une page, il le fait à chaque mise en production. Il lit tous les templates, les parse, et les garde en mémoire. Quand on demande une page, il n'a qu'à évaluer le template en mémoire et paf, rendre la page aussitôt.
Jugez plutôt :
Tableau préparé par SpaceFox :
Page | v19 | v20 | Temps de réponse divisé par | % de l'ancien temps de réponse |
---|---|---|---|---|
Accueil | 320 ms | 210 ms | 1,52 | 66 % |
Accueil des forums | 510 ms | 400 ms | 1,28 | 78 % |
Une catégorie | 470 ms | 300 ms | 1,56 | 64 % |
Un topic | 570 ms | 220 ms | 2,59 | 39 % |
Un big-tuto | 210 ms | 130 ms | 1,62 | 62 % |
Un mini-tuto | 500 ms | 180 ms | 2,77 | 36 % |
Un article | 710 ms | 250 ms | 2,84 | 35 % |
Et enfin, comme on passe environ 2x moins de temps à créer une page, on remarque que Nginx, notre serveur web, en fait environ 2x moins, logique :
De l'autre côté du renard
Après pile deux années passées à ce poste, notre DTC (directeur technique) SpaceFox a décidé de passer le flambeau. La contribution de SpaceFox à la gestion technique de ZdS a été exemplaire d'engagement et de qualité. La plateforme se porte bien, la codebase n'a cessé de s'améliorer, l'infrastructure est bonne. Le projet était sur la bonne voie, il l'est resté et le restera.
Au 1er juillet 2016, la direction technique de Zeste de Savoir a été reprise par gustavi et victor.
Un très grand merci à SpaceFox pour tout son travail. Il nous laisse un projet qui donne envie d'être maintenu. Sa disponibilité exceptionnelle, le bon déroulement de la remise des clés du projet, son aide et son soutien lors des différents problèmes survenus après cette transition, ses connaissances pointues et sa motivation ont été extrêmement précieux et appréciés.
Prenant toute la mesure de l'ampleur actuelle du projet, nous sommes ravis de la confiance qui nous est accordée par le Conseil d'Administration de Zeste de Savoir.
Notre mandat à ce poste, nous souhaitons l'articuler autour des 3 axes suivants :
Encourager activement les contributions à la plateforme technique de Zeste de Savoir, en misant sur plus de diversité au sein l'équipe.
- ZdS s'est muni il y a quelques mois d'un code de conduite. Nous nous appuyons sur ces quelques règles pour garantir un environnement sain et sûr pour toute personne souhaitant participer au développement.
- Vous n'avez pas besoin de connaitre les technologies que nous utilisons pour pouvoir contribuer à améliorer ZdS. Toute contribution est bienvenue, peu importe votre niveau de compétence ou d'expérience. Il n'y a pas de mauvaise proposition, pas de question bête, pas de PR "trop triviale". Nous sommes présents pour vous aider à aider ZdS.
- Contribuer à un projet libre tel que celui-ci est une belle opportunité - saisissez-la ! C'est l'occasion d'apprendre en faisant. De faire un premier pas dans le libre ou l'open source. De faire partie d'une communauté qui ne vous jugera pas. De prouver à un employeur que vous savez programmer, travailler en équipe et vous engager dans un projet - le tout avec le soutien d'une équipe technique prête à vous faire confiance, à vous épauler dans tous les aspects de la contribution à un projet libre. Le meilleur moyen de perfectionner son apprentissage de la programmation est de lire du code et d'avoir des gens qui relisent votre code, et de travailler avec des gens de différents niveaux d'expérience. Nous vous offrons tout ça. Allez viens, on est bien bien bien bien bien !
Améliorer la qualité de ZdS en tant que projet libre. Cela signifie améliorer la qualité de la codebase et affiner le processus de développement. Continuer à créer du logiciel performant en respectant les bonnes pratiques, avoir une documentation adéquate.
- Continuer à gérer les affaires courantes : corrections de bugs, nouvelles fonctionnalités, mises en production, etc.
victor, gustavi
Dans le prochain Récap' Communautaire, les statistiques de fréquentation de Zeste de Savoir vous seront présentées. Sachez simplement qu'elles sont historiques : Zeste de Savoir n'a jamais été autant visité !
L'occasion de remercier tous les gens qui participent au développement de la plateforme, œuvrant à vous fournir un site de qualité. Nous adressons un merci particulier à tous les nouveaux contributeurs qui font leurs premiers pas dans le projet afin de donner un nouveau souffle à l'équipe : nous espérons que l'aventure sera longue !