Qu’est-ce que Github ?
Github : un supermarché de logiciels open source
Derrière ce nom quelque peu énigmatique se cache un service web d’hébergement et de gestion de développement de logiciels qui existe depuis 2008 et appartient depuis quelques années à Microsoft.
Pour les développeurs du monde entier, Github est aujourd’hui une ressource de référence pour déposer son code, mais aussi récupérer des programmes et codes à partir desquels il est possible de construire d’autres programmes et outils. Car tout ce qui est déposé sur Github et, c’est là ce qui est le plus intéressant, rentre dans la catégorie des « logiciels libres » et est donc librement réutilisable.
Concrètement, Github fonctionne comme un supermarché en libre service où il n’est pas nécessaire de payer à la sortie.
Github n’est pas la seule plateforme à proposer ce type de services. On pourra également citer Gitlab, Bitbucket ou encore SourceForge.net. L’été dernier, la Chine a également annoncé le lancement d’une plateforme chinoise appelée Gitee pour contrer la trop grosse dépendance des développeurs chinois face à un outil américain. Malgré ces différentes initiatives, Github reste le leader incontesté du secteur.
Que trouve-t-on sur Github ?
La plateforme renferme essentiellement du code et des programmes, mais pas que…
Si l’usage premier de Github est le dépôt de codes et programmes informatiques, on constate que la plateforme renferme également d’autres contenus qui peuvent être intéressants.
Certaines personnes y publient notamment des listes de ressources thématiques.
Par exemple, au cours de nos tests, nous avons pu trouver une liste des flux RSS de la presse française, des listes de lecteurs RSS, etc.
Quel usage pour les professionnels de l’information ?
L’usage que peuvent en faire les professionnels de l’information n’est évidemment pas le même que celui des développeurs et informaticiens.
Il n’est pas question ici de développer soi-même des programmes informatiques et outils (quoique ce puisse être une compétence à creuser pour les professionnels de l’information).
L’usage premier est de repérer des programmes déjà opérationnels qui pourraient être utilisés dans un contexte de veille et de recherche d’information. Il pourra par exemple s’agir de repérer des outils de surveillance de pages déposés sur Github, des outils de création de flux RSS pour des pages qui n’en ont pas, etc.
Et comme nous avons pu le mentionner précédemment, il y a aussi des personnes qui détournent l’usage premier de Github pour publier des listes de ressources sur un sujet ou thématique. On pourra alors utiliser Github dans une perspective de sourcing. Cet usage restera limité pour la simple et bonne raison qu’il y a beaucoup moins de ressources thématiques que de programmes et codes sur la plateforme.
Comment repérer et utiliser des outils pour la veille sur Github ?
Comment faire, donc, pour repérer les ressources et outils intéressants et comment les utiliser pour sa veille et la recherche d’information ?
Pour illustrer cette méthodologie, nous partirons d’un exemple concret où nous chercherons à identifier des outils utiles pour la veille : outils de surveillance de pages, outils liés au RSS, outils liés à l’OSINT, etc.
1 - Rechercher dans Github en tirant parti des nombreuses fonctionnalités de recherche proposées
On commencera bien évidemment par interroger directement le moteur disponible dans Github pour essayer de repérer des outils et ressources utiles pour la veille.
Rechercher via une requête booléenne
On pourra par exemple entrer la requête booléenne suivante dans le moteur présent sur la page d’accueil de Github :
veille OR RSS OR OSINT OR webmonitoring OR “Web monitoring” OR “competitive intelligence”
Attention, Github n’accepte pas plus de 5 opérateurs booléens (AND, OR ou NOT). Si votre requête est plus longue, il faudra la diviser en plusieurs requêtes distinctes.
Par défaut, Github affichera les « repositories » répondant à notre requête, ce qui permet donc d’identifier directement des outils et programmes utilisant nos mots-clés dans leur description (Cf. Figure 1. Résultats de recherche sur Github)
Figure 1. Résultats de recherche sur Github
Dans la colonne de gauche, on peut également rechercher sur d’autres types de contenus (issues, discussions, packages, etc.) qui seront pour la plupart peu utiles par rapport à ce que nous recherchons. Il s’agit en effet de discussions et d’éléments très techniques qui s’adressent plutôt aux développeurs et n’ont pas besoin d’être consultés quand on souhaite juste utiliser un outil.
Rechercher par type de contenu : tags, hashtags et topics
En plus de la recherche sur les « repositories » qui est centrale, nous avons repéré deux types de contenus qui mériteront d’être explorés d’après nos tests :
- Topics qui permet de visualiser tous les « repositories » qui ont été tagués avec un sujet (#osint-tool, #RSS, # RSS-reader, etc.). Les développeurs peuvent en effet associer des tags à leurs projets. Une recherche sur le terme OSINT dans les topics permettra de repérer tous les tags et hashtags utilisant le terme OSINT comme #osint, #osint-tool, #osint-resources, #instagram-osint, etc. En cliquant sur un hashtag, on pourra explorer l’ensemble des projets qui sont qualifiés avec ce hashtag et repérer ainsi des outils et des contenus (généralement des listes d’outils et de ressources) pertinents.
- Users qui permet de repérer des utilisateurs de Github qui pourraient avoir mentionné nos mots-clés dans leur profil et qui pourraient donc proposer des outils intéressants en lien avec notre thématique.
Par défaut, les résultats sont classés par pertinence, mais on peut également choisir les plus récents, les plus populaires, etc.
Rechercher via le moteur de recherche avancé
Github propose également un moteur de recherche avancé qui propose de nombreuses fonctionnalités de recherche et filtres :
- Recherche sur les projets de certains utilisateurs ;
- Recherche sur certains repositories uniquement ;
- Filtre par date de création ;
- Filtre par langue ;
- Filtre par popularité (nombre d’étoiles) ;
- Filtre par nombre de forks: un fork est un nouveau programme créé à partir du code source d’un logiciel existant. Le nombre de forks correspond donc au nombre de fois où le programme a été copié, repris et utilisé par d’autres, ce qui peut être signe de popularité ;
- Filtre par taille de repositories en Kb ;
- Filtre par langage de programmation ;
- Exclusion ou inclusion des forks ;
- Recherche d’utilisateurs venant d’une location précise, ayant au minimum x followers, au minimum x repositories, travaillant dans une langue précise, etc.
Même si, en règle générale, nous ne recommandons pas l’utilisation des moteurs de recherche avancée qui sont en définitive bien moins avancés que les moteurs de recherche simples, ici, il peut être intéressant de commencer avec le moteur de recherche avancée le temps de se familiariser avec les spécificités de Github.
Tirer parti des opérateurs spéciaux
Une fois plus à l’aise avec la plateforme, on pourra utiliser les opérateurs de recherche directement dans le moteur de recherche simple. Les opérateurs disponibles sont extrêmement nombreux, mais la plupart n’ont pas un intérêt majeur quand on cherche juste à identifier des petits outils et programmes sur une thématique donnée.
On retiendra donc les opérateurs suivants :
- On peut utiliser les opérateurs booléens classiques : AND (par défaut), OR et NOT
- Stars:>100 pour repérer les « repositories » ayant plus de 100 étoiles et qui sont donc populaires ;
- User: qui permet de retrouver tous les repositories associés à un utilisateur ;
- Location: pour retrouver des utilisateurs basés dans une ville ou pays en particulier ;
- Fork:true pour rechercher sur les repositories, mais aussi sur les forks ;
- Fork:only pour rechercher uniquement sur des forks ;
- Followers:100..200 pour rechercher des utilisateurs qui ont entre 100 et 200 followers ;
- Repos:>10 pour rechercher des utilisateurs qui ont plus de 10 « repositories » sur Github.
Ces opérateurs seront surtout utiles quand le nombre de résultats est trop important. Cela va permettre de filtrer les résultats pour limiter aux outils et programmes les plus populaires, aux utilisateurs les plus populaires, les plus prolifiques, les plus proches de soi géographiquement, etc.
Dans le cas de notre recherche, on arrive à identifier de nombreux outils a priori pertinents en utilisant le moteur interne de Github.
Github propose une aide très détaillée concernant la recherche. Nous vous conseillons de la consulter en cas de besoin : https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-discussions.
Quelques spécificités et limites à connaître pour rechercher sur Github
Attention, lorsqu’on lance une recherche depuis la page d’accueil de Github, on recherche par défaut sur l’ensemble des contenus présents dans Github.
Par contre, lorsque l’on se trouve sur la page d’un projet et qu’on lance une recherche dans le moteur en haut de la page, Github recherche par défaut uniquement dans ce projet précis.
Il faut bien penser à sélectionner « all github » pour rechercher à nouveau sur l’ensemble de Github.
Autre élément à garder en tête, Github ne pratique pas la recherche exacte. Ainsi si vous recherchez le terme translate, il retrouvera des résultats contenants translated, translators, translation, etc.
Et comme nous l’avons mentionné plus haut, Github n’autorise pas l’utilisation de plus de 5 opérateurs booléens.
2 - Rechercher dans Github en passant par Google
On peut également rechercher sur Github en passant par Google et en utilisant l’opérateur site:, ce qui donnerait site:https://github.com osint par exemple.
Mais attention, certains experts ont récemment repéré qu’on avait moins de résultats issus de Github dans Google que par le passé. Et le problème viendrait de Github et non de Google. Dans son fichier robot.txt, Github aurait en effet interdit le crawl de certains de ses contenus.
D’après nos tests, passer par Google n’est pas inintéressant et permet de faire émerger quelques résultats complémentaires, mais on ne saurait se limiter à cette méthode.
3 - Des moteurs pour interroger Github
Il existe également quelques moteurs spécialisés sur Github.
On pensera par exemple à :
- Git Relevant (https://gitrelevant.netlify.app/) ;
- Un moteur Google CSE (https://cse.google.com/cse?cx=009462381166450434430:kwwjwj9bliu#gsc.tab=0), spécialisé sur la recherche dans les bios des utilisateurs de Github ;
- Ou encore app (https://grep.app).
On est néanmoins sceptique quant à l’intérêt de ces quelques outils qui n’ont pas de réelle valeur ajoutée par rapport au moteur interne de Github qui est en soi déjà performant.
4 - Comment utiliser les forks pour trouver des outils intéressants ?
Comme nous le mentionnions précédemment, Github utilise un système qu’il appelle « fork » (embranchement). Chaque utilisateur peut « forker » un projet présent sur Github, c’est-à-dire qu’il le duplique et peut ensuite le modifier et améliorer comme il le souhaite sans avoir de comptes à rendre au créateur initial.
Ce principe de fonctionnement est très important à comprendre et il faudra bien l’avoir à l’esprit quand on recherche des outils de veille ou de recherche sur Github. À côté d’un outil/projet initial, peuvent co-exister une multitude de petits outils légèrement différents et le projet « forké » peut même être plus performant et intéressant que le projet initial.
Pour repérer les « forks », on pourra utiliser la méthodologie suivante :
Quand on a identifié un outil intéressant, on pourra cliquer sur le nombre de projets « forkés » en haut à droite de l’écran.
Par exemple : Pour l’outil RSS bridge qui permet de créer des flux RSS sur des pages qui n’en ont pas, Github recense pas moins de 690 projets « forkés » issus du projet d’origine.
On pourra ensuite explorer les comptes des personnes ayant « forké » le projet et ainsi repérer d’autres outils du même genre.
Mais la difficulté consiste à évaluer quels « forks » peuvent réellement avoir un intérêt et lesquels ne sont qu’une simple copie du projet initial.
Dans son billet de blog, Comment trouver les meilleurs forks d’un projet open source ?, le blogueur Korben recommande l’utilisation d’un outil appelé Useful Forks (https://useful-forks.github.io/) qui permet de mettre en évidence les « forks » les plus intéressants.
Le fonctionnement est simple : on entre l’URL du projet original sur le Github et l’outil propose alors une liste de « forks » classés par nombre d’étoiles, date de mise à jour, nombre de sous-forks, etc.
5 - Mettre Github en veille pour repérer de futures ressources et outils
Même s’il est aujourd’hui possible de repérer un certain nombre d’outils et ressources intéressantes sur Github, il faut aussi pouvoir être capable d’en repérer d’autres à l’avenir.
Malheureusement, Github n’est pas vraiment conçu pour faire de la veille.
Il existe quelques flux RSS, mais ils sont surtout faits pour être tenus au courant de l’avancée et changements de projets existants.
Le modèle de ces flux RSS est le suivant :
- https://github.com/{{username}}/{{repository}}/releases.atom
- https://github.com/{{username}}/{{repository}}/tags.atom
Nous n’avons pas trouvé de solution interne à Github pour surveiller l’apparition de nouveaux outils avec un tag précis.
À l’heure actuelle, les seules solutions pour faire de la veille sur Github (gratuitement ou avec un petit budget) sont donc les suivantes :
- Créer un flux RSS sur un tag en utilisant un outil de création de flux RSS comme Feed43, RSS Bridge, etc. ou encore la fonctionnalité de création de flux intégrée dans Inoreader;
- Utiliser un outil de surveillance de pages web comme Visual Ping, Versionista, etc. (voir notre article « Les outils de surveillance de pages gratuits et freemiums au banc d’essai » - NETSOURCES n°153 – juillet/août 2021);
- Créer des alertes Google en utilisant l’opérateur site: et en ayant conscience que ce ne sera pas exhaustif ;
- Relancer ponctuellement une recherche en limitant aux résultats créés après telle date pour repérer de nouveaux projets.
Github propose un système d’alertes mails, mais l’utilisateur n’a en réalité pas la main sur ce qu’il reçoit. L’outil envoie à fréquence définie par l’utilisateur des recommandations de projets et ressources susceptibles d’intéresser l’internaute et basées sur ces intérêts. Autant dire que cela a peu de chance d’être exhaustif.
Le plus dur n’est pas d’identifier les outils, mais de les utiliser
Repérer des outils et programmes a priori utiles pour la veille et la recherche d’information sur Github n’est finalement pas si difficile. Mais cela se corse nettement quand il s’agit d’utiliser et même d’installer soi-même les outils identifiés.
Le niveau de difficulté varie selon les outils et dépend de ce qui est mis à disposition par le créateur de l’outil et les autres utilisateurs :
- Il y a tout d’abord les outils qui proposent directement sur Github un lien vers la version en ligne/hébergée de l’outil. Dans ce cas, c’est très simple, il suffit de se rendre à l’adresse indiquée et d’utiliser immédiatement l’outil.
- Il y a aussi des outils qui ne proposent pas de version en ligne, mais qui listent sur Github des versions en ligne de l’outil proposées par des internautes qui ont pris le temps d’installer l’outil sur un serveur et de le mettre à disposition de tous. Là encore, rien de compliqué si ce n’est que cette liste de liens est parfois bien cachée dans Github. Il faudra bien explorer les différentes rubriques d’un « repository » et notamment le wiki (Cf. Figure 2. Instances publiques de RSS Bridge).
- Autre niveau de difficulté : sur Github, il n’est mentionné nulle part qu’il existe des instances en ligne de l’outil, c’est-à-dire des copies/versions en ligne. Et pourtant, il existe bien des internautes qui ont installé l’outil sur un serveur et le mettent gratuitement à disposition de tous. Sur ce sujet, on conseillera la lecture d’un billet de blog de Christophe Deschamps de 2018 intitulé « Trouver facilement de nouvelles instances de RSS-Bridge ». Même si on peut juste entrer RSS Bridge dans Google, il conseille d’entrer la requête suivante inurl:bridge intext:atom intext:mrss -site:github.com, mais aussi de relancer la requête sur les résultats omis pour réussir à identifier plus d’instances de l’outil. On pourra adopter une démarche similaire pour d’autres outils présents sur Github.
Enfin, il y a les outils pour lesquels on ne trouve pas de version en ligne ou qu’on ne souhaite pas utiliser en ligne pour des questions de confidentialité et qu’il va falloir installer soi-même sur un serveur. Et là, il faut avoir le cœur bien accroché et avoir beaucoup de temps surtout quand on n’a aucune connaissance en développement web ou programmation.
Figure 2. Instances publiques de RSS Bridge
TEST : Notre tentative d’installation d’un outil de surveillance de pages depuis Github
Lors de la rédaction de cet article, nous avons tenté de faire fonctionner un des outils repérés, en l’occurrence un outil de surveillance de pages appelé Klaxon. Malheureusement, cela s’est soldé par un échec…
Avec plus de temps et des visionnages de tutoriels en ligne, il aurait sûrement été possible de réussir à faire fonctionner cet outil, mais cela illustre bien le fait qu’installer des outils disponibles sur Github demande indéniablement du temps, de la patience et l’acquisition de quelques compétences.
Nous avons choisi ici de relater notre expérience pour mettre en évidence les difficultés rencontrées.
On reconnaîtra que certains créateurs de ces outils font un véritable effort pour essayer d’expliquer le plus clairement possible et de la manière la plus didactique possible comment faire tourner ces outils et les utiliser. Mais il n’empêche que pour des débutants, cela reste difficilement compréhensible et, bien souvent, à chaque nouvelle étape apparaît un nouveau problème. Il faut donc avoir du temps, beaucoup de temps devant soi ou réussir à avoir de l’aide du côté du service informatique…
En plus, chaque outil propose une méthode différente d’installation : tous les outils ne sont pas écrits avec le même langage de programmation (même si c’est Python qui semble être souvent plébiscité), dans certains cas, il faut réussir à faire tourner un script, dans d’autres cas à installer un bookmarklet ou encore installer un outil et des packages sur un serveur…
Quand bien même on aurait réussi à comprendre comment installer un outil, on ne peut donc pas en dégager une méthode universelle et il faut pratiquement se plonger dans une nouvelle démarche à chaque installation d’un nouvel outil.
Beaucoup semblent néanmoins conseiller de passer par des services en ligne comme Heroku et Docker (qui sont revenus souvent lors de nos recherches et nos tests) qui se définissent comme des PaaS Cloud, des plateformes en tant que service qui permettent de déployer « facilement » des applications sur le cloud.
Lors de nos tests, nous avons également pu constater que les instructions ne correspondent pas toujours exactement à la réalité du terrain.
En effet, quand on est débutant, il est pratiquement impossible d’improviser pour contourner un problème. On est obligé de s’en tenir aux instructions à la virgule près.
À titre d’exemple, lorsque nous avons tenté d’installer et d’utiliser Klaxon, nous avons minutieusement suivi les instructions détaillées dans Github. Il fallait donc commencer par créer un compte sur Heroku et ensuite déployer Klaxon sur la plateforme.
Rapidement, nous avons été confrontés à un premier problème suivi d’un premier message d’erreur. Un des add-on associé à l’outil ne pouvait fonctionner que si l’on entrait un numéro de carte bleue (qui ne serait débité que si on utilisait un gros volume de surveillances).
Une fois le problème réglé, nous avons pu continuer. Une fois l’outil installé : nouveau problème. Le logiciel d’emailing utilisé en arrière-plan pour envoyer les alertes (Send Grid), bloque automatiquement les nouveaux comptes. Il faut donc réussir à se faire certifier. Or, sans l’envoi d’email, impossible de recevoir le mail d’activation de Klaxon…
Aucune des indications proposées par la page Github de Klaxon ne fonctionnait et bon nombre d’internautes sur Github ou sur des forums spécialisés indiquaient n’avoir jamais réussi à faire certifier leur compte, sans compter que le service support ne répondait jamais.
Finalement, nous nous sommes arrêtés là dans l’expérience. Nous avons regardé les instructions proposées par d’autres outils de surveillance de pages sur Github et cela ne semblait malheureusement pas beaucoup plus facile…
Tour d’horizon des outils utiles pour la recherche et la veille présents sur Github
Nous avons identifié un certain nombre d’outils utiles pour la veille sur Github et nous vous proposons donc ici un panorama des principaux outils.
Nous avons séparé les outils repérés en plusieurs catégories :
- Ceux qui proposent des services autour du RSS et vont permettre de faire de la veille ou optimiser sa veille ;
- Ceux qui font de la surveillance de pages web.
Les outils Github associés au RSS
- RSS bridge (https://github.com/RSS-Bridge/rss-bridge) pour créer des flux RSS sur des pages qui n’en ont pas – propose une version en ligne à l’adresse : suumitsu.eu;
- RSS Proxy (https://github.com/damoeb/rss-proxy/) qui permet de créer un flux RSS sur une page qui n’en a pas – il existe une version en ligne à l’adresse suivante : https://rssproxy-v1.migor.org/ ;
- Feed2imap-Go (https://github.com/Necoro/feed2imap-go), un outil qui permet de convertir des flux RSS en emails ;
- RSS Scraper (https://github.com/fernandomauri/RSS-Scraper), un outil qui permet d’extraire le contenu d’un flux RSS et de le récupérer dans un fichier texte ;
- GReader (https://github.com/noinnion/greader), un lecteur de flux RSS pour Android – il est également possible de télécharger directement l’app depuis Google Play (https://noinnion.com/greader/) ;
- Bibliogram, un outil pour créer des flux RSS depuis un compte Instagram (https://github.com/cloudrac3r/bibliogram) – il existe une version en ligne à l’adresse suivante https://bibliogram.art/ ;
- Youtube Subscriptions to RSS feed (https://gist.github.com/jeb5/da22862e469dea21e873acabb562f638), script ou bookmarklet qui permet de transformer ses abonnements YouTube ;
- Feeds (https://github.com/felfele/feeds), un lecteur RSS pour mobile ;
- Netnewswire (https://github.com/Ranchero-Software/NetNewsWire) un lecteur de flux RSS– il existe aussi une version directement téléchargeable à l’adresse https://netnewswire.com/ ;
- RSS Guard (https://github.com/martinrotter/rssguard), un lecteur de flux RSS basique ;
- Vienna RSS (https://github.com/ViennaRSS/vienna-rss), un lecteur RSS pour Mac ;
- RSS hub (https://github.com/DIYgod/RSSHub) pour créer des flux RSS.
Outils de surveillance de pages
Nous avons également identifié quelques outils de surveillance de pages web comme :
- Klaxon (https://github.com/themarshallproject/klaxon), un outil qui permet d’être alerté de changements sur une page et conçu à l’origine pour un public de journalistes ;
- Diff Engine (https://github.com/DocNow/diffengine), un outil qui permet d’être alerté des changements dans un flux RSS ;
- Website change monitor (https://github.com/JuanmaMenendez/website-change-monitor), qui permet de surveiller un site et être alerté par mail et sur Slack lorsqu’il y a un changement ;
- io (https://github.com/dgtlmoon/changedetection.io), qui se définit comme une alternative open source aux outils comme Visual Ping, Versionista, etc. (voir notre article « Les outils de surveillance de pages gratuits et freemiums au banc d’essai » - NETSOURCES n°153 – juillet/août 2021) ;
- Website Changes (https://github.com/schollz/websitechanges) pour être alerté par email de changements sur une page ;
- URL Watch (https://github.com/thp/urlwatch), un autre outil pour être alerté par email de changements sur une page.
Faut-il vraiment investir du temps dans Github ?
La grande force de Github pour le veilleur, c’est la possibilité de trouver des outils gratuits, ce qui n’est pas si courant de nos jours. Quand on dispose d’un budget inexistant pour la veille, Github est une ressource à explorer absolument. Mais il faut être conscient que réussir à l’utiliser pleinement va demander un temps important.
Pour les veilleurs qui disposent tout de même d’un petit budget, Github s’avère intéressant pour les outils liés à la veille et la recherche qui sont proposés en ligne ou pour lesquels on peut trouver des instances en ligne.
Par contre, pour les outils qu’il faut installer soi-même, il n’est pas certain que le jeu en vaille la chandelle. Nous n’avons pas trouvé sur Github d’outils pour la veille qui proposaient des fonctionnalités que l’on ne retrouve pas sur les outils de veille freemiums ou payants.