Dans les coulisses de l'équipe Desktop
Pour la sortie d'une fonctionnalité phare de l'application de synchronisation, je vous propose de rencontrer Erwan, Développeur Full Stack chez Cozy Cloud et responsable de cette application de la plateforme Cozy.
1. Que fais-tu chez Cozy Cloud ?
Erwan : Je suis responsable depuis 3 ans de l'application de synchronisation communément appelée l'application ou client Desktop. Ma mission au quotidien oscille entre le développeur et le product owner.
2. Que faisais-tu avant de rejoindre l'équipe ?
Erwan : J'étais développeur full stack dans une entreprise SSII à Grenoble (Sogilis) pour laquelle je développais sur deux services :
- une application destinée aux boitiers timelapse
- SquareScale qui permet de faciliter le déploiement d'une application sur un cloud.
Cela m'a permis d'acquérir de nouvelles compétences notamment en GO - techno utilisée chez Cozy Cloud.
3. Quelle est la raison de ta présence chez Cozy Cloud ?
Erwan : Je connais Cozy depuis ses débuts et plus précisément après une conférence chez Mozilla où Benjamin André, CEO de l'entreprise venait présenter la mission de Cozy Cloud. Je suis utilisateur de Cozy depuis son lancement en 2018. Pour mon usage personnel, c'est clairement l'automatisation de mes factures, documents de mes différents fournisseurs ou marques.
Comme Cozy Cloud est une plateforme open source, n'importe qui peut contribuer à la plateforme et ça m'a donné envie de développer mes propres connecteurs : Eaux de Grenoble, Citiez et Coopcyle.
C'est de cette façon que j'ai pu rentrer en contact avec Joseph, Product Owner à l'époque et apprendre que l'entreprise recrutait des profils comme le mien.
A cela s'ajoutait les valeurs portées par Cozy Cloud : projet libre et éthique qui n'exploitait pas les données de ses utilisateurs. Une plateforme simple pouvant aussi être utilisée par mes parents ! Et en parlant avec les développeurs lors d'un meetup qui était organisé à Grenoble, j'ai découvert qu'ils travaillaient sur des technos sympas et que l'équipe avait un très bon niveau technique.
4. Comment organises-tu ton travail ?
Erwan : La particularité de mon périmètre, c'est que je suis mono équipe et c'est un vrai challenge pour l'organisation. J'ai à la fois la casquette de Product Owner sur le développement de l'application de synchronisation de Cozy et aussi de développeur. Je relis les PR et j'interviens aussi beaucoup auprès de nos utilisateurs lors de la remontée des bugs.
5. Quels sont tes outils de travail ?
Erwan : Sur la partie desktop, j'utilise le langage Javascript et le framework Electron qui nous permet d’interagir avec le système d’exploitation du PC (intégration dans le menu, création de fenêtres, ouverture d’URL…) mais aussi :
-
le langage Elm, compilé en javascript, pour générer l’interface graphique de l’application (qui sera elle-même affichée par Electron dans des fenêtres natives)
-
l’éditeur de texte neovim, un éditeur modal pour le terminal très puissant et modulaire
-
le système de typage Flow qui met permet d’annoter notre code et ainsi détecter de nombreuses erreurs avant même que le code ne soit exécuté
-
le linter eslint qui m'aide à éviter les petits oublis et formate automatiquement le code, m'évitant ainsi d’avoir à gérer son homogénéité par moi-même
Enfin, pour tester l'application que ce soit sur mon propre PC ou sur une de nos 2 CI (i.e. Github Actions pour les tests sur Linux et macOS et AppVeyor pour les tests sur Windows), j'utilise principalement les librairies de test mocha et electron-mocha.
6. Pourquoi utiliser le service Cozy ? et plus particulièrement l'application de synchronisation
Erwan : Imaginez que votre PC prenne feu pour une quelconque raison... Avec Cozy, sa sauvegarde et sa synchronisation restent accessibles depuis n'importe quel autre PC ou page web.
7. De quoi es-tu le plus fier dans ton parcours chez Cozy Cloud ?
Erwan : le travail de stabilisation qui a eté fait sur la partie desktop, on partait de loin quand je suis arrivé il y a 3 ans. Il y a un immense travail de stabilisation qui a été effectué pour rendre l'application stable. On s'est pris pas mal de bugs au départ du fait de la complexité du produit mais aujourd'hui, on a une meilleure connaissance des problèmes. Et c'est une grande réussite !
8. Tu peux nous en dire plus sur la prochaine fonctionnalité de l'application et comment tu imagines son évolution ?
Erwan : Bien sûr ! Elle est en ligne et était demandée par nombreux utilisateurs : la synchronisation sélective. 🎉🎉
Pour le reste, on cherche à atteindre une stabilisation à l'état de l'art
et viser une architecture sur l'analyse de Dropbox sur le long terme sans repartir de zéro.
Pour installer Cozy Drive sur votre ordinateur, il vous suffit de cliquer sur ce lien et choisir l'application selon votre navigateur web.
9. Dernière question : raconte-nous ton plus gros "fail" chez Cozy Cloud
Erwan : Cette question n’est pas facile mais, sans aucun doute, je dirais l’introduction d’un correctif concernant le traitement des noms de fichiers sur macOS.
Anciennement, macOS utilisait le système de fichiers HFS+. Celui-ci a été remplacé par APFS dans les versions plus récentes de macOS mais nous prenons toujours en charge HFS+ dans le client Desktop. Le problème avec HFS+ c’est que les caractères spéciaux UTF-8 présents dans les noms de fichiers sont encodés avec la norme NFD (i.e. 2 caractères sont utilisés pour encoder 1 caractère à l'écran) quand la plupart des logiciels, notamment cozy-stack, utilisent la norme NFC (i.e. 1 caractère utilisé pour encoder 1 caractère à l’écran). On se retrouvait donc à synchroniser des changements inutiles simplement parce que le système de fichiers local de l’utilisateur change l’encodage des noms de fichiers !
Pour éviter ça, j’ai tenté une première approche - un peu naïve je l’admets - à savoir transformer tous les noms stockés dans notre base de données locales en utilisant la norme NFC et ajouter une méthode de traduction d’une norme vers l’autre pour les comparaisons. Cela a malheureusement créé de nombreux conflits dans les Cozy de plusieurs utilisateurs que j’ai mis plusieurs semaines à corriger à travers une première phase d’analyse de la situation et la création de scripts automatiques pour régler ces conflits pour les utilisateurs.
La présence d’un autre bug m’empêchant de corriger la situation directement ne m’a pas vraiment aidé non plus :)
10. Bonus : la veille tech d'Erwan
- Mozilla Hacks – the Web developer blog
Si tu veux rejoindre Erwan chez Cozy Cloud, nous recrutons des profils de Product Owner et d'ingénieurs Full Stack dans l'équipe Tech.
*Merci beaucoup Erwan