Outil de prise de notes : Joplin, une perle open-source

Depuis décembre, j’ai démarré une courte formation de DevOps, dans l’idée de rejoindre une entreprise par la suite. Au cours de cette formation, je me suis vite rendu compte que mon outil pour prendre des notes n’était pas idéal et que je pouvais trouver mieux. Après une courte recherche, j’ai trouvé un outil qui me va bien, et le but de cet article est de le présenter.

Un peu de contexte : dès le début de mes études, j’ai pris l’habitude de prendre mes notes de cours sur PC portable. Pour plusieurs raisons : je tape plus vite que j’écris, j’arrive mieux à me relire sur du texte tapé que sur de l’écrit pris à la va-vite, et je trouve que ça me permet d’organiser mieux tout ce qui peut être dit en cours. Le texte numérique est un chouïa plus malléable que l’écrit (c’est plus facile de rajouter une précision dans un paragraphe précédent, par exemple).

Comme souvent pour les outils qui relèvent du « perso », la meilleure méthode sera celle qui vous conviendra. Certains sont plus à l’aise avec un stylo, mais moi, taper me va très bien. D’aucuns pourraient arguer qu’il est parfois compliqué de faire des schémas sur ordinateur, que c’est plus facile à l’écrit, mais personnellement j’ai toujours réussi à me débrouiller.

Mon outil de prédilection jusqu’à maintenant : les traitements de texte libre Writer

Jusque là, mon outil de prise de notes était le traitement de texte libre Writer, d’abord dans la suite OpenOffice, puis dans la suite LibreOffice.

Un traitement de texte, c’est tout à fait correct pour la prise de notes. C’est un outil très abordable, avec plein d’options de mise en forme, dans un format largement reconnu (le .odt, même si tous les traitements de texte sont aussi compatibles doc et docx). Il y a toutes les fonctions qu’on pourrait s’attendre, et même plus, bien plus.

Il m’est aussi arrivé d’utiliser le traitement de texte Google Docs, avec un avantage : c’est qu’il est synchronisé et donc sauvegardé automatiquement. D’expérience, un traitement de texte de ce type apporte surtout la possibilité de collaborer. Mais la prise de notes à plusieurs, pour l’avoir essayé lors de mes études à l’IUP Infocom, j’aurais tendance à ne pas la conseiller.

En étant plusieurs à prendre des notes sur le même document simultanément, chacun va avoir envie de noter de façon différente, ça créée beaucoup de distraction, on est plusieurs à écrire la même note… Bref, ce n’est pas un outil de collaboration idéal pour de la prise de note en direct. Par contre, ça peut être une bonne manière de synthétiser des notes de cours à plusieurs.

Reste un gros souci avec la solution Google Docs : dès qu’on n’a plus de WiFi, l’utilisation de l’outil est est compromise. C’est aussi parce que je veux quelque chose d’utilisable même sans connexion que je me suis tourné vers des solutions non-web.

Pour en revenir au traitement de texte, c’est un outil qui peut bien fonctionner, mais qui n’est tout simplement pas adapté à la prise de notes. Il permet d’en faire, mais son rôle est d’avoir un texte organisé, avec vocation d’être publié. Pour écrire un mémoire, un rapport, un roman ou que sais-je encore, il va bien. Pour prendre des notes, on peut probablement trouver mieux. C’est aussi pour ça qu’on a vu des outils de prise de notes se faire leur part du marché, ils répondent à un besoin !

Quelques critères : ce que je recherche dans un outil de prise de notes

  • De la simplicité : enlever toutes les fonctions dont je ne me sers pas pour prendre des notes, comme la gestion des feuilles de style, notes de bas de page, formulaires…
  • Quelques options de mise en forme : pouvoir faire plusieurs niveaux de titres, du gras, de l’italique, des extraits de code…
  • Pouvoir faire des tableaux facilement, et si possible, pouvoir faire des schémas sans utiliser un outil externes ou devoir bricoler quelque chose en ajoutant des formes dans le document
  • Que ces options soient accessibles par raccourcis claviers (Ctrl + B pour le gras, Ctrl + 1 / Ctrl + 2 pour les titres…)
  • Je veux un rendu en direct de ce que je note, pas de différentiel entre « du code de mise en forme que je tape » et « ce que ça rend à la lecture ». Ça peut prendre la forme d’un éditeur WYSIWYG ou d’un double panneau code/rendu.
  • La possibilité d’insérer des images et des liens
  • Pas d’autocorrection, je sais ce que je tape. Par exemple, si je saisis un nom d’interface « INavigable », je ne veux pas que mon traitement de texte le transforme en « Inavigable » parce qu’il juge qu’on ne peut pas avoir deux majuscule. Ou je ne veux pas qu’il corrige un mot anglais en mot français qui ne fait pas la même chose.
  • Pas de gestion des pages : comme je ne cherche pas à imprimer les cours, je veux juste une saisie de notes « fleuve », sans avoir à gérer ce qui est avant ou après un saut de page.
  • Une utilisation hors ligne possible, et tout de même un système de sauvegarde automatique et de synchronisation à distance. Pour ne pas perdre ce que j’ai noté.

Soyons clair sur une chose, il est tout à fait possible de configurer plein d’options dans les traitements de texte modernes pour désactiver certaines autocorrections, avoir une vision sans les sauts de page (dans Writer, c’est l’affichage « Web »), etc. Mais plutôt que de passer du temps à configurer un outil non directement adapté à mon besoin, je me suis dit que j’allais en trouver un autre.

Et surtout, là où le traitement de texte me convenait pour la prise de notes dans des cours de communication ou nous notions principalement du texte avec éventuellement quelques schémas, pour les cours axés développement, le traitement de texte montre vite quelques lacunes dès qu’on veut ajouter du code dans la prise de notes. Il faut choisir le style de texte préformaté, caler l’indentation soit-même, etc.

Je signale un autre critère, qui ne me concerne pas spécifiquement mais que j’ai vu dans les arguments en faveur des outils de prise de notes : avoir une interface avec peu de distractions. Donc, une interface qui se consacre uniquement à ce qu’on est en train de noter.

C’est vrai qu’il y a des logiciels qui vont afficher des alertes, et que même la pléthore d’icônes peut être distrayante. Ce n’est pas pour rien que même WordPress a depuis quelques années un éditeur pour les articles qui fait abstraction de tout le reste du blog, permettant de se concentrer sur le contenu. Un outil de prises de notes devrait aller dans ce sens.

Le choix de Joplin, outil de prise de notes gratuit

Comme souvent lorsque je cherche un nouvel outil, je suis allé sur AlternativeTo.net et j’ai cherché « Note taking ». Le premier outil qui sort, c’est Evernote, un outil propriétaire et Freemium. Joplin est la solution gratuite et open source qui est proposée en premier, et les commentaires allaient plutôt dans le bon sens. C’est donc par là qu’est allé mon choix.

L’interface de Joplin

Voici à quoi ressemble l’interface de Joplin :

Trois zones principales : les carnets, la liste des notes contenues dans le carnet (une note par session de cours, ou une note par grand chapitre, etc.), et un éditeur.

L’éditeur est lui-même divisé en deux par défaut : « Markdown » faisant apparaître le code, et un autre volet pour le rendu final. Il est possible de personnaliser l’interface et même de passer en mode WYSIWYG, mais après avoir testé les deux configuration, j’aime bien avoir le markdown séparé du rendu.

Et puis dans la fenêtre markdown, toute la mise en forme structurante est aussi mise en forme visuellement, ce qui est suffisant pour garder les repères. Les en-têtes, le code, le gras et l’italique apparaissent directement dans la fenêtre de markdown. Le plus de la fenêtre de rendu, c’est de montrer les captures d’écran des liens, et les rendus pour les schémas et diagrammes que vous aurez ajouté dans le code (voir ci-dessous).

Gros plus : la fenêtre est personnalisable. Personnellement, j’ai mis les notes et les carnets verticalement, dans une seule session, et j’ai passé le logiciel en dark mode, plus agréable à mon goût.

La syntaxe markdown

Vous avez peut-être déjà entendu parler de la syntaxe markdown (on la trouve notamment dans les fichier readme.md des dépôts git). C’est celle que Joplin utilise.

Son principe est que, même sans avoir de logiciel de rendu, le texte produit est lisible et compréhensible. Donc les titres sont symbolisés par des #, le gras par des étoiles, et les sauts de lignes sont significatifs.

Pour illustrer l’intérêt du markdown, voyons le même exemple de texte (pris plus haut) et voyons ce qu’il donne, d’abord en html :

<h2>Quelques critères : ce que je recherche dans un outil de prise de notes</h2>
<ul><li><strong>De la simplicité :</strong> enlever toutes les fonctions dont je ne me sers pas pour la prise de note, comme la gestion des feuilles de style, notes de bas de page, formulaires...</li><li><strong>Quelques options de mise en forme : </strong>pouvoir faire plusieurs niveaux de titres, du gras, de l'italique, des extraits de code...</li>

Puis en markdown :

## Quelques critères : ce que je recherche dans un outil de prise de notes

- **De la simplicité :** enlever toutes les fonctions dont je ne me sers pas pour la prise de note, comme la gestion des feuilles de style, notes de bas de page, formulaires...
- **Quelques options de mise en forme :** pouvoir faire plusieurs niveaux de titres, du gras, de l'italique, des extraits de code...

L’un des deux est tout de même plus simple à lire que l’autre, non ?

Dans Joplin, j’ai directement retrouvé les raccourcis clavier Ctrl + B et Ctrl + I . Il me manque juste Ctrl + 1 pour les différentes en-être, mais écrire un ou deux fois le symbole dièse #, ça va relativement vite. Ce n’est pas un problème très gênant, au final.

Comme vu plus haut, la mise en forme principale apparaît dans markdown. Et en cas de doute, toute la syntaxe est disponible sur la barre d’outil. Outre son côté prise de notes, Joplin est en fait un excellent éditeur pour la syntaxe markdown !

La synchronisation

Quand j’ai fait Ctrl + S pour la première fois, une petite surprise m’attendait… Pas de sauvegarde, mais Un panneau s’est ouvert pour configurer la synchronisation des documents dans le cloud. Et bien sûr, le Ctrl + S étant une sorte de réflexe, je suis tombé nez à nez avec ce panneau plusieurs fois tant que la synchronisation n’était pas configurée.

Tout d’abord, si vous utilisez Joplin sur un seul et unique poste, sachez que vous avez toujours l’option de synchroniser uniquement sur des fichiers en local :

Options de synchronisation de Joplin

L’option qui offre le plus de fonctions, c’est de sauvegarder dans le cloud de Joplin. C’est une fonction payante, et en somme, c’est un moyen de rétribuer l’auteur du logiciel pour son développement.

Si vous ne pouvez pas dépenser le montant du Joplin cloud, la synchronisation sur Dropbox ou OneDrive est possible, voire même des options auto-hébergées. Après quelques tergiversations, j’ai personnellement opté pour un de ces service de disque dur dans le cloud, en me disant que je testerai à l’occasion une option auto-hébergée.

En tous cas, un conseil : paramétrez assez tôt cette synchronisation, car tant que rien n’est choisi, le Ctrl + S se contente de montrer l’assistant de synchronisation, ce qui vous interrompt complètement dans la prise de notes !

Bonus pour les développeurs : le code et les diagrammes !

Un intérêt, et non des moindres, de Joplin pour prendre des notes pour une formation axée autour du développement, c’est que la prise en charge du code est très bonne (comparée à celle des traitements de texte qui est laborieuse).

La syntaxe Markup pour insérer un bloc de code est `du code` pour du code inline (directement dans le texte) et ``` (mon code) ``` pour du code sur plusieurs lignes. L’un comme l’autre sont accessibles en sélectionnant du texte ou plusieurs ligne de texte, avec le raccourci Ctrl + ² (à gauche du 1/& d’un clavier AZERTY).

Il est possible de spécifier le langage directement à côté des « ` d’ouverture pour que la colorisation syntaxique corresponde au langage.

Par exemple, ci-dessous, j’ai utilisé la syntaxe ```csharp pour englober mon snippet de code C#. À gauche, le markdown, à droite le rendu, avec de la coloration syntaxique.

Exemple du rendu de code dans Joplin

Et une autre fonction qui peut s’avérer très utile, c’est la prise en charge de mermaid, un outil qui permet de générer des diagrammes en partant directement de code. Le code est un peu dans l’esprit de markdown, la syntaxe est assez intuitive (on va par exemple écrire --> pour faire une flèche).

Pour faire un diagramme avec mermaid, on ouvre un bloc de code comme expliqué ci-dessus, et on indique ensuite le type de diagramme. Ensuite, la syntaxe dépend du diagramme.

Voici ci-dessous un flowchart (diagramme décisionnel) :

Diagramme décisionnel sous Joplin, avec Mermaid

Le code commence par cette syntaxe, qui indique que nous utilisons Mermaid et que le type de diagramme est un graph (le mot clé « flowchart » est équivalent) et qu’il va de haut en bas (TD / Top Down).

```mermaid
graph TD

Un avantage pour les développeurs, c’est que parmi les diagrammes, mermaid est capable de générer des diagrammes de classes, des diagrammes pour le versionnage, des diagrammes de gantt, etc. Seul petit bémol : les diagramme de cas d’utilisation / use case ne sont pas supportés.

On peut faire beaucoup de choses avec mermaid, donc je vous invite à consulter la documentation officielle de mermaid et à manier un peu le Live Editor de mermaid pour voir toutes les possibilités qu’il offre.

Comment importer mes documents au format odt/doc vers le langage markdown (.md) que Joplin utilise ?

Après avoir arrêté mon choix sur Joplin, il me restait une chose à faire : récupérer les cours déjà saisis au format odt.

Une chose à signaler sur Joplin : il sait importer quelques formats, dont le format de Evernote, mais il ne sait pas bien importer .odt. Après une première conversion de cours où j’ai copié collé et refait le formatage, je me suis dit qu’il me fallait un outil qui permette de convertir les fichiers de odt (Open Document Text) vers Markdown (MD).

J’ai trouvé un utilitaire pratique, qui fait exactement ce qui lui est demandé : pandoc, un convertisseur de document universel. Il s’installe en ligne de commande, et il vous suffit alors de taper une instruction. Je vous conseille de travailler sur une copie de vos fichiers odt, pas les originaux : une erreur dans la commande aurait vite fait d’effacer votre fichier d’origine.

Attention, il y a un côté un peu contre intuitif sur la commande de conversion où on créée un nouveau fichier à la volée : il faut préciser le fichier de sortie AVANT le fichier d’entrée.

Par exemple, la commande ci-dessous permet de convertir le fichier ODT algorithmes.odt en Markdown et de l’enregistrer dans un nouveau fichier algorithmes.md.

Notez le paramètre -o dans la commande. Notez aussi que le fichier de « sortie » markdown.md est le premier argument indiqué, puis on termine par le fichier à convertir.

pandoc -o algorithmes.md algorithmes.odt

L’utilitaire peut faire plein d’autres conversions et de diverses manières, je vous invite à lire la documentation de Pandoc si ça vous intéresse !

Une fois les conversions faites, il vous suffit ensuite, par exemple, de regrouper tous les .md au même endroit et de faire un import global au niveau de Joplin. Ou des les importer un à un…

Un usage qui va un plus loin que la prise de notes de cours

Joplin est très bon pour la prise de notes, et c’est une première bonne chose, mais ses fonctions lui permettent de rendre bien d’autre services.

Par exemple, Joplin supporte les liste de tâches. Si vous le synchronisez sur différents appareils (ce qui peut aller loin, vu qu’il propose des versions de l’applications pour Android et iOs), vous pourrez retrouver vos notes et vos todo-list partout. Je me suis mis ainsi à y noter quelques mots-clés correspondant à des choses sur lesquels je voulais aller me documenter depuis mon PC du domicile.

Il peut aussi vous servir par exemple pour rédiger des brouillons d’articles ou de la documentation. Sachant d’un part que markdown est déjà un standard des documentations dans le monde du développement et d’autre part qu’il existe des plugins d’import de Markdown pour WordPress (par exemple).

Bref, comme tout outil, plus vous l’utiliserez, plus vous trouverez des potentielles choses à faire avec. En ce qui me concerne, il est probable que je ne réouvre Writer que la prochaine fois que j’aurais une lettre à rédiger, ou autre document destiné à l’impression.