URL: https://linuxfr.org/users/julien_jorge/journaux/comment-la-rubrique-liens-est-arrivee Title: Comment la rubrique « liens » est arrivée Authors: Julien Jorge Date: 2018年03月22日T13:47:24+01:00 License: CC By-SA Tags: dlfp et fonctionnalité_dlfp Score: 57 '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](https://linuxfr.org/suivi/une-categorie-bookmark). 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](https://linuxfr.org/users/crev) faisait fut un temps ([exemple](https://linuxfr.org/users/crev/journaux/de-tout-de-rien-des-bookmarks-du-bla-bla-3f63df7a-c627-4cf6-a338-c5e9ceb462eb)). 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](https://github.com/linuxfrorg/linuxfr.org). 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](https://github.com/rvm/ubuntu_rvm)). 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 !)

AltStyle によって変換されたページ (->オリジナル) /