Logiciel libre / culture libre

Mes logiciels préférés

Dans mes articles concernant les distributions ou les logiciels phares du logiciel libre, je me suis efforcé de rester aussi objectif que possible, que les logiciels abordés dans ces articles correspondent ou non à mes préférences personnelles dans leurs différents domaines d’application.

Mais je me suis dit qu’il pouvait être intéressant que j’aborde dans un autre article mes logiciels préférés, car comme ce sont ceux que j’utilise évidemment le plus, ce sont également ceux dont je peux le mieux parler. Cet « autre article » est celui que vous avez présentement sous les yeux.

A l’instar de l’approche proposée dans l’article traitant des logiciels phares, mes logiciels préférés sont exposés ci-dessous par domaines d’application.

Système d’exploitation : NixOS

Je suis un utilisateur de GNU/Linux depuis la fin des années 1990. J’ai commencé ce périple libriste avec la distribution Debian, alors dans sa version 2.2 nommée « Potato » (TODO note de pied de page), après me l’être procurée sur des CD-Roms fournis avec un magazine (à une époque à laquelle l’accès du grand public à Internet était encore balbutiant et les débits de connexion ridicules en comparaison de ce qu’ils sont aujourd’hui).

Par la suite, j’ai pas mal papillonné entre différentes distributions qui sont apparues entre temps et qu’il était facile de se procurer avec la démocratisation d’Internet. Je me suis ainsi successivement adonné à Ubuntu (parfois dans sa déclinaison Kubuntu), Arch Linux, openSUSE ou encore Gentoo, en revenant de temps en temps à Debian (comme on revient dans une zone de confort).

Depuis début 2018, j’utilise la distribution NixOS.

Mon intérêt pour cette distribution découle de celui que j’ai pour la programmation fonctionnelle (et plus particulièrement le langage Haskell). Car il se trouve que le cœur de cette distribution et ce qui fait son originalité est qu’elle utilise un gestionnaire de paquets logiciels, Nix, qui repose sur des théories de l’informatique qu’il partage avec la programmation fonctionnelle.

Sur un ordinateur installé avec NixOS, la configuration du système et la déclaration des logiciels installés reposent sur un fichier de configuration unique contenant une expression Nix. L’existence d’un tel fichier, qu’il est possible de sauvegarder, de conserver et de transporter d’un système à un autre, apporte des bénéfices que j’ai déjà apprécié dans d’autres domaines, comme celui des éditeurs de texte (que ce soit Emacs avec son fichier .emacs ou Vim avec son fichier .vimrc).

Je suis de ces utilisateurs qui n’aiment pas ré-installer un système et ses applications (alors que d’autres, pour des raisons qui m’échappent, semblent adorer cela). Aussi, avant de connaître NixOS, le Saint Graal des distributions était, à mes yeux, une distribution qui n’aurait jamais besoin d’être réinstallée, tout en permettant de continuer à mettre régulièrement les logiciels à jour.

Cette quête m’avait finalement amené à utiliser Gentoo, une distribution particulièrement fastidieuse à installer, mais qui semblait pouvoir tenir la promesse d’une « rolling release » perpétuelle (promesse que n’avait pas su tenir Arch Linux lorsque je l’ai essayée). J’en étais donc arrivé à utiliser une distribution dont l’installation représenterait une grosse suée, mais dans l’espoir que ce serait une grosse suée une fois pour toutes.

Puis je me suis acheté une nouvelle machine … A installer, évidemment, avant de pouvoir l’utiliser … Ce qui m’a amené à reconsidérer (à la baisse) la valeur de « une fois pour toutes ».

Avec NixOS et son fichier de configuration déclarant également les logiciels à (ré)installer, la perspective d’une réinstallation devient moins repoussante. Il suffira de relancer une installation sur le même fichier de configuration pour obtenir le même système que celui qu’on avait auparavant, sans ensuite devoir passer une ou plusieurs semaines à régulièrement réinstaller des logiciels qu’on n’utilise qu’occasionnellement.

Par ailleurs, il découle de l’approche purement fonctionnelle adoptée par NixOS pour la gestion des paquets logiciels qu’on peut revenir en arrière après une installation malheureuse qui casserait le système (ce qui, avec les autres distributions, constitue l’une des causes majeures de la nécessité de réinstaller).

Cette approche purement fonctionnelle de la gestion de paquets est probablement ce que l’on a vu de plus novateur ces dernières décennies en la matière. Plus encore que la « containerisation » proposée par les Docker et autres Flatpack, qui sont technologiquement moins attractifs à mes yeux.

Cette approche permet, enfin, d’installer certains paquets dans des environnements isolés les uns des autres. En cela, elle constitue le nec plus ultra pour le développement logiciel, en permettant d’utiliser sur une même machine de développement des dépendances qui seraient mutuellement exclusives si elles n’étaient pas isolées les unes des autres. Et comme il se trouve que je suis développeur de logiciels …

Environnement graphique : Xmonad

Pour quelqu’un qui aurait l’habitude d’utiliser un système d’exploitation propriétaire, comme Windows ou MacOS, et qui passe à un système libre, comme GNU/Linux ou BSD ; l’un des aspects les plus déroutants est sans doute le vaste choix possible parmi un grand nombre d’environnements graphiques différents.

J’utilise ici le terme « environnement graphique » au sens large. Il peut désigner aussi bien des environnements de bureau intégrés complets comme Gnome, KDE Plasma ou Enlightenment, que de simples gestionnaires de fenêtres comme Openbox, Window Maker ou … Xmonad.

Autant d’environnements graphiques, autant de choix ergonomiques différents (subtilement ou radicalement).

Les utilisateurs qui ne connaissent que Windows ou MacOS ne se figurent pas à quel point les approches ergonomiques immaginables peuvent être nombreuses et différentes ; parfoit radicalement.

En particulier, ils ignorent souvent l’existance même de l’approche des gestionnaires de fenêtres pavants (ou gestionnaires « en tuiles », appelés « tiling window managers » en anglais).

Windows comme MacOS (et comme Gnome, KDE Plasma, Cinnamon ou encore Enlightenment, les environnements les plus populaires pour GNU/Linux) proposent des systèmes de fenêtrage flottants. Cela signifie que les fenêtres peuvent être maximisées, minimisées, redimensionnées, déplacées et surtout qu’elles peuvent se chevaucher les unes les autres. Tout ceci se fait généralement en utilisant la souris.

Avec un système de fenêtrage pavant, c’est le système qui se charge automatiquement de l’agencement des fenêtres plutôt que l’utilisateur avec sa souris. Toutes les fenêtres présentes à l’écran son agencées automatiquement, en fonction d’un mode spécifié, pour couvrir la totalité de la surface disponible sans se chevaucher les unes les autres.

Je conçois que simplement expliqué en ces quelques mots, sans démonstration visuelle, cela puisse paraître confu et d’une utilité douteuse. Pire, cela pourrait apparaître comme une grosse perte de pouvoir de l’utilisateur, puisqu’il ne peut plus redimensionner librement ses fenêtres.

Mais il y a évidemment quelques précisions à apporter à ce sujet :

Les gestionnaires pavants sont en fait plus conformes que les gestionnaires flottants à un mot d’ordre qui résume mon idée de l’informatique :

La Machine existe pour satisfaire les besoins de l’Homme et pas l’inverse.

Autrement dit, si une tâche basique, fastidieuse et répétitive peut être automatisée, c’est pour le mieux. En revanche si l’humain doit effectuer des tâches basiques, fastidieuses et répétitives pour permettre à une machine de fonctionner correctement, alors on a probablement à faire à un cas d’automatisation mal pensée.

Dans une certaine mesure, et toutes proportions gardées, c’est un peu le cas des gestionnaires flottants pour lesquels l’utilisateur va devoir effectuer la tâche basique, fastidieuse2 et répétitive de redimensionner des fenêtres.

Il existe plusieurs de ces gestionnaires pavants pour GNU/Linux. J’ai jeté mon dévolu sur Xmonad, principalement pour le fait qu’il est écrit avec le langage de programmation Haskell qui se trouve être un langage que j’affectionne particulièrement et que j’ai commencé à étudier à peu près à la même période.

Xmonad se configure d’ailleurs en écrivant des extensions en langage Haskell. Passer à Xmonad au moment ou je voulais approfondir mes connaissances en langage Haskell était donc également pour moi l’occasion de faire d’une pierre deux coups (quoique la simple configuration de Xmonad ne recquiert finalement pas des connaissances vraiment approfondies en langage Haskell).

Xmonad propose, de base 3 modes d’agencement :

Le mode horizontal (mode « Tall »)

Dans ce mode, une fenêtre est considérée comme principale et occupe la totalité de la partie gauche de l’écran. Cette « partie » gauche correspond par défaut à la moitié de la largeur de l’écran mais peut facilement être redimensionnée avec des raccourcis clavier (dans ma configuration, Meta+Shift+← permet de la réduire sur la gauche et Meta+Shift+→ permet de l’étendre sur la droite).

Toutes les autres fenêtres se répartissent la partie droite de l’écran en se positionnant les unes au dessus des autres et en se partageant à parts égales l’espace vertical de cette zone.

Il est possible, toujours par des raccourcis clavier (mais aussi par la souris), de sélectionner les différentes fenêtres présentes à l’écran et de promouvoir la fenêtre actuellement sélectionnée comme fenêtre principale. Elle permute alors sa position avec celle de la précédente fenêtre principale.

Le mode vertical (mode « Mirror Tall »)
Il s’agit d’un mode qui fonctionne de façon analogue au précédent, mis à part le fait que la zone de la fenêtre principale couvre non pas la partie gauche de l’écran mais sa partie haute et que les autres fenêtres ne se répartissent pas verticalement sur la partie droite mais horizontalement sur la partie basse.
Le mode plein écran (mode « Full »)

Dans ce mode, la fenêtre sélectionnée occupe la totalité de l’espace disponible à l’écran et les autres fenêtres sont cachées « derrière », comme elles le seraient dans une gestion flottante avec des fenêtres maximisées.

Il est là encore possible de changer de fenêtre sélectionnée par des raccourcis clavier. J’utilise notamment Meta+Tab de la même façon que les utilisateur de Windows utilisent Alt+Tab.

J’utilise la plupart du temps le mode plein écran. Rétrospectivement, à l’époque ou j’utilisais des gestionnaires de fenêtres flottants, j’utilisais quasiment systématiquement des fenêtres maximisées. Le mode plein écran de Xmonad me permet donc de gérer la plupart des cas d’utilisation dont j’ai pris l’habitude. Je n’ai juste plus besoin de cliquer sur une icône de maximisation quand je lance une nouvelle fenêtre.

Le mode horizontal me sert notamment quand je veux effectuer des copies de fichiers. J’invoque alors deux fenêtres de gestionnaires de fichiers, une pour la provenance et une autre pour la destination. Ces deux fenêtres viennent alors automatiquement ce coller l’une à l’autre, chacune sur une moitié d’écran, sans que j’ai à les positionner à la souris ou avec des raccourcis clavier comme Meta+← et Meta+→ comme je devais le faire à l’époque à laquelle j’utilisais Gnome.

Un autre avantage de cette approche est qu’elle rend inutile la présence d’une barre d’entête de la fenêtre pour y faire figurer des boutons de maximisation et de minimisation ou pour la déplacer. De même, les bordures de fenêtres, habituellement utilisées pour permettre leur redimensionnement, n’ont plus besoin d’être suffisamment épaisse pour permettre leur manipulation avec la souris.

Ceci représente autant de surface gagnée à l’écran et qui peut être dévolue au contenu utile de la fenêtre plutôt qu’à sa gestion pour l’environnement graphique. Seule subsiste autour de chaque fenêtre une petite bordure d’un seul pixel d’épaisseur et qui passe au rouge pour indiquer visuellement laquelle des fenêtres présentes à l’écran est actuellement sélectionnée.

Comme cela peut être déduit des précédents paragraphes, l’accent est mis sur l’utilisation de raccourcis clavier. De fait, les gestionnaires pavants sont attractifs surtout pour les utilisateurs qui, comme moi, intéragissent avec la machine plus volontier par le clavier que par la souris. Il s’agit là d’un fondement même de leur existance.

Le but est d’éviter de perdre du temps à sans cesse passer du clavier à la souris pour ensuite revenir au clavier … Un tel environnement prend donc tout son intérêt avec une sélection de logiciels qui sont eux-mêmes pilotables au clavier. Cet impératif se ressent évidemment sur le reste de la sélection de logiciels exposée dans le présent article.

Comme Xmonad est entièrement configurable via des extensions écrites en langage Haskell, il est possible de choisir les raccourcis clavier utilisés. En ce qui me concerne, j’ai complètement personnalisé ces raccourcis afin qu’ils soient optimisés pour :

J’utilise Xmonad conjointement avec le programme Xmobar qui apose en haut de l’écran une petite barre d’état, entièrement configurable, permettant d’afficher des informations utiles en permanence et visibles sur tous les bureaux virtuels. Je l’ai personnellement configurée pour afficher les informations suivantes :

Tout ceci me donne un système qui obéit au doigt et à l’œil (littéralement, pour ce qui concerne le doigt).

Edition de texte : (g)Vim

Vim est, avec GNU Emacs, l’un des deux gros monuments parmi les éditeurs de texte. Et il entretient avec ce dernier, dans le cœur des hackers, une certaine rivalité.

Au vu de certains échanges sur des forums sur Internet, cette rivalité semble même parfois tourner à la guerre de religion.

Mes premières années d’utilisation de logiciels libres m’ont en fait vu être un fervent utilisateur de GNU Emacs. Les premiers contacts lors de mes études avec Vi, dont Vim est un descendant, ne m’en avaient pas laissé un souvenir impérissable. Et puis à cette époque à laquelle je découvrais les logiciels libres, notamment à travers le projet GNU, il suffisait que ce soit l’éditeur de texte de Richard Stallman pour que je veuille l’utiliser aussi.

Mais plus récemment, j’ai voulu en avoir le cœur net et évaluer Vim pour le comparer avec Emacs de façon circonstanciée. Ce que j’ai alors appris de l’utilisation de Vim m’a conquis :

Conversion de documents : Pandoc

Je déteste les outils de bureautique, en dehors des tableurs, auxquels je trouve une vraie utilité. Je déteste en particulier les logiciels de traitement de texte comme Microsoft Word.

Le fait qu’il en existe des libres, comme Libre Office Writer, n’y change rien. Je n’aime pas cette façon de créer des documents.

Un logiciel de traitement de texte ne doit pas être confondu avec un éditeur de texte. Alors que ce dernier ne permet que d’éditer du texte pur, dépourvu de quelle que mise en forme intrinsèque que ce soit, le premier sert à éditer du texte « riche », dans un format de fichier plus sophistiqué qui retiendra également des notions de mise en forme telles que des sauts de page, des polices et des tailles de caractères, des portions en gras ou soulignées …

Ce qui me déplait au plus au point est précisément cet entremêlement des considérations de fond et de forme auquel poussent les logiciels de bureautique. On y passe généralement autant de temps à paufiner et à revenir sur la mise en forme du texte qu’à élaborer son contenu et son sens profond.

Mais d’autres approches sont possibles quand il s’agit de créer des documents. Il existe des langages de définition de documents basés sur des fichiers de texte pur qui sont ensuite interprétés par des programmes chargés de produire des fichiers définitifs en reprenant le contenu et le mettant en forme avec les polices de caractères et autres sauts de pages voulus.

Des exemples célèbres de tels formats sont TeX et LaTeX.

Un autre, plus simple et dont je me sers régulièrement est Markdown. D’ailleurs, les mots que vous êtes présentement en train de lire on été initialement tapés en Markdown avec Vim.

Je me suis donc détourné des logiciels de bureautique pour adopter Markdown, un format texte qui permet de décrire le contenu et la structure d’un document. Ce contenu structuré peut ensuite servir à alimenter un programme capable de générer des documents définitifs et mis en forme dans divers formats de fichiers. Mais encore faut-il disposer d’un tel programme de conversion.

C’est précisément là qu’entre en scène Pandoc. Il s’agit d’un programme utilisable en ligne de commande et capable de prendre en entrée des fichiers dans un certain nombre de formats et de les convertir en sortie dans d’autres formats.

Pour ce qui m’intéresse, il est notamment capable de prendre en entrée des fichiers au format Markdown et de produire en sortie des fichiers aux formats HTML, PDF ou ODT. Il est également capable de produire de fichiers au format DOCX de Microsoft Word, mais je préfère personnellement les formats de fichiers ouverts.

Navigation web : Firefox

Firefox est un véritable emblême du logiciel libre.

Dans les années 1990, deux navigateurs se faisaient concurrence : Netscape Navigator et Microsoft Internet Explorer.

Cette guerre fût gagnée par Internet Explorer qui était alors pré-installé avec Windows, sans possibilité de le désinstaller. Les utilisateurs candides qui n’avaient même pas conscience d’avoir le choix se retrouvaient donc à utiliser Internet Explorer par défaut. Le succès de ce dernier reposait essentiellement sur un défaut de choix de la part de ses utilisateurs plutôt que sur un choix conscient.

Bien que cette pratique ait par la suite été pointée par les instances officielles comme un abus de position dominante pour laquelle Microsoft a été comdamné en 2010 puis en 2013, concernant Netscape le mal était fait et la société ne s’en est pas relevée. Les libristes ne pouvaient qu’enrager de voir une situation de monopole propriétaire se conforter au mépris même des gardes fous les plus conservateurs de la législation sur la concurrence.

Mais dans un ultime effort, la société Netscape a libéré le code de son navigateur, le rendant visible à la communauté des développeurs libristes et leur permettant de le reprendre à leur compte. Ainsi est née la fondation Mozilla et son navigateur Firefox.

Quelques années plus tard, suite à la disparition de son seul concurrent d’envergure, Internet Explorer, alors dans sa version 6, se trouvait dans une position totalement hégémonique sur le marché. Ceci au grand dam des utilisateurs et des développeurs du marché émergeant des applications web, tant le navigateur de Microsoft était limité, lent et peu respectueux des standards du web comme les langages HTML et CSS.

Quand Firefox est sorti avec son rendu des pages plus performant et plus respectueux des standards et en proposant des innovations ergonomiques comme l’ouverture de pages dans des onglets, il a vite commencé à tailler des croupières à Microsoft et à conquérir des parts honorables sur le marché des navigateurs, surtout en Europe.

Au delà de ce succès technique, cette tout un symbôle qu’incarne Firefox. Celui de la possibilité pour un logiciel libre porté par une fondation à but non lucratif de s’attaquer avec succès au pire des monopoles assis sur les pratiques commerciales les moins éthiques.

Firefox a ainsi ouvert la voie et est aujourd’hui rejoint par d’autres navigateurs, dont Chromium et Chrome de Google.

Mais je conserve ma préférence pour Firefox, non pas seulement pour le symbôle qu’il représente dans l’histoire des logiciels libres, mais également pour le nombre et la qualité de ses extensions qui peuvent réellement transformer l’expérience Internet. Je ne pourrais par exemple plus me passer d’un bloqueur de publicités et, à ce que j’ai constaté, c’est avec Firefox qu’ils fonctionnent le mieux.

Courrier électronique : Thunderbird

Thunderbird est le complément logique de Firefox, le courrier électronique étant avec la navigation web la principale utilisation grand public d’Internet.

Avec Thunderbird, le courrier électronique est globalement un problème résolu. C’est pourquoi le développement de ce logiciel est plus ou moins en sommeil ; non pas que le projet soit abandonné, mais il n’y a plus vraiment de problème à résoudre.

Après avoir utilisé des environnements du bureau intégrés comme Gnome ou KDE Plasma, avec leurs logiciels de courrier électroniques associés (respectivement Evolution et KMail), je suis revenu à Thunderbird et j’ai apprécié le fait qu’il ne cherche justement pas à s’intégrer à un environnement global.

Le fait est que j’utilise un certain nombre de boîtes aux lettres électroniques différentes, toutes configurées en IMAP dans mes logiciels de courrier électronique. L’accès à chacune de ces boîtes aux lettres est évidemment protégé par un mot de passe qu’il serait fastidieux de devoir retaper à chaque fois.

Heureusement, tout logiciel de courrier électronique peut être configuré pour retenir les mots de passe et ne pas demander à l’utilisateur de les retaper à chaque fois. Mais avec les logiciels intégrés aux environnements de bureaux, quand ils sont ainsi configurés, c’est le portefeuille centralisé de mots de passe de l’environnement de bureau qui prend le relai et qui demande, à chaque fois, de taper le mot de passe maître qui se substitut à tous les mots de passe spécifiques à chaque boîte aux lettres.

Je conviens qu’il est moins fastidieux de taper un mot de passe maître qu’autant de mots de passe que je possède de boîtes aux lettres. Mais avec Thunderbird, les mots de passe sont définitivement mémorisés par le logiciel de courrier lui-même et je ne suis jamais sollicité pour taper, encore et encore, toujours le même mot de passe.

Construction de sites web : Hakyll

Hakyll, comme Xmonad et Pandoc, est un logiciel que j’ai découvert en étudiant le langage de programmation Haskell.

Il s’agit d’un générateur de sites statiques prenant la forme d’une bibliothèque en langage Haskell, qui s’appuie sur Pandoc et qui remplace les makefiles que j’utilisais auparavant avec ce dernier et GNU Make pour générer mes sites web à partir de fichiers Markdown.

Plus exactement, il s’agit d’une bibliothèque Haskell qui me permet d’écrire simplement un programme dans ce langage pour générer un site web à partir d’un ensemble de fichiers de contenu en Markdown et de fichiers modèles de pages web en HTML.

Le présent site est bien évidemment généré à l’aide d’Hakyll.

Divers outils en ligne de commande

Je ne rechigne pas à utiliser la ligne de commande plutôt qu’un logiciel graphique quand cela me paraît être une solution plus efficace. La ligne de commande présente en particulier l’avantage de ne pas rompre le flot de travail des utilisateurs qui, comme moi, prèfèrent une ergonomie basée sur l’utilisation du clavier plutôt que de la souris.

Parmi les commandes qui m’épargnent un temps appréciable pour des opérations que j’effectue régulièrement :

Autres domaines d’application sans préférences marquées

Les logiciels cités dans les précédentes sections couvrent l’essentiel de l’utilisation que je fais d’ordinateurs (hors de mon cadre professionnel, dans lequel je n’ai pas le choix de tous les logiciels que j’utilise).

Il existe néanmoins d’autres domaines d’application qui, soit me sont d’un usage moins régulier, soit sont des domaines pour lesquels le choix d’un logiciel plutôt qu’un autre ne m’as pas paru si important ou produisant une réelle différence d’expérience. Je vais tout de même citer ces logiciels que j’utilise plus ou moins régulièrement sans que cela corresponde à un choix spécialement engagé de ma part :

Edition de graphismes matriciels : le Gimp
L’usage que j’ai d’un tel logiciel, pour effectuer quelques retouches basiques de photographies, est des plus rudimentaires en comparaison de tout ce que ce logiciel peut apporter à un utilisateur plus averti.
Edition de graphismes vectoriels : Inkscape
Même commentaire que pour le Gimp.
Lecture audio :

J’écoute rarement de la musique sur mon ordinateur. J’en écoute plutôt sur un baladeur numérique quand je marche ou en voiture sur mon autoradio.

Je puis cependant préciser que je suis un adepte du format audio FLAC ; ce qui nous amène à …

Conversion de CD audio en fichiers numériques (au format FLAC) : Asunder
Ce logiciel me satisfait par le fait qu’il peut être configuré pour produire des fichiers dont les noms suivent un format proche de celui que je veux obtenir en définitive et qui demande donc peu de retouches (retouches que j’effectue avec mmv).
Lecture vidéo : Kodi
Je dispose d’un ordinateur dédié à la fonction de « media center ». Kodi est une application idéale pour un tel projet.

  1. Apparemment, les utilisateurs de MacOS peuvent quant à eux bénéficient de cette innovation depuis la version OS X 10.7, sortie en octobre 2010 ; ce qui me parait incroyablement tardif pour un système Unix et qui me fait douter du fait que leur emploi soit véritablement répandu chez les utilisateurs de ce système d’exploitation. J’en suis médusé quand je vois à quel point il me serait personnellement devenu difficile de m’en passer.

  2. Le terme de « fastidieux » peut paraître un peu exagéré s’agissant de redimensionner des fenêtres. Toujours est-il que je ne connais personne qui en ait fait une activité de loisir à part entière.