Licence CC BY

Redécouverte d'une configuration oubliée

Archéocode #3 - Les coulisses (poussiéreuses) de Zeste de Savoir

Zeste de Savoir est un projet au long cours, avec presque 8 ans depuis la sortie officielle du site, encore plus depuis le début du développement, et plus encore quand on considère que la base de code est issue d’un projet antérieur. Avec le temps et la succession des développeurs, il n’est pas rare de voir apparaître quelques signes d’obsolescence, qu’il est de bon ton de corriger au fur et à mesure pour maintenir le code dans un état le plus optimal possible, sur la durée.

Cette série de billet intitulée Archéocode vise à montrer comment le code de Zeste de Savoir tente de garder une certaine jeunesse, loin des nouvelles fonctionnalités visibles pour les utilisateurs.

Dans ce troisième billet, je raconte comment j’ai redécouvert une fonctionnalité désactivée depuis si longtemps… qu’on avait presque oublié qu’elle existait, ce qui fait qu’on a décidé de la supprimer.

Smileys, nouveaux et anciens

Deux lignes de code qui interpellent

Les vieilleries se découvrent souvent au détour d’une autre tâche et celle-là suit la règle. En l’occurrence, je jetais un œil à la vue gérant le logout, afin de décider si ça valait la peine de la modifier pour se reposer sur la vue de logout intégrée à Django1.

Le code de la vue est le suivant.

@login_required
@require_POST
def logout_view(request):
    """Log user out."""

    logout(request)
    request.session.clear()
    response = redirect(reverse("homepage"))
    # disable Clem smileys:
    remove_old_smileys_cookie(response)
    return response

Les lignes surlignées m’ont interpellé : ça parle de désactiver les smileys Clem, qui sont utilisés par défaut depuis des années sur Zeste de Savoir et a priori, pas besoin de cookies pour afficher des petites frimousses. Qu’est-ce qui se cache derrière ça ?

Nouveaux smileys en 2017

On peut retracer la raison de l’existence de cette ligne à l’intégration des nouveaux smileys Clem, qui date de mi-2017 (voir la PR en question).

Pour cette PR, le choix a été fait de proposer le choix aux membres : utiliser les anciens smileys ou les nouveaux. La fonctionnalité en question est désactivable : on peut interdire aux membres d’avoir ce choix en changeant un paramètre de la configuration du serveur. Si cette option de configuration est activée, les membres ont un paramètre dans le profil pour garder les anciens smileys hérités du Site du Zéro ; si l’option est désactivée, on a nécessairement les smileys Clem. Un cookie dédié participe à la gestion de ce choix.

Au prix d’un peu de complexité, tout le monde est satisfait : on peut garder les smileys old school si on les aime, ou alors embrasser le zeste pleinement et adopter les nouveaux smileys.

Disparition prématurée de la fonctionnalité

Si vous ne saviez pas qu’on peut choisir les anciens smileys, c’est normal ! Il se trouve que cette configuration est désactivée… depuis début 2018 environ. Donc depuis cette période, l’option offrant le choix a disparu des paramètres, après à peine quelques mois d’existence.

@Situphen a retracé la désactivation lors de la mise en place d’ansible, début 2018, où ce paramètre a été probablement oublié et s’est retrouvé désactivé. @Spacefox a joué au fossoyeur en retrouvant une plainte sur un sujet du forum, datant d’avril 2018, mais pas de levée de bouclier majeure.

Certaines personnes pourraient avoir encore le cookie en question quelques années après et donc utiliser les anciens smileys malgré la disparition de l’option de profil. Cependant, cela tiendrait du miracle sur une durée si longue.


  1. Cela en vaut probablement la peine, pour des raisons similaires à celle exposées dans le précédent billet de la série.

Laisser le poids du passé derrière soi

Encore une fois, pourquoi changer quelque chose qui ne pose pas de problème ?

Je vois les avantages suivants à retirer cette fonctionnalité :

  • Améliorer la compréhensibilité générale du code. La fonctionnalité est tentaculaire, avec du code réparti dans de nombreux fichiers. Si on enlève tout ça, tout le code affecté par la fonctionnalité est simplifié. On peut rajouter des fonctionnalités sans se prendre la tête excessivement. C’est mieux notamment pour les nouveaux contributeurs.
  • Faciliter la maintenance du code. Un code facile à comprendre est aussi plus facile à faire évoluer. Dans le cas présent, cela simplifie sensiblement le logout (on pourrait passer à la fonctionnalité incluse avec Django) et aussi le login (qui est un bout de code biscornu chez nous et gagnerait à être simplifié).
  • Éviter de traîner du code mort. L’option étant désactivée depuis des années, elle pourrait être cassée sans qu’on s’en rende compte. Le code mort (i.e. jamais exécuté) est une source de problèmes potentiels dans le futur. Le risque n’est pas majeur, mais dans certains cas, cela peut être une vraie bombe à retardement.

Pour les curieux, voilà la PR qui supprime la fonctionnalité en question : PR #6268.


Voilà, de la poussière en moins sous le tapis ! La leçon à tirer de ça est probablement qu’il faut éviter de complexifier le code quand ça n’en vaut pas la chandelle ; il existe en effet d’autres moyens techniques pour les irréductibles de conserver les anciens smileys, avec par exemple une extension de navigateur.

À bientôt, je l’espère, pour parler d’une autre vieillerie découverte dans le code de Zeste de Savoir et du coup de ménage associé !

Liens utiles

2 commentaires

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