Retours sur la nouvelle architecture

Contexte

Nous souhaitons développer une nouvelle version majeure de Cozy qui puisse répondre à de nouveaux besoins :

  • permettre aux auto-hébergé·e·s d’avoir facilement plusieurs instances de Cozy sur le même serveur;
  • diminuer grandement la consommation de ressources par instance Cozy hébergée pour en réduire le coût;
  • améliorer la sécurité globale;
  • revoir certains aspects de la plateforme qui ne nous plaisaient pas.

Pour cela, nous allons nous lancer dans un grand chantier et une première étape a été d’écrire un document d’architecture pour expliquer ce que nous voulons faire. Ce document d’architecture est disponible ici : Nouvelle architecture Cozy. Avant de passer au développement, il nous semblait particulièrement important de discuter avec notre communauté des choix faits dans ce document. Nous avons eu de nombreux retours, très variés. En voici une très brève sélection :

D’ailleurs, Caddy en reverse proxy, c’est un choix sympathique.

J’attends avec impatience de voir le résultat, je reproche un peu à Cozy d’être trop gourmand pour faire tourner l’essentiel (mail, calendar, file, music, une ou deux apps) sur un raspberry. Si je peux faire tourner deux trois utilisateurs sur un raspberry 3 (on un futur 4 en espérant qu’ils passent à 2g de RAM) ce serait parfait !

Rgarrigue sur le forum

Bonjour Bruno, Comme j’ai eu maintes fois l’occasion de le dire ici et sur le forum, je vois les problèmes suivants : - Multi-utilisateurs : indispensable dans un contexte familial, asso, etc - Fichiers stockés dans CouchDB, donc en cas de crash, plus d’accès aux fichiers (me corriger si je me trompe), c’est juste un NoGO pour moi.

Romu sur LinuxFr.org

Je note le passage à Go et je trouve ça vraiment cool! En tout cas personnellement ça me donne beaucoup plus envie que de développer du backend en js. Et l’idée de passer en multi-utilisateur me plait bien :-)

CrEv sur LinuxFr.org

Bilan sur les retours

Tout d’abord, ils nous ont conforté dans certains choix pris. Par exemple, nous avons eu beaucoup de retours sur ces 2 points, ce qui montre que nous avons raison d’en faire des priorités :

  • une installation plus simple et plus robuste, qui passe par une amélioration du packaging debian
  • stocker les fichiers directement sur le système de fichiers, et non plus dans CouchDB comme actuellement

Nos utilisateur·trice·s sont également très intéressé·e·s par la possibilité d’héberger plusieurs instances Cozy dans un contexte familial. Ces différents Cozy doivent pouvoir fonctionner sur le même serveur, mais il est important que chaque utilisateur·trice reste maître·sse de ses données. En particulier, le jour où un membre de la famille quitte le foyer, il/elle doit pouvoir emporter ses données avec lui/elle (déplacer son instance Cozy sur un nouveau serveur par exemple).

D’un point de vue plus technique, nous avons eu beaucoup de questions sur le choix du langage Go. La quasi-totalité des personnes concernées nous ont expliqué que ce langage faisait sens, mais voulait savoir si nous avions considéré d’autres langages, comme Rust, Elixir, Python, etc. Nous avons choisi le langage de programmation en fonction de différents critères, allant des performances à la communauté, et Go nous paraît être le meilleur compromis au final.

Nous avons décidé de publier le document d’architecture sans attendre qu’il soit complet, car nous allons commencer à développer et il est beaucoup plus facile de prendre en compte les retours de la communauté tant que nous nous sommes pas encore plongés dans le code. Certaines parties du document sont encore très superficielles, mais ont suscité beaucoup d’intérêt. C’est notamment le cas de la gestion du contrôle d’accès et des permissions et c’est une très bonne chose. Les retours que nous avons eus nous aident à mieux cerner tous les besoins et à mieux prioriser les différents essais que nous allons effectuer pour trouver la solution idéale.

Certaines personnes souhaitent que l’on aille plus loin dans cette nouvelle version, par exemple, avec des fonctionnalités classiques des réseaux sociaux. Même si c’est très intéressant, nous n’avons pas les moyens d’aller vers ces cas d’usage pour le moment. Nous avons déjà des challenges très importants devant nous et nous éparpiller davantage serait bien trop risqué.

En parallèle, nous avons également fait venir dans nos bureaux Jan Lehnardt, expert CouchDB, pour nous aider avec cette base de données. Il a pu nous conforter sur ce choix, nous donner de la visibilité sur les nouveautés de CouchDB 2.0 et nous expliquer les détails internes qui peuvent avoir des impacts de performances importants sur nos cas d’usage. Nous sommes très satisfaits de cette collaboration et Jan a été très enthousiasmé par Cozy.

Ainsi, nous allons pouvoir commencer le développement de la nouvelle architecture en nous sentant en pleine confiance, grâce aux différents échanges que nous avons pu avoir ces dernières semaines. Nous avons la chance d’avoir une communauté très active et nous lui en sommes très reconnaissants !