Passionné par l’informatique, j’ai très vite adhéré aux principes de
partage des connaissance du logiciel libre : pouvoir étudier le cœur
des logiciels est assez fou et est une immense source d’inspiration.
Par curiosité, c’est déjà très intéressant de comprendre comment le
programme fonctionnent, mais en plus, ça permet de proposer des
améliorations ou de nouvelles fonctionnalités utiles à tout le monde.
En effet, en plus du partage de son fonctionnement, le développement
du logiciel libre est centré sur les êtres humains et va donc
implémenter ce dont tout un chacun aura besoin un jour ou l’autre.
J’ai remarqué récemment que, vieillissant, les outils d’accessibilités
me deviennent de plus en plus utiles alors que je n’y avais jamais
fait attention.
Par exemple, les options pour améliorer la vision sont devenus quelque
chose d’important pour facilement agrandir les textes et augmenter les
contrastes.
L’option --help
qui est disponible dans quasiment tous
les logiciels libres est aussi une bonne illustration que les
logiciels sont développés pour les utilisateurs: l’aide pour utiliser
le logiciel est souvent comprise dans le logiciel lui-même et c’est
une évidence puisque le logiciel est libre, il n’y a pas de raison de
cacher ses fonctionnalités à l’utilisateur.
C’est tellement agréable de savoir que cette aide existe
toujours quand on a juste besoin de changer un paramètre ou deux.
C’est juste là, à portée de main, pas besoin de brûler les resources
de la planète avec des services comme des moteurs de recherche ou des
intelligences artificielles.
Enfin, même si le logiciel n’est pas encore très développé et ne
contient pas toutes les fonctionnalités, il est fort probable que
d’autres utilisateurs partagent leurs découvertes sur le web. Comme le
logiciel libre invite le partage de son fonctionnement, c’est assez
naturel de se partager des astuces entre utilisateurs.
Le partage d’humain à humain est important, comme écrit dans ma
présentation, je vous propose ci-dessous une liste des projets que
j’utilise régulièrement.
Cette liste sera mise à jour de temps en temps. Si vous voulez des
nouvelles plus régulières, vous pouvez consulter mon
Blog ou mes comptes
Mastodon et
LinuxFr.org.
Mes outils quotidiens
- debian
-
Le « système d’exploitation universel » : très stable, évolue
régulièrement, c’est l’élément de base que j’installe sur toutes mes
machines. C’est un réel bonheur d’avoir ce système qui me laisse
utiliser mon ordinateur sans essayer de me vendre des services ou de
vendre mes données (coucou Windows, coucou Apple…).
- GNOME
-
Mon bureau préféré pour sa simplicité et son paradigme qui met en
avant l’utilisation des applications.
- zsh
-
Je ne sais plus bien pourquoi j’ai commencé à l’utiliser, mais cette
interface en ligne de commande fonctionne bien pour mes besoins. Je
l’ai configuré pour reprendre les raccourcis de VIM et la recherche
dans l’historique fonctionne bien.
- VIM
-
Le célèbre éditeur de texte disponible par défaut sur presque toute
les machines. Il est très souple et peut même être utilisé comme
environnement de développement. Étant développeur, c’est un des outils que j’utilise
quotidiennement.
- tmux
-
Comme j’ai souvent un terminal ouvert pour utiliser VIM, tmux est
très pratique pour partager l’écran en plusieurs parties et créer
des onglets dans le terminal lui-même. Je l’utilise également pour
pouvoir copier/coller facilement le texte affiché dans mon terminal.
Je le trouve tellement utile que j’ai configuré zsh pour lui dire de
démarrer tmux à chaque démarrage.
Des utilitaires pour l’art de développer
- git
-
git est l’outil le plus célèbre pour gérer l’histoire de son code
source. J’apprécie particulièrement de pouvoir l’utiliser sans
connexion Internet par défaut et de pouvoir travailler sur des
fichiers sans bloquer les collègues.
Grâce à ces propriétés, je peux préparer avec soin mon correctif, le
sauver temporairement, le reprendre et le modifier localement.
Enfin,
quand je suis satisfait de l’état du correctif sur mon poste, je peux l’envoyer sur un serveur pour le partager.
- podman
-
Un outil qui permet d’isoler et d’exécuter des programmes venant de
partout. Très utile également pour partager son logiciel avec toutes
les dépendances utiles pour son exécution.
- Rust
-
Pour la plupart de mes projets, le language est une question de goùt
et je m’adapte plutôt bien (surtout en entreprise où le choix a déjà
été acté bien avant mon arrivée). Mais j’ai essayé Rust sur mes
derniers projets libres et il apporte vraiment des outils
supplémentaires: d’abord, son compilateur génère des erreurs
compréhensibles et souvent avec des propositions de corrections,
ensuite, il a amène une nouveauté vraiment exclusive avec sa gestion
de la mémoire et ses notions de partage et d’emprunt de variable.
- Meld
-
J’emploie régulièrement Meld pour comparer rapidement deux
valeurs de variables ou deux fichiers qui ne sont pas suivis par
git. Il est aussi très efficace pour comparer deux répertoires, puis
comparer les fichiers différents de ces répertoires.
- diffoscope
-
diffoscope est un outil très polyvalent capable de montrer
les différences entre deux documents soit dans le terminal soit dans
un visuel HTML.
Pour comparer les contenus, il a besoin de
dépendances externes pour transformer les formats en fichier texte
et il vous indique quel outil manque sur votre système pour fournir
des informations plus détaillées. Je l’ai utilisé avec succès pour
comparer des PDF et des documents de traitement de
texte.
Il permet aussi apparemment de comparer des archives compressées,
des paquets Debian et des dossiers, ça doit aussi être intéressant.
Gestion des machines elle-mêmes
- systemd
-
Quand je commençais à m’intéresser à personnaliser mon système, les
distributions Linux étaient en train de migrer de
System V vers systemd. Au début mon besoin était de
simplement exécuter un outil en arrière plan et c’est vraiment très
simple avec un fichier de configuration systemd, alors qu’avec
System V il fallait être un fin connaisseur du language shell
utilisé par sa distribution.
Le projet est très bien documenté et est plutôt simple à utiliser.
Il fait tourner par exemple les containers podman que j’ai besoin
pour mes services en ligne.
- btrfs
-
btrfs est un système de fichier vraiment intéressant pour sa
capacité à créer des snapshots rapidement et facilement. Il sait
gérer aussi le RAID1 et ses sous-volumes permettent d’organiser son
disque sans avoir besoin de scinder fortement les compartiments des
disques (ils peuvent être vus comme des partitions, mais dont on
n’est pas obligé de fixer une taille spécifique).
- ncdu
-
ncdu permet d’analyser un répertoire et de trouver quels
éléments prennent beaucoup de place. C’est un outil en ligne de
commande avec une interface interactive, très utile quand on est sur
un serveur sans serveur graphique.