Journal Comment la rubrique « liens » est arrivée

Posté par (page perso) . Licence CC by-sa.
54
22
mar.
2018

Sommaire

'Jour 'Nal,

Tu l'as maintenant remarqué, une nouvelle catégorie « Liens » fait son apparition sur le site. Comme j'en suis l'auteur je vais te l'expliquer un petit peu en reprenant la proposition que j'avais envoyée aux modérateurs du site puis te parler un peu de la méthode pour ajouter la fonctionnalité au site.

La rubrique Liens

Jusque là le site nous permettait de présenter des choses de manière formelle et collaborative (les dépêches) et de manière plus personnelle (les journaux). Mon sentiment est que ces derniers sont particulièrement bien reçus quand il s'agit de retour d'expérience, de tutoriel, ou d'expression d'opinion argumentés, mais on y trouve néanmoins régulièrement des journaux bookmark qui posent un lien légèrement enrobé et permettent de discuter du sujet du lien avec les autres utilisateurs. Ces journaux bookmark sont mieux accueillis maintenant qu'ils ne l'étaient auparavant mais sont loin d'être bien notés.

Je remarque aussi que lorsque je rédige un article ailleurs sur le web je me trouve à chaque fois face au même problème : j'aimerais l'exposer à la critique des lecteurs de LinuxFR mais l'effort pour le faire me semble rédhibitoire. D'une part parce qu'il y a peu d'antécédents de journaux concernant un contenu rédigé ailleurs par le même auteur et quand il y en a ils sont parfois maladroitement copiés-collés. D'autre part parce que je rédige souvent en anglais et que faire la traduction vers le français est hyper pénible.

Par exemple, j'ai rédigé un article technique sur Medium il y a quelques mois, en anglais. Ça m'a pris beaucoup de temps, je l'ai partagé sur Reddit, Hacker News, et d'autres sites anglophones et j'ai pu avoir des commentaires intéressants par ce biais (surtout sur Reddit en fait). Je pense que le sujet aurait intéressé les lecteurs de LinuxFR et j'aurais aimé avoir leurs commentaires mais traduire l'article en français est vraiment, vraiment, pénible. J'aurais pu faire un journal avec une brève description mais je trouve que les journaux qui disent « tiens j'ai écrit ça sur mon blog, viens voir » font un peu tâche parmi les autres contenus.

Du coup je me dis « tiens, ce qu'il manque à LinuxFR c'est un truc à la Reddit où les utilisateurs posent un lien pour ouvrir une discussion ! ». C'est d'ailleurs une demande du système de suivi. Avec la section liens on annonce la couleur dès le début, on dit au lecteur « voilà des contenus produits ailleurs qui peuvent t'intéresser ».

Au final il faut voir ça comme un Reddit ou un Hacker News où les utilisateurs du site peuvent partager simplement les liens vers des contenus qu'ils ont trouvé intéressants ailleurs ou vers leurs propres contenus pour lesquels ils souhaitent avoir des retours. Dans mes rêves les plus fous j'espère que cela pourrait entraîner la rédaction par les autres contributeurs de journaux plus détaillés reprenant les liens les plus intéressants, un peu à la manière de ceux que CrEv faisait fut un temps (exemple). Une belle opportunité pour toi, hypothétique lecteur sans contenu, de contribuer à ce site que tu consultes depuis de nombreuses années déjà ;)

Contribuer au code de LinuxFR.org

Le code source du site est disponible sur GitHub. Il est codé en Ruby. Ça tombe bien je suis développeur client c++ !

Heureusement le README du dépôt est très bien détaillé et j'ai pu assez rapidement lancer une instance sur ma machine. La principale difficulté ayant été d'installer la bonne version de RVM (j'ai finalement pris le ppa disponible pour Ubuntu). Une fois que l'environnement est configuré et que j'arrive au bout des étapes du README, ça fonctionne parfaitement.

Le plus difficile pour entrer dans un nouveau projet est de trouver une modif qui va rapidement avoir un impact dans l'application et à partir de laquelle on pourra dérouler les détails d'implémentation pour itérer vers la fonctionnalité voulue. Dans ce cas j'avais dans l'idée de faire les liens sur le modèle des journaux: ils appartiennent à un utilisateur, sont listés sur une page dédiée et peuvent êtres commentés et notés. Comme point d'entrée j'ai choisi d'ajouter un lien « Liens » entre « Journaux » et « Forums » en haut du site. C'est petit, ça devrait être facile.

J'ai sorti ce bon vieux grep -r Journaux . pour chercher où étaient ces liens. Dans les fichiers candidats on trouve app/views/layouts/_site.html.haml qui a l'air pertinent. Bien ! J'y ajoute mon lien, je relance le site, et hop ça s'affiche. Je clique dessus, ça pète. Bon, ça me fait mon point d'entrée.

Au passage je remarque que les journaux sont nommés « diaries » dans le code. Je cherche donc les fichiers en rapport avec ce bon vieux find . -name "diar*" qui me sort entre autres app/controllers/diaries_controller, app/models/diary.rb et app/views/diaries. Oh, du MVC! Parfait, je n'ai plus qu'à m'appuyer sur ces fichiers pour définir les « bookmarks » (links était déjà pris).

Le code est assez clair, c'est agréable. On trouve dans diary.rb des fonctions de contrôle d'accès (je garde) et de conversion en dépêche ou en post de forum (je jette). Il y a aussi une liste de propriétés que je peux ajuster pour mon cas, ainsi qu'une description du schéma de la table dans la base. Tiens, c'est un truc qu'il faut que j'ajoute aussi.

De retour avec grep, je trouve db/schema.rb qui décrit les tables. Et là je me fais avoir, j'ajoute la table des bookmarks directement dedans alors qu'il fallait en fait ajouter un script de migration dans db/migrate. D'ailleurs si j'avais lu les commentaires de db/schema.rb j'aurais pu voir que

# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.

Bon ça a fonctionné pendant le dev mais l'erreur à été relevée lors de la pull request au final. Mais pourquoi diable ce fichier est-il dans le dépôt s'il est généré automatiquement ?

Ensuite je crée un contrôleur pour les bookmarks sur la base de celui pour les diaries. Là encore il suffit quasiment de supprimer ce qui concerne le déplacement vers les forums ou la conversion vers les dépêches, après quoi le code est quasiment identique ; le terme « Journal » étant remplacés par « Lien ».

Enfin il ne reste plus qu'à gérer les vues. On voit dans app/views/diaries qu'il y a trois cas d'affichage : l'aperçu avant publication, la version publiée et le flux Atom. Après une longue boucle d'essai-erreur j'ai pu faire fonctionner la soumission, puis la lecture, puis le flux Atom.

Finalement ça a été assez rapide bien que j'ai travaillé dessus par à coups selon mon temps libre. J'ai commencé à coder pour le site le 12 mars et j'ai proposé la fonctionnalité sur la liste de modération le jour même, dès que j'ai pu avoir un début de fonctionnement, avant de me lancer à fond dessus. J'ai pu faire une première pull request le lendemain puis j'ai amélioré et corrigé le tout jusqu'au 18 mars en suivant les commentaires dans la pull request.

Globalement l'expérience était très agréable. Les participants sur la liste de modération ont été très réactifs et encourageants malgré l'inquiétude liée à la charge de modération supplémentaire. C'était aussi très plaisant de bricoler quelque chose avec des outils que je n'avais jamais utilisés.

Comme quoi Ruby est vraiment à la portée du premier imbécile venu contribuer au site à la portée de tous. Au delà du contenu il y a de nombreux sujets sur lesquels participer, notamment le code et la modération. (Oh oui tu peux te sentir visé hypothétique lecteur sans contributions depuis plus d'une décennie. Il serait temps de t'activer !)

  • # taille verticale ?

    Posté par . Évalué à 6.

    Je suis un peu dubitatif sur la taille verticale que prend un "lien" sur mon écran large. J'imagine qu'il ne doit pas être difficile de faire une organisation plus "en table", 4 liens à l'écran à la fois, c'est très peu.

    "La première sécurité est la liberté"

    • [^] # Re: taille verticale ?

      Posté par (page perso) . Évalué à 4.

      Ça me semble délicat de faire plus petit tout en restant dans le style du site, en gardant l'avatar, les tags et les divers liens, mais si quelqu'un veut tenter je veux bien voir ce que ça donne.

      Après l'affichage en table comme par exemple dans l'espace de rédaction ça me perturbe plus qu'autre chose pour un contenu chronologique. Je ne sais pas s'il faut lire les lignes avant les colonnes sans regarder les dates.

      • [^] # Re: taille verticale ?

        Posté par . Évalué à 5.

        L’avatar tu peux ne pas le mettre, ou encore en réduire la taille.

        Ce que propose Nicolas ça casserait le style du site, au niveau de l’homogénéité dans la structure des différentes rubriques, mais je pense aussi que ce serait bien de voir plus de liens (4 porte malheur selon les chinois superstitieux1 !). Un peu dans le style de reddit.com, encore plus compact même.

        Je ne sais pas s'il faut lire les lignes avant les colonnes sans regarder les dates.

        La plupart des tableaux sont en réalité des listes d’enregistrements (c’est le cas ici). Je dirais qu’on les lit ligne par ligne, non pas colonne par colonne ou je ne sais trop comment… (?!), il y a moyen de renforcer cette réalité en stylisant adéquatement, je pense.

        En plus, il ne va pas y avoir 36 colonnes (champs…), rapidement je dirais : Titre | Pseudo | Date | Discuter | + | - | Note, le lien lui même est sur le titre et les tags dans une info-bulle. Les quatre derniers champs font seulement un ou deux caractères (ya bien un caractère unicode pas trop exotique qui va bien pour le lien « discuter »…).

        En tous cas merci pour le travail. On verra si c’est utile et si ça a du succès dans l’avenir, si ça donne un truc intéressant, moi j’aime bien et le vois d’un bon œil. Yapuka… participer.


        1. Il faut toujours garder les meilleurs arguments pour la fin, alors voici une note de bas de page !
        • [^] # Re: taille verticale ?

          Posté par . Évalué à 5.

          Je propose de ne garder que la section "titre" qui devient cliquable. Je propose d'ajouter un "+" devant le lien pour dérouler le contenu actuel qui est situer en dessous.

          "La première sécurité est la liberté"

        • [^] # Re: taille verticale ?

          Posté par (page perso) . Évalué à 2.

          un truc "facile" serait de reprendre la présentation de la Rédaction.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: taille verticale ?

        Posté par . Évalué à 3.

        C'est peut-être aussi l'occasion de retravailler les avatars/noms d'utilisateurs partout sur le site, pour avoir quelque chose de plus "intégré" où les avatars ne flottent pas au milieu du texte.

  • # lien

    Posté par (page perso) . Évalué à 4.

    Merci pour la fonctionnalité !
    Pas évident de savoir où ça ira mais le meilleur moyen est encore de le tenter.

    Dans mes rêves les plus fous j'espère que cela pourrait entraîner la rédaction par les autres contributeurs de journaux plus détaillés reprenant les liens les plus intéressants, un peu à la manière de ceux que CrEv faisait fut un temps (exemple)

    \o/

    Bon c'est vrai, il faudrait aussi que je recommence à les faire. C'est mine de rien assez chronophage. Mais je dois pouvoir trouver des choses publier, genre pas mal de choses autour des containeurs, nomad, consul, terraform, Go, redux, méthodes, télétravail, etc.

    Manque plus que de trouver d'y allouer du temps.

  • # Bug

    Posté par (page perso) . Évalué à 7.

    Dans le flux RSS, les liens pointent vers https://linuxfr.org/liens … pas très pratique ;-)

    Un peu septique de la fonctionnalité, car j'aimais bien les journaux bookmarks. Mais on verra ce que ça donne avec le temps.

    • [^] # Re: Bug

      Posté par . Évalué à 2.

      Je plussoie. Ce serait bien mieux si le flux RSS reprenait directement les liens publiés.

      Un peu septique

      Il faut consulter.

      • [^] # Re: Bug

        Posté par . Évalué à 3.

        C'est corrigé apparemment…

  • # Fichier de base de donnée auto-généré

    Posté par . Évalué à 3.

    Bon ça a fonctionné pendant le dev mais l'erreur à été relevée lors de la pull request au final. Mais pourquoi diable ce fichier est-il dans le dépôt s'il est généré automatiquement ?

    Ce fichier présent dans le dépôt ne t'a-t-il pas permis de créer ta structure de base de donnée au premier démarrage en local ?
    S'il est présent dans le dépôt c'est peut-être justement pour pouvoir démarrer une nouvelle instance à partir de zéro.

    Yth.

  • # Sondage

    Posté par (page perso) . Évalué à 3.

    À ce sujet, pourquoi la catégorie sondage a disparu ? Elle existe toujours mais n'est plus présente dans le bandeau supérieur du site.

  • # Ruby

    Posté par (page perso) . Évalué à 3.

    Comme quoi Ruby est vraiment à la portée du premier imbécile venu

    Il est temps que j'essaye alors !

    La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

    • [^] # Re: Ruby

      Posté par . Évalué à 3.

      Ce journal a eu le mérite de répondre à la question que je me posais : qui faire encore du Ruby ??

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.