Avant de voir les derniers développements d’Evernote, parlons de l’éléphant dans la pièce (enfin, de l’autre éléphant).
Les sept derniers mois ont été riches en bouleversements et des utilisateur·ice·s nous ont fait part de leur incertitude quant à nos intentions à long terme pour Evernote. Pour être clair : Bending Spoons a pris les rênes pour aider Evernote à prospérer à nouveau et non pour gagner rapidement de l’argent. Notre vision à long terme nécessitait malheureusement de prendre des mesures difficiles, mais sans lesquelles Evernote n’aurait pas survécu et encore moins prospéré. En fin de compte, Evernote en sortira beaucoup plus fort. En effet, alors qu’il y a quelques mois à peine, le sort d’Evernote était plutôt incertain, nous pouvons maintenant envisager l’avenir à long terme avec optimisme.
Notre objectif est de faire en sorte qu’Evernote soit pour vous comme un deuxième cerveau sécurisé et fiable. Une base de données rapide et infaillible contenant vos informations les plus précieuses, que vous pouvez facilement récupérer quand et où vous voulez. Cette idée n’est pas nouvelle, puisque c’est la base sur laquelle Evernote a été construit il y a près de 20 ans. Mais en tant que gérants de l’entreprise, notre priorité immédiate est de rendre les fondations beaucoup plus solides et de concrétiser cette vision partagée depuis des décennies.
Ainsi, la question qui se pose à nous est la suivante : comment pouvons-nous vous fournir le produit ultra-fiable et rapide dont vous avez besoin ? La réponse est longue et complexe, mais je ferai de mon mieux pour l’exprimer dans cet article et dans de futures communications.
Un dernier mot avant de commencer : ce qui suit n’est en aucun cas exhaustif. Dans cet article, je me limiterai à trois domaines clés, mais il se passe beaucoup d’autres choses que vous découvrirez en temps voulu.
Une première étape importante : la vitesse et la synchronisation
Chaque voyage commence par un premier pas. Nous avons fait le nôtre en mai 2023, quand nous avons lancé le nouveau processus de synchronisation qui alimente la modification en temps réel (RTE). Notre objectif était de vous offrir la synchronisation de notes la plus rapide à ce jour avec une modification de notes simultanée et fluide sur plusieurs appareils. Nous voulions également mettre fin aux conflits de note.
Pour réaliser cet ambitieux projet, nous avons dû mettre en place une toute nouvelle structure de données (types de données répliquées sans conflit, ou CRDT) alimentée par une implémentation solide (Yjs), qui nous permet de synchroniser instantanément le contenu de vos notes sur tous les appareils, ce qui était impossible avec l’ancien format de note de style HTML.
J’ai le plaisir d’annoncer que nous avons terminé le déploiement de cette structure et de ce système inédits. La période de transition n’a pas été de tout repos, mais la mise en œuvre de quelque chose d’aussi fondamental que la RTE entraîne inévitablement des perturbations, même après une préparation approfondie et un dépannage préventif. Nous étions prêts à rencontrer quelques obstacles en cours de route et avions confiance en notre capacité à les surmonter. Nous avons beaucoup appris grâce à cet effort. Et l’expérience utilisateur d’Evernote est désormais considérablement plus fluide et fiable pour la plupart des utilisateur·ice·s.
Rapidité : corriger les derniers problèmes
Bien qu’elle soit un vrai plus, l’introduction de la nouvelle synchronisation, qui alimente la RTE, a entraîné un ralentissement du chargement des notes pour certain·e·s utilisateur·ice·s. Mais ce n’est pas étonnant, car la première fois qu’une note est ouverte avec le nouveau système de note RTE, elle doit passer par un processus de conversion et son chargement prend quelques secondes. Après cette première fois, les notes devraient s’ouvrir et se synchroniser instantanément.
Cependant, certains utilisateurs ont signalé des temps de chargement des notes nettement plus lents, même après la conversion des notes en RTE. Le problème était causé par le traitement des notes du système dans certains cas très particuliers, ce qui entraînait la génération anormale d’historiques volumineux. Outre les temps de chargement lents des notes, nous avons observé que cela augmentait la probabilité de rencontrer d’autres problèmes, comme la disparation de contenu et la synchronisation des tâches.
Une fois la cause identifiée, nous avons rapidement pris des mesures. Cela impliquait la correction de trois bugs liés aux performances dans le backend (correctifs publiés les 15 juin, 27 juin et 20 juillet, nous avons depuis apporté ces correctifs à la communauté open source dans la bibliothèque Yjs). Presque immédiatement, nous avons constaté le retour de temps de chargement normaux des notes sur les comptes concernés. Nous encourageons toute personne rencontrant encore un problème à vérifier qu’elle utilise la version la plus récente d’Evernote, puis à contacter l’assistance si le problème persiste.
Navigation : des changements importants en coulisse
Certaines des améliorations que nous avons apportées se situent au cœur du produit, loin de l’expérience quotidienne de l’utilisateur dans l’Éditeur. La plus importante d’entre elles est la réécriture complète du système de navigation Evernote Desktop et Web, qui a eu lieu fin juillet (version 10.59). Sur mobile, le système de navigation a également été fortement modifié au cours de la même période (version 10.52). Essentiellement, le système de navigation détermine la façon dont les différents composants de l’application sont liés les uns aux autres. Sur mobile, le changement est presque invisible, même si la navigation utilise désormais des API natives, ce qui contribuera à améliorer les performances. Le seul indice se trouve dans la nouvelle structure de l’URL sur desktop :
www.evernote.com?b=<notebookID>&n=<noteID> →
www.evernote.com/notebook/<notebookID>/note/<noteID>
Ce qui ressemble à une modification superficielle est en fait la clé qui déverrouille notre capacité à étendre facilement le système de navigation à mesure que le produit évolue.
Migration du monolithe
Un autre changement invisible mais essentiel, qui demande beaucoup de travail à plusieurs équipes, est la migration du monolithe. Si vous me le permettez, je vais entrer dans les détails techniques.
Le statu quo
Le monolithe est une ancienne application Java Enterprise Edition (JEE) qui exécute l’essentiel de la logique métier d’Evernote sur le backend. En tant que tel, il alimente le stockage et la synchronisation de plusieurs entités, notamment les notes.
Avant de commencer notre travail, la base de données fonctionnait sur la même machine que la couche application (JEE pour l’application, MySQL pour la base de données). Cela rendait les machines extrêmement lourdes et difficiles à gérer. La base de code et l’infrastructure sous-jacente avaient accumulé une dette technique importante. Heureusement, des microservices comme la RTE nous aident à nous éloigner de cette approche.
Quelle est la prochaine étape ?
Notre approche consiste à nous concentrer sur le nettoyage de la base de code et à nous acquitter de la dette technique. Nous réalisons déjà des progrès significatifs avec l’infrastructure. En effet, nous avons récemment réécrit l’intégralité de l’infrastructure de production à l’aide de technologies modernes.
En la réécrivant, nous avons également séparé l’application et la base de données. La base de données est en cours de migration vers une nouvelle infrastructure beaucoup plus moderne, ce qui améliore considérablement la sécurité et la fiabilité. Avant, la configuration était gérée par Puppet. Maintenant, tout est regroupé dans un conteneur Docker. Ce nouvel environnement de production ressemble davantage à celui du développement, ce qui est utile pour les développeur·se·s et signifie qu’il est beaucoup plus facile de vérifier que les changements que nous implémentons ont l’effet souhaité. En bref, moins d’erreurs et une correction plus rapide de celles qui se produisent.
Nous avons encore du pain sur la planche
Au cours des prochains mois, nous redoublerons d’efforts pour résoudre les bugs afin de garantir une expérience parfaitement fluide sur toutes les plateformes. Par ailleurs, nous prévoyons également d’améliorer la fiabilité de la synchronisation des tâches et d’améliorer considérablement la rapidité dans le client Evernote (les premiers tests donnent d’excellents résultats sur le client Web, j’espère pouvoir les partager avec vous bientôt).
Et bien que les fonctionnalités de base et l’expérience soient notre priorité numéro un aujourd’hui, cela ne signifie pas que nous négligeons l’importance de l’innovation. Un petit groupe d’utilisateur·ice·s (employé·e·s et expert·e·s Evernote) teste déjà la recherche assistée par l’IA, et les retours ont été enthousiastes et encourageants. Mais pour garantir la réussite de nos plans ambitieux, nous devons d’abord faire en sorte que les fondations soient inébranlables. Après cela, les possibilités seront infinies.
À bientôt,
Federico