Comment faire pour partager des liens avec ses collègues, et tant qu'à faire avec le monde entier ?
Chez Kapt, une grande partie de notre travail c'est écrire du code qui rend la vie de nos clients plus facile (automatisation de tâches tels des calculs compliqués, permettre d'ajouter du contenu sur un site sans casser le rendu, afficher plein de types de contenus différents sur des sites simplement, ...).
Et toujours chez Kapt, une petite partie de notre travail, c'est de trouver des modules, exécutables, et autres morceaux de code compilés par d'autre qui nous rendent notre vie plus facile.
Plus facile comment ?
Nous construisons des modules hautement complexes, et parfois il nous arrive de nous dire que réinventer la roue n'est pas forcément l'option la plus pertinente à notre disposition. On utilise alors ce qu'on appelle dans notre jargon très technique des "machins tout faits", qui ont soit déjà implémenté une roue à notre place (plus qu'à la faire rouler), soit modifié des roues déjà existantes et offrent des options de configurations bien pratiques pour nous, les développeurs. Il va de soi qu'on parle ici de roues métaphoriques ; si vous êtes tombé sur cet article alors que vous cherchiez une roue, alors nous vous conseillons de vous rapprocher de votre garagiste habituel (et prévenez-nous pour qu'on fasse quelque chose, il doit y avoir un problème avec le référencement de l'article).
Cependant, si les roues métaphoriques c'est plutôt votre truc, alors vous pouvez continuer à lire ; vous risquez de découvrir encore une ou deux métaphores dans cet article.
On peut avoir des exemples de "machins tout faits" ?
Bien sûr, mais je vais vous demander de vous accrocher à votre siège (si vous êtes assis), parce qu'on va rentrer dans la technique.
Prenons un site internet avec du contenu spécifique de chez spécifique (même pas de CMS, rien), avec des utilisateurs. Mettons que le webmaster du site (la personne qui administre le site, notre client) nous indique vouloir restreindre une partie de son site à un certain nombre d'utilisateurs.
"Bien entendu" qu'on répondrait au webmaster, "c'est notre métier que vous nous demandez de faire, et nous serons ravis de vous aider du mieux que nous le pouvons".
Le webmaster, tout content, nous fournit une liste de pages du site à restreindre, nous estimons le temps que nous allons passer sur la tâche, signons un papier virtuel (attention, ceci n'est pas une métaphore, la signature électronique est une réalité), et nous mettons au travail.
Oui mais quel travail ?
Ce qu'on veut concrètement, c'est qu'à aucun moment le moteur de Django (le Framework "piles incluses" dans la langue de Joseph Caillaux) n'expose du contenu issu de la base de données à un visiteur du site qui n'en a pas le droit.
On pourrait créer un "bout de code™℠®©℗🄪Ⓤ" qui vérifie qu'un utilisateur est dans une liste d'utilisateurs utilisés, qu'une url est dans une liste d'urls concernées par cette restriction, et lancer ce "bout de code™℠®©℗🄪Ⓤ" sur chacune des vues du site. Ainsi, si l'url de la vue X est dans la liste, et que l'utilisateur Y n'est pas dans l'autre liste, notre "bout de code™℠®©℗🄪Ⓤ" renverrait une jolie page d'erreur au style fleuri et agrémenté d'un texte qui pourrait être résumé en quelque chose du style "403 - Accès interdit" (oui la programmation c'est pas que de la poésie).
On mettrait à jour le site de notre webmaster qui, tout content, explorerait ses pages restreintes, lorsqu'il remarquerait tout d'un coup une coquille dans l'url. Ni une ni deux, il corrigerait son url pour faire disparaître l'horrible erreur qui lui pique les yeux, puis il nous rappellerait furibond au bout de quelques minutes en constatant que son contenu restreint n'est somme toute pas restreint du tout, et est bien accessible au monde entier.
L'exemple que je viens de vous livrer ici — bien que simpliste au possible, représente plutôt bien l'intérêt de trouver de bons "machins tout faits" sur internet, et surtout de s'en rappeler le jour où on en a besoin.
En effet, le petit bout de code retenu ici possède plusieurs défauts, et d'autres individus sont bien évidemment déjà tombés sur ce même genre de défauts (parce qu'on est rarement la première personne à faire quoi que ce soit).
Et un petit nombre de ces personnes ont documenté leurs (més)aventures (sur des blogs !!!).
Et un plus petit nombre encore a décidé que trop c'était trop, que quand même il devait forcément y avoir quelque chose de disponible pour permettre aux petits programmeurs de ne pas perdre de temps avec ces problèmes, et qu'après avoir constaté qu'en fait non, rien n'existait, a décidé de remédier à la chose en publiant sur internet un "machin tout fait" qui gère exactement ce cas précis.
Je pense judicieux de préciser ici qu'on peut aussi appeler les "machins tout faits" des "librairies", mais c'est plus rigolo d'écrire "machins tout faits". Et quand on parle d'une librairie spécifique à Django, on parle de "package" (paquet). J'aurais pu écrire "paquet de trucs" tiens.
django-url-group-permissions is a django package for managing URL-based permissions through user groups with HTTP method support
A Django package that provides a flexible and efficient way to manage URL-based permissions through Django's user groups. This package allows you to control access to specific URLs based on user group membership and HTTP methods.
Quelqu'un sur internet s'est dit que le monde manquait cruellement d'un petit paquet qui permettrait justement de vérifier si un utilisateur a le droit d'accéder à une partie d'un site, et a donc comblé ce vide.
Ainsi, les développeurs de Kapt n'ont pas besoin de réinventer la roue, puisqu'une roue existe déjà, et est fournie gracieusement (c'est là toute la magie de l'open source ; on peut trouver des choses utiles et gratuites, et si on partage à notre tour des choses utiles
gratuitement, alors le cercle vertueux est cerclé, la boucle vertueuse est bouclée).
On aurait ainsi donc pu lire un peu le code du paquet (pour vérifier qu'il n'y a pas de grosse erreur dans le code du paquet parce que oui, les autres personnes ailleurs dans le monde font aussi des erreurs — on n'a pas le monopole des erreurs chez Kapt, et je trouve — pour être tout à fait honnête et même carrément objectif — qu'on fait assez peu d'erreurs par rapport à ce qu'on pourrait), puis installer ce paquet sur le site du webmaster, le configurer, et mettre en ligne la fonctionnalité.
Ok je comprends pourquoi c'est intéressant maintenant, merci et au revoir
Pas si vite cher lecteur ! On vient à peine de finir l'introduction de cet article qui se révèle être bien plus grand que je me l'étais imaginé au moment d'ouvrir mon petit éditeur de texte (j'utilise nano ou même un programme graphique parce que j'ai encore un peu de mal à maîtriser le vol de papillons, par exemple en ce moment j'écris ces lignes dans Obsidian, avec un thème synthwave fluorescent et du comic sans ms partout).
On a donc démontré — enfin j'espère avoir réussi à démontrer — que ça vaut parfois le coup d'utiliser un machin tout fait que quelqu'un d'autres a créé. Ça nous permet de gagner du temps, ce quelqu'un d'autre a peut-être pensé à gérer plus de cas particuliers que nous, et a même peut-être pris le temps d'inclure des bouts de code spécifiques nous permettant de personnaliser le machin tout fait sans devoir modifier son code.
Des machins tout faits on en voit des nouveaux tous les jours dans notre métier, on en découvre régulièrement d'autres qui existent depuis un certain temps, et d'autres gens sur internet font des articles de blog entiers sur un ou deux machins tout faits au moins tous les jours aussi. Ça fait un paquet de machins tout faits à découvrir et classer, et comme je l'ai déjà écrit un peu plus haut, une petite partie de notre travail est de trouver des morceaux de code qui rendent notre vie plus facile.
Le problème qui se pose donc tout à fait logiquement dorénavant est le suivant ; comment faire pour stocker une liste de machins tout faits qui peuvent nous être utiles, et comment faire pour les retrouver dans la liste ? Je pourrais également ajouter — et je suis en train de le faire à ce moment même — qu'il faut réussir à faire tout ça sans y passer trop de temps, pour éviter que la petite partie de notre travail se transforme en grande partie de notre travail (parce que concrètement même si ça peut nous faire économiser du temps plus tard grâce à la sauvegarde du savoir, ces actions de recherche/stockage/tri nous en font perdre maintenant).
Le salon "veille"
La plupart des boîtes d'informatique avec au moins quelques personnes utilisent un système de messagerie instantanée de groupe. Kapt ne fait pas exception à cette règle, et possède sa propre instance IRC Slack Discord RocketChat. Nous avons créé un salon intitulé "veille dev" dans ce fascinant espace-texte, et mes collègues ainsi que moi-même publions de nouveaux messages contenant un lien vers un machins tout faits de manière tout à fait régulière.
Problème réglé ? Pas vraiment.
En fait on répond à une partie de la question qu'on s'est posée un peu plus haut (la partie qui cause de comment qu'il faut faire pour stocker une liste de machins tout faits qui peuvent être utiles), mais pas à la seconde (comment retrouver ces machins). Et c'est la seconde qui nous fait gagner du temps au bout d'un moment, pas la première.
L'instance d'un clone obscur de Shaarli
Un de nos développeurs a eu un jour une idée saugrenue et similaire à ce que nous cherchons à faire avec les liens, parce qu'il en avait marre d'avoir beaucoup trop de raccourcis dans son navigateur.
Et ce développeur c'est moi (coucou :)). J'ai d'abord commencé par installer Shaarli (un petit service web à auto-héberger qui permet justement de stocker des liens, de les commenter, de les tagger taguer t'as gués de leur ajouter des tags, et de les retrouver simplement). Mon instance Shaarli a du vivre deux ou trois jours, il y avait plein de choses que je n'appréciais pas vraiment ou que je pensais pouvoir mieux faire (je n'ai pas gardé la liste alors je ne peux pas vous fournir l'ensemble de ces petites choses sous forme de liste empreinte de cocasseries), alors je l'ai remerciée. Étant moi-même développeur sur mon temps libre en plus d'être développeur sur mon temps pro, et disposant à l'époque d'un peu de temps libre (coincé entre la procrastination et la gestion plutôt chaotique d'un chien hyperactif), je me suis donc embarqué dans la construction d'un outil qui-ressemble-beaucoup-à-Shaarli-mais-que-c'est-pas-tout-à-fait-Shaarli-notamment-parce-que-c'est-écrit-en-Django-et-ya-deux-trois-autres-différences-structurelles.
Ainsi, share-links naquit-il un soir de motivation. Je l'ai déployé pour moi, et l'utilise toujours aujourd'hui pour stocker les liens intéressants que je trouve sur l'internet mondial en réseau (je viens de dépasser les 6000 liens stockés sur mon instance ya pas longtemps). Puis, de fil en aiguille, j'ai réussi à tellement importuner mes collègues en leur en parlant avec force hyperboles et suggérant qu'on avait absolument besoin d'un tel outil à la place de notre salon de "veille dev", qu'ils m'ont finalement permis d'accomplir ce petit rêve qu'était de déployer une seconde instance de share-links, ce coup ci pour stocker principalement des liens en rapport avec des machins tout faits qui pourraient nous être utiles à nous, les gens du pôle développement de notre petite entreprise.
Quels résultats aujourd'hui ?
Eh bien l'outil actuellement en ligne sur veille.kapt.mobi dispose actuellement de 775 liens, la majorité — mais pas tous — dédiés à des machins tout faits, et une petite partie consacrée à stocker des références diverses vers des pages et articles ayant un lien plus ou moins clair avec les activité de Kapt et le développement d'applications web avec Django en général. L'ajout de liens est facilité par un petit bookmarklet placé dans nos raccourcis, qui nous permet d'ajouter un lien à la plateforme en un clic.
Je (moi, l'auteur de cet article, de share-links, et de deux/trois autres trucs) l'utilise régulièrement pour stocker des liens, mais aussi pour y chercher du contenu qui pourrait nous être utile dans les situations extraordinaires que nous rencontrons régulièrement, et j'ai déjà vu certains de mes collègues y aller également quelques fois.
Merci d'avoir lu cet article, j'espère que grâce à lui vous comprendrez mieux le pourquoi du comment c'est important de faire des listes ordonnées et triées (pourquoi pas sur papier), et pourquoi pas d'y ajouter une barre de recherche (là sur papier c'est un poil plus compliqué).
Post Scriptum
Oui je sais que d'habitude le Post Scriptum est plutôt du genre à être un petit être discret qui se cache souvent en italique en bas des articles, mails et conversations épistolaires, mais ce P.S. là est plutôt du genre extraverti.
J'avais marqué dans mon TODO de cet article qu'il fallait que je dise que :
- Les liens c'est cool
- Le partage c'est cool (pourquoi se limiter aux collègues alors qu'on peut partager au Mont Dentier ?)
- Il faut trouver des images chouettes
- Faire un beau dessin pour la bannière de l'article
Cette section va donc s'employer à cocher ces dernières cases, afin que ce post puisse être relu par mes collègues adorés (désolé pour le pavé), puis rejoindre le troupeau des posts sur notre site et découvrir gaiement la vie de post de blog.
Pourquoi les liens c'est cool ?
Étant donné le nombre de mots de cet article jusqu'à présent (2256), j'ai décidé en commun accord avec moi-même de vous offrir un résumé d'un résumé de pourquoi les urls c'est super chouette quand même, et de vous l'offrir sous forme de liste :
- Un lien c'est comme une adresse dans la vraie vie véritable, et le contenu qu'on trouve en général au bout d'un lien est un petit bout de savoir. Un lien est donc directement relié à du savoir, et on aime bien collectionner du savoir (j'aurais pu faire une métaphore avec une bibliothèque accessible si on connaît son adresse, ç'aurait pu être plutôt pertinent ici). On peut donc s'amuser à collectionner du savoir en ligne simplement en gardant une trace des liens qui nous ont mené à ce savoir en ligne !
- Les liens contiennent de l'information : ça c'est un truc que les gens de moins de 20 ans ne peuvent pas connaître, mais un lien — quand il est bien formé permet à lui seul de renseigner le visiteur sur le contenu de la page, et même de permettre au visiteur de se déplacer sur le site sans même toucher au contenu du site, directement en modifiant l'url ! (Par exemple, si on visite https://www.kapt.mobi/blog/sobriete-permet-souveraineté/, alors on peut "remonter d'un niveau" simplement en retirant la dernière partie de l'url pour accéder au blog : https://www.kapt.mobi/blog/)
- Cool URIs don't change : Un article de Sir Tim Berners-Lee himself qui explique pourquoi les URI qui ne changent pas sont cool. Les liens qui ne changent pas sont chouettes notamment parce qu'on ne sait jamais qui possède un lien vers notre page, et que ces liens doivent donc perdurer pour continuer d'être joignables dans le temps. On peut également mettre en place une redirection si le lien doit absolument être modifié, comme ça les personnes qui utilisent encore l'ancien lien continuent d'arriver sur du contenu pertinent.
Pourquoi le partage c'est cool ?
Le facteur d'autobus représente le niveau de dangerosité que représente l'absence de partage d'informations et de compétences entre les membres d'une même structure. En gros, si l'activité de votre entreprise (ou structure) est fortement impactée si vous passez sous un bus un matin en vous rendant au boulot, alors le facteur d'autobus de votre entreprise (ou structure) est élevé.
Je pourrais également rajouter que seul on va vite, à plusieurs on va loin (et parfois vite aussi). Ou bien que "pour qu'un château de cartes s'écroule, il suffit d'en retirer une seule (Dominique Muller), mais encore "qu'aucun de nous n’est aussi intelligent que nous tous" (Ken Blanchard). Et je pourrais continuer comme ça longtemps.
Si autant de gens ont pu écrire des citations philosophiques qui finiront invariablement leurs petites vies de citations dans des "Petits calendriers perpétuels de 365 citations positives à partager avec ses collègues", c'est forcément qu'il y a une part de vérité derrière (enfin j'espère).
Le partage de connaissances et de compétences représente donc le pinacle, le summum de ce qu'on peut faire de bien dans une entreprise pour lui permettre de continuer à entrepriser en toute sérénité. Ce partage peut prendre plusieurs formes (espace de documentation interne, cahier d'onboarding, réunions régulières, canaux de conversation, journées de cohésion, [...]), et aujourd'hui je viens de vous parler d'une autre forme de partage ; le partage de liens de bouts d'internet, sur internet.
De plus, partager des informations gratuitement a une visée symbolique, cette action Ô combien rare dans notre société permet de signifier "Tenez, prenez ce savoir, j'ai mis du temps à l'emmagasiner, à l'organiser, à le stocker, et aujourd'hui je vous l'offre. Vous n'en aurez peut être pas besoin aujourd'hui (ni demain, ni en fait peut-être jamais), mais vous saurez que je vous ai partagé gracieusement la chose la plus précieuse sur internet ; de l'information de qualité".
Les anglais parlent de contenu "curated" (sélectionné ou trié, organisé de manière soignée), et aujourd'hui, trouver une bonne liste pertinente sur internet est devenu presque aussi difficile que de trouver la recette qu'on cherche sur la page de ladite recette sur un site de recettes.
Voilà donc pourquoi nous avons mis en place ce site de partage de liens issus de notre veille technologique ; ça nous est utile, ça peut être utile à d'autres, et ça ne nous coûte pas plus cher de partager au monde entier ce petit concentré de connaissances.
Le vrai mot de la fin véritable après c'est fini promis
J'ai (moi, Corentin) publié le code source de share-links avec une licence open source (j'aime bien partager), ce qui fait que Kapt peut tout à fait déployer une instance de ce petit logiciel web fantastique et génial (attention, je ne suis peut-être pas objectif).
Ainsi, si vous aussi vous souhaitez pouvoir centraliser vos trouvailles d'internet (que ce soient des liens vers des actualités, des documentations, des articles scientifiques, ...) sur une plateforme bourrée de features ✱ et évolutive (on peut développer un petit quelque chose si vous avez un besoin particulier, voire carrément vous fournir une instance avec une jolie interface graphique, parce que moi, Corentin, je ne suis pas un designer de métier ni de loisir), vous pouvez nous contacter et nous pourrons gérer le déploiement ainsi que la maintenance de votre propre instance !
Bravo pour avoir réussi l'exploit de terminer cette lecture alambiquée, et bonne journée !
✱ Liste des features non exaustive de share-links :
- recherche par filtres et textuelle
- multicomptes
- multilingue
- catégories et tags
- collections de liens
- auto-récupérer les titres, la langue et les favicons des pages enregistrées
- remplacement des liens morts automatique par des liens "web archive" si le site au bout du lien n'est plus en ligne
- flux RSS