Closed enguerran closed 6 years ago
Nous venons justement d'en discuter avec @goldoraf, mais je vais le laisser répondre pour ne pas trahir sa vision. Nous avons aussi discuté de ce point:
Nous sommes plusieurs à nous poser la question [...]
On va essayer de mettre en place au prochain sprint de quoi clarifier la vision technique globale des différents sujets qui impactent les équipes front. Si ça marche on devrait tous se poser moins de questions pour la suite.
J'ai mis à jour le commentaire pour plus d'explications.
Je ping @sebn tant que j'y pense. Il me semble que les évolutions de cozy-client-js le concernent lui aussi directement, dans la mesure où cozy-client-js est utilisé côté desktop.
Ça me semble être une bonne idée. Par contre je pense que vu l'impact il faudrait en parler plus largement.
@sebn a écrit :
Par contre je pense que vu l'impact il faudrait en parler plus largement.
Est-ce que tu peux être plus explicit ?
J'essaie de clarifier :
vu l'impact → L'impact de la suppression de fonctionnalités de notre principale lib JS.
en parler plus largement → À une audience plus large. Dans le doute je dirais tout le monde en interne. Au delà de nos équipes dans un second temps si ça touche réellement d'autres gens que nous.
C'est mieux ?
Oui, ça me permet de rectifier quelques ouïe-dires :
Concernant le point 1.
:
Est-ce que ça te parait convenable ? Si non, que proposerais-tu pour The Plan ?
Merci pour les précisions.
J'imaginais les critères de découpage suivants :
Avec le peu de vision que j'ai actuellement, j'aurais séparé principalement le support offline et le middleware redux, sans toucher au partage et aux intents pour l'instant. L'offline et la partie redux sont d'ailleurs probablement les fonctionnalités qui ont le moins de chance d'être utilisées prochainement côté desktop, ce qui n'a bien sûr aucun lien 😛
Bref, pour y voir plus clair, je crois que je ferais surtout un état des lieux des apps / clients et de ce qu'ils utilisent / pourraient utiliser. Mais vous avez probablement une vision plus claire que moi là-dessus vu que vous touchez à la plupart des apps en question.
le support de v2 : sauf erreur de ma part, il n'y a pas de rétrocompatibilité qui fonctionne, donc autant alléger la codebase.
Ping @aenario
Merci de votre patience, je vais m'efforcer de clarifier mes intentions au maximum.
A l'origine, l'idée de redux-cozy-client était simplement de nous épargner tout le boilerplate que nécessite l'utilisation de redux dans nos apps, en particulier nos créateurs d'actions asynchrones un peu lourdingues.
L'objectif final, fortement inspiré par React-Apollo, est de disposer d'un Higher-Order-Component pour wrapper certains composants en déclarant les documents dont ils ont besoin, et que ce HOC prenne en charge le dispatch des fetches d'une part, et injecte des props dans le composant avec les data demandées, plus des indicateurs de l'état des fetches, plus des actions liées aux données (fetchMore, createDocument, ...). La doc, qui nécessite encore d'être étoffée, donne quelques exemples d'utilisation.
Bien sûr, même s'il est très intéressant pour nous de disposer ainsi d'une lib taillée pour (p)react, d'autres développeurs pourraient vouloir utiliser une autre lib, et c'est pour ça qu'il a toujours été clair dans mon esprit que redux-cozy-client ne devait être qu'une surcouche à cozy-client-js. A noter également que redux en soi n'est pas lié à react, et peut donc s'utiliser avec d'autres libs (certains le font avec angular notamment).
Dans sa première version, on maintenait donc simplement dans un store redux le state des fetches en cours de cozy-client-js, et le résultat de ces fetches (les data) sous une forme normalisée.
Et puis, compte tenu de certains petits défauts de cozy-client-js et/ou de l'API côté stack qui me ralentissaient (essentiellement un manque d'homogénéité dans les réponses), j'ai fini par mettre un wrapper au-dessus de cozy-client-js, dans le but de documenter d'une certaine façon ces défauts afin de les corriger ultérieurement. Puis est venu le moment de l'implémentation du partage, et comme nous ne savions pas trop où nous allions au début, nous avons préféré laisser le code se stabiliser avant de l'intégrer à cozy-client-js. Enfin, tout récemment nous avons dû retravailler sur le offline, et l'avons réintégré à redux-cozy-client car l'organisation actuelle de cozy-client-js n'est pas idéale pour y intégrer le offline (il faudrait des ifs partout à moins d'un refacto majeur). Voilà pour l'état des lieux, du code en tout cas.
Pour des raisons de simplicité vis-à-vis de la communauté, il parait préférable de n'avoir qu'une seule lib à mettre en avant, dont le nom serait simplement cozy-client, et dont certaines parties (la couche redux, le offline) seraient optionnelles. On pourrait voir ça comme un cozy-client-js v2, en 3 parties : un client pur proche du cozy-client-js actuel mais corrigeant ses quelques défauts, une surcouche redux de state local, et un binding react (cozyConnect
), en attendant de développer des moyens de connexion à d'autres libs.
Ma proposition donc, afin d'aboutir au plus vite à ce résultat, tout en nous laissant le temps de laisser la lib mâturer, et de ne pas forcer tout le monde à migrer tout de suite, serait de laisser cozy-client-js en l'état (modulo les éventuels correctifs/new features absolument nécessaires tout de suite) et de tranquillement en rapatrier le code par petits bouts façon puzzle dans redux- cozy-client.
What do you think of this @enguerran @gregorylegarec @sebn (et les autres) ?
Ça me parait très bien 👍
Découpage de cozy-client en 3 couches :
Donc ça nous fait 3 étages comme le Soyouz.
J'ai mis à jour le commentaire d'origine pour tenir compte de ces nouvelles informations.
Idem, très bien. 👍 Et c'est super de le documenter ici.
Je crois savoir que @goldoraf travaille sur la documentation : un document de référence doit voir le jour bientôt https://trello.com/c/RJPglgIH
C'est pour cette raison que je ferme l'issue. More to come, stay tuned!
Nous sommes plusieurs à nous poser la question de l'avenir de notre bibliothèque de connexion à la stack gozy. Quel est le plan ?
[EDIT 19-10-2017]]
Je reprends les informations données par @goldoraf :
objectif
Une bibliothèque d'accès à la stack composée de 3 étages :
feuille de route
cozy-client-js
le temps de sortir une première release complète