Ce vendredi, j’ai donnĂ© le cours (Git: a Hands-on Tutorial) Ă l’universitĂ© dans le cadre des formations RISE (service Recherche, Innovation, Support et Entreprises) et je suis plutĂŽt content de la maniĂšre dont ça s’est passĂ© par rapport Ă ma premiĂšre expĂ©rience en novembre.
Ce cours sur git, je le construis depuis longtemps. C’Ă©tait tout d’abord un (Ă©norme) mĂ©mo “powerpoint” de mes essais et erreurs en apprenant git. J’ai ensuite amĂ©liorĂ© ce mĂ©mo pour expliquer le systĂšme Ă mes collĂšgues lors de la transition SVN => git (21 mars 2020 - ça me paraĂźt si loin! je ne me souvenais pas que c’Ă©tait en plein Covid!). J’ai ensuite amĂ©liorĂ© la prĂ©sentation dans le cadre d’une “prestation de services” pour ArcelorMital oĂč il Ă©tait question d’installer une instance GitLab chez Open-Engineering pour gĂ©rer la refonte de leurs codes. Je l’ai ensuite simplifiĂ© lorsqu’on a imposĂ© l’utilisation de git pour le projet intĂ©grĂ© du 1er master physicien. Au dĂ©but de cette pĂ©riode, je faisais une dĂ©mo “live” de git avec mon collĂšgue qui jouait le rĂŽle d’un 2e dĂ©veloppeur.
J’ai Ă©tĂ© contactĂ© l’annĂ©e passĂ©e pour reprendre le cours des Formation Ă la carte pour les doctorants et le personnel de l’ULiĂšge. Jusqu’Ă ce moment, RISE payait un consultant externe pour donner cette formation. Avec moi, ça devenait gratuit. C’est comme ça que je me suis retrouvĂ© lĂ …
Je suis assez fier de donner cette formation parce qu’elle concrĂ©tise tous les efforts que j’ai faits au fil du temps pour gĂ©rer les codes et aider les chercheurs du dĂ©partement. C’Ă©tait un des rĂŽles de mon poste lorsque je suis devenu premier assistant en 2013. En tant que geek, j’aime bien “jouer” avec git et mon expertise est maintenant reconnue.
L’annĂ©e passĂ©e, j’avais adaptĂ© le contenu de la formation de l’ancien consultant pour rendre le discours plus focalisĂ© sur l’instance GitLab de l’universitĂ© et non Github. J’aurais aimĂ© aussi m’adresser Ă des personnes qui ne sont pas des programmeurs. Git peut en effet ĂȘtre utilisĂ© pour gĂ©rer n’importe quel projet qui utilise des fichiers texte, par exemple un article scientifique, une prĂ©sentation ou un site web. J’ai donc remplacĂ© directement le prĂ©requis “notions de programmation” demandĂ© pour accĂ©der Ă la formation par “utilisation d’un Ă©diteur de texte et de la ligne de commande”.
Je voulais aussi qu’il y ait une sorte d’effet “waw” en gĂ©rant et en construisant la prĂ©sentation du cours elle-mĂȘme par un pipeline GitLab! Pour ce faire, j’ai utilisĂ© l’outil le plus simple que j’ai trouvĂ©: Marp: Markdown Presentation Ecosystem, dans le but de sĂ©duire un maximum de personnes. Marp permet de convertir un simple fichier markdown en un slide-deck html ou pdf. Marp a beaucoup d’avantages sur d’autres systĂšmes du mĂȘme genre:
- tout tient dans un seul exécutable (
marp.exesous windows), - c’est multi-plateforme,
- c’est trĂšs facile Ă comprendre (simple fichier markdown oĂč il suffit de sĂ©parer chaque slide par
---), - il est possible de tout customiser via du HTML et CSS pour les utilisateurs avancés,
- le rendu est impeccable. Marp se prĂȘte bien Ă une dĂ©mo de l’intĂ©gration continue de GitLab: il suffit de gĂ©nĂ©rer la prĂ©sentation Ă chaque push et publier le rĂ©sultat sur GitLab pages. En quelques commandes tout fonctionne parfaitement (et rapidement). Autre effet bĂ©nĂ©fique pour moi: plus besoin de PowerPoint… ce qui m’a permis de passer mon laptop de cours sous Ubuntu (et lui redonner un nouveau souffle).
C’Ă©tait donc la 2e fois que je donnais la formation. La premiĂšre avait eu lieu en novembre 2025 et RISE ne m’avait donnĂ© que 3 heures (une matinĂ©e) pour donner le cours. C’Ă©tait “un peu” court, mĂȘme si j’y Ă©tais arrivĂ© un mois plus tĂŽt dans le cadre du cours INFO 0939 - High Performance Scientific Computing. Lors de cette toute premiĂšre rĂ©pĂ©tition, c’Ă©tait face Ă des futurs ingĂ©nieurs qui Ă©taient donc dĂ©jĂ un peu dans le bain. Ici, il s’agissait d’Ă©tudiants de tout horizons. Les feedbacks des Ă©tudiants avaient Ă©tĂ© plutĂŽt bons malgrĂ© tout…
Pour cette deuxiĂšme session, j’ai pu obtenir une journĂ©e complĂšte pour donner le cours, c’est-Ă -dire, en pratique, 2x 3 heures. Ca me donnait donc largement le temps de terminer la prĂ©sentation, d’autant plus qu’on m’avait conseillĂ© d’envoyer les instructions d’installation de git et la configuration de l’accĂšs Ă GitLab comme tĂąche prĂ©paratoire Ă faire avant de venir au cours. Il fallait donc trouver de quoi complĂ©ter la formation pour remplir la fin de l’aprĂšs-midi.
J’ai donc eu l’idĂ©e de continuer Ă mettre en avant des utilisations de l’intĂ©gration continue de GitLab pour publier des documents et des sites web.
Ayant envie depuis longtemps de passer mon mini-site perso de Jekyll Ă Hugo (cfr. ce blog), c’Ă©tait l’occasion de m’y mettre. J’ai donc passĂ© du temps avec ChatGPT et la doc Hugo pour mettre au point un site minimal pas trop laid tout en restant trĂšs simple. C’est en faisant ce travail que j’ai vu l’utilitĂ© de ma dĂ©marche. MĂȘme pour moi, qui a plutĂŽt l’habitude de passer des heures devant mon Ă©cran et mon clavier, faire fonctionner Hugo correctement avec GitLab n’est pas du tout simple. J’ai d’abord essayĂ© le template donnĂ© par GitLab qui n’a pas fonctionnĂ©. Ensuite je me suis rendu compte qu’il y avait plusieurs maniĂšres de gĂ©rer les thĂšmes et que certaines (“module go” qui nĂ©cessite l’installation de go) pourraient ĂȘtre compliquĂ©es Ă mettre en oeuvre sur les PC windows des Ă©tudiants. Enfin, certains thĂšmes (gĂ©nĂ©ralement celui qu’on a justement envie d’utiliser) ne sont pas compatibles avec certaines versions d’Hugo (gĂ©nĂ©ralement la derniĂšre)… Bon, j’y suis finalement arrivĂ©, en version “blog” avec 5 articles sur “git” gĂ©nĂ©rĂ©s par ChatGPT Ă partir de ma prĂ©sentation. J’aimerais faire Ă©galement un site type “CV” quand j’aurai le temps.
J’avais envie aussi de proposer plusieurs maniĂšres de gĂ©nĂ©rer des documents, avec LaTeX, Pandoc et Typst. J’ai aussi fait un projet qui gĂ©nĂšre du beamer.
CĂŽtĂ© “code”, j’ai fait du C++ compilĂ© par CMake, testĂ© par CTest, documentĂ© par Doxygen sur GitLab-pages, du python documentĂ© par pdoc et un notebook Jupyter rendu sur GitLab-pages.
J’aimerais, dans un avenir proche, faire du Jupyter interactif avec JupyterLite, du C++ compilĂ© en web assembly avec Emscripten et peut-ĂȘtre tester Remark comme alternative Ă Marp. Je dois aussi investiguer l’utilisation de GitLab avec Overleaf. Enfin, certains Ă©tudiants utilisent peut-ĂȘtre du Fortran ou du Matlab… Ca vaudrait le coup de leur proposer quelque chose, ne serait ce que de la doc en ligne. Je pourrais peut-ĂȘtre aussi copier mon vieux site Jekyll lĂ -bas, mĂȘme si Ruby ne m’a pas sĂ©duit Ă l’usage.
Bref, beaucoup d’idĂ©es Ă concrĂ©tiser…
