En route vers Cozy version 3

En route vers Cozy version 3

TL; DR:

Cozy est un projet de logiciel libre audacieux qui avance vite et bien : les applications progressent, les utilisateurs se comptent en milliers, la communauté est très active, les finances permettent une accélération des embauches mais le projet doit faire face à un défi : le coût d'hébergement. Jusqu'à présent, c'était un souci secondaire, mais alors qu'il faut passer à l'échelle et toucher à moyen terme des centaines de milliers voire des millions d'utilisateurs, cela devient une priorité.

La solution consiste à ré-écrire une partie du logiciel qui se situe côté serveur (le back-end). Cette ré-écriture a déjà commencé, et comme tout changement d'une telle ampleur, elle a un impact sur l'ensemble du projet Cozy.

Qui dit ré-écriture dit période de transition vers cette nouvelle version 3. En effet, dans un premier temps, la future version aura moins de fonctionnalités que l'ancienne.

Pour limiter l'impact inévitable de ces changements pour toutes les parties de l'écosystème Cozy, nous ferons co-exister la version actuelle et la V3 en parallèle pendant un certain temps, de façon à ce que tout le monde (utilisateurs d'instances hébergées, auto-hébergés, développeurs d'applications) puisse s'ajuster à la V3. Pour aider le plus possible la transition pour les développeurs, une nouvelle bibliothèque, Cozy-client-js est en cours de développement et sa documentation est déjà disponible|.

Version longue

Cozy est avant tout un projet industriel de logiciel libre. Cela veut dire que nous travaillons de façon très proche avec plusieurs types d'interlocuteurs : d'une part notre communauté et son écosystème de développeurs, et d'autre part les hébergeurs. Sans eux, sans l'ensemble de ces composants, le projet Cozy n'aurait pas de sens. Or, deux besoins reviennent très régulièrement. Le premier, en provenance des utilisateurs ayant un profil geek est "quand pourra-t-on avoir plusieurs utilisateurs sur un Cozy ?". Les hébergeurs, pour leur part, ont une priorité : avoir une plateforme Cozy "scalable", qui peut passer à l'échelle et permettant l'hébergement à moindre coût de centaines de milliers voire de millions d'utilisateurs.

Pour l'instant, nous ne pouvons pas répondre positivement à ces deux demandes, compte tenu des technologies utilisées pour fabriquer Cozy. Cela est aussi frustrant pour nos utilisateurs, nos partenaires que pour nous. C'est pour cela que nous préparons la version 3 de Cozy qui vise à réécrire la partie back-end (côté serveur) de Cozy pour répondre à ces demandes.

Ce passage en version 3 a déjà commencé et il avance bien. Bruno Nono Michel, qui mène cet effort avec l'équipe back-end, a déjà fait des avancées importantes, mais il reste encore beaucoup de chemin à parcourir avant que le nouveau logiciel back-end puisse remplacer complètement la version actuelle. Voyons ce que cela va apporter et comment nous comptons procéder pour cette transition.

Techniquement

Pour simplifier, la partie back-end de Cozy est actuellement écrite en NodeJS. Le passage en version 3 vise à la réécrire en langage Go.

Quelles implications pour les auto-hébergés ?

Les auto-hébergés vont avoir, dans cette nouvelle version, la possibilité d'ouvrir plusieurs instances Cozy sans que cela ne consomme beaucoup plus de RAM. Dans l'état actuel, héberger deux Cozies signifie qu'on va consommer deux fois la RAM d'un seul Cozy. Avec Cozy 3.0, ça ne sera plus le cas : la consommation marginale de ressources (c'est à dire de chaque instance supplémentaire) sera très limitée.

Par ailleurs, le fait de créer notre propre binaire en Go fait que le packaging Debian de Cozy dans sa nouvelle version sera bien plus facile à créer et à maintenir et finalement de bien meilleure qualité que la version actuelle. En voilà une bonne nouvelle !

Quelles implications pour les utilisateurs d'instance Cozy hébergées par Cozy ?

Le calendrier reste encore à affiner, mais nous envisageons l'approche suivante :

  1. Les membres de la communauté souhaitant tester une instance en version 3.0 sans avoir besoin de récupérer leurs anciennes données seront les premiers servis.
  2. Nous avons prévu de migrer nos utilisateurs d'instances Bêta vers la version 3 courant 3ème trimestre 2017.

Pour les hébergeurs et sociétés commerciales

Pour pouvoir commercialiser une offre à base de Cozy à prix raisonnable, les hébergeurs doivent s'assurer que les ressources CPU, RAM consommées sont raisonnables à grande échelle. Ça n'est pas le cas actuellement, mais ça le sera pour la version 3. Cela signifie que Cozy pourra toucher une population beaucoup plus large qu'actuellement, avec des prix réduits, ce qui est nécessaire pour contrer le modèle gratuit imposé par les sociétés pompant nos données personnelles.

Pour les développeurs d'applications tournant sur Cozy

Pour les développeurs d'applications existantes écrites en client-side, il y a une migration a effectuer, mais elle sera minime, car elles utilisent Cozy-browser-SDK, qui sera porté sur la version 3 en même temps qu'elle sera renommée en [Cozy-Client-JS](https://github.com/cozy/cozy-client-js). La documentation de cette nouvelle bibliothèque est déjà disponible et le tutoriel sera mis à jour dans les jours qui viennent pour refléter ce changement de bibliothèque. Pour compléter cela, un système de connecteurs sera disponible coté serveur.

On notera que les applications disposant d'une partie server-side nécessiteront un portage plus important car le support de NodeJS n'est pas prévu sur la feuille de route.

Comment se fera la transition ?

La version actuelle est maintenue a minima pour concentrer tous nos efforts sur la version 3 afin de la livrer au plus vite. Autrement dit, le feedback fourni par les bêta-testeurs sera surtout utilisé pour améliorer les applications dans leur version 3. Dans cette idée, nous n'allons pas créer de nouvelles instances Cozy en version courante. Les inscriptions reprendront dès que la version 3 sera mise en production.

Par ailleurs, la version 3 sera limitée dans un premier temps à la synchronisation de fichiers en attendant que l'on implémente tout ce qui est nécessaire pour offrir un jeu de fonctionnalités comparable à ce qui est actuellement disponible.

Voici un aperçu simplifié de la road map (feuille de route) que nous avons créée pour l'occasion :

Roadmap Cozy 3.0

  • Courant Q4 2016 - début de réécriture de la version 3.
  • Fin Q1 2017 - périmètre visé : synchronisation de fichiers :
    • Disponibilité des applications front Fichiers et Photos compatibles avec la version 3.
    • La stack en version 3 est mise en production en mode Bêta.
    • On accueille de nouveaux bêta-testeurs (mais pas encore possible d'importer leurs données depuis une V2).
    • Synchronisation des fichiers, photos et vidéos avec Linux, MacOS et Android.
  • Fin Q2 2017 - périmètre visé : agrégation de données :
    • Applications front : agrégation de données.
    • Début de migration des Cozy Bêta actuels vers la version 3.
  • Fin Q3 2017 - périmètre visé : Cozy, domicile numérique :
    • Fin de migration des utilisateurs Bêta actuels vers la version 3.
    • Amélioration du passage à l'échelle.
    • Les application Contacts et Agenda sont opérationnelles.
    • Les auto-hébergés peuvent déployer Cozy 3.0.

Autres questions & FAQ

Nous avons mis en place une FAQ sur le forum, pour pouvoir discuter du passage à Cozy version 3. Venez avec vos questions, nous ferons de notre mieux pour y répondre !