klee-contrib/focus4

v11

Closed this issue · 0 comments

JabX commented

Après 1 an et demi de v10... voici le moment de commencer à discuter de la suite.

Clairement, on a jamais attendu des versions majeures pour introduire des nouvelles fonctionnalités avec des breaking changes, donc ce n'est pas vraiment la raison de faire une v11.

Le but, c'est de faire le ménage et de se débarrasser de tout ce qui est obsolète/déprécié. Dans l'ordre de priorité, cette version s'occupera de :

Se séparer de react-toolbox

La v10 a fait la première étape en wrappant entièrement la librairie, en premier lieu pour uniformiser le CSS, mais aussi pour anticiper ce moment. Ca fait longtemps qu'il faut le faire, on a de plus en plus d'incompatibilité avec (dernière en date : PostCSS 8).

L'objectif est de réintégrer plus ou moins à l'identique la librairie dans @focus4/toolbox, en résolvant les pb de compatibilité et en uniformisant le CSS avec le reste de Focus.

C'est la tâche la plus longue mais il n'y a aucun obstacle à résoudre avant de pouvoir commencer. Selon tout vraisemblance, la migration sera progressive sur la fin de la v10 pour être terminée pour la v11.

Supprimer les imports en "focus4"

C'était du legacy déjà en v10, le plan a toujours été de les supprimer en v11. Le problème, c'est qu'aujourd'hui il n'y a aucun moyen d'expliciter à Typescript que certaines dépendances de dépendances doivent remonter dans les auto-imports (l'équipe y est assez étrangement totalement opposée, c'est pas vraiment leur genre d'habitude). C'est déjà pénible pour les choses qui n'étaient pas dans "focus4" avant (ex : @focus4/toolbox), mais la si on enlève tout sans avoir de solution pour ça ce n'est pas vraiment possible.

MobX 6

Cette version ne se base plus sur les décorateurs pour poser des observables, mais sur une fonction a appeler dans le constructeur de la classe en listant (ou pas...) les propriétés observables/computed et les actions. Enfin, si, on peut toujours avoir des décorateurs mais il faut quand même appeler une fonction dans le constructeur. C'est nul, mais ce changement a été forcé par la standardisation du JS qui a décidé que l'implé actuelle des décorateurs est définitivement incompatible avec le standard........ Y a ça, mais il y a aussi des "évolutions" de mobx-react ou il a été dit que useObserver était "trop compliqué" et donc a été déprécié alors que c'est genre la brique de base pour relier React et MobX... bref sur ce coup là on essaie d'attendre le plus tard possible histoire que les problèmes se résolvent tous seuls dans un hypothétique MobX 7...

Déplacer tout ce qui est déprécié dans @focus4/legacy

Genre classAutorun, l'ancien routeur...

Remplacer react-pose par framer-motion

La librairie d'animation qu'on utilise a été remplacée par une autre qui est nettement mieux il y a ~1 an et demi mais j'ai toujours aujourd'hui des problèmes pour reproduire tout ce qu'on fait avec l'ancienne. Il y a une branche sur le repo qui contient déjà la migration, donc à priori dès que ça se débloque ça sera intégré dans Focus, potentiellement avant la v11.

Arrêter IE11

Je le met en dernier parce qu'on est pas forcément obligé de le faire, mais ça semblerait être le bon moment. Ca nous aiderait pas mal à optimiser la librairie, réduire les temps de build, supprimer des hacks... D'ailleurs ni MobX 6 ni framer-motion ne sont pas défaut compatibles avec IE11 (mais il y a un mode dégradé), donc si on joint ces mises à jour à la v11, ça serait logique de le faire maintenant. On se situe pile au moment ou Microsoft arrête le support de l'ancien Edge et force le nouveau chez tout le monde, qui a un mode "IE11" pour les sites legacy.