-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: usage of ESM imports (WIP) #6
chore: usage of ESM imports (WIP) #6
Conversation
BREAKING CHANGE: Drop support for Node.js v10
Salut @divlo, merci pour ta PR et tes explications ! J'ai vraiment apprécié ta démarche et tu as bien fait de me contacter rapidement avant de travailler plus longtemps sur cette mise à jour. En effet, je ne préfère pas modifier les imports pour la simple et bonne raison que toute modification va demander de la maintenance de mon côté : je vais devoir répondre à des questions de la part des étudiants. Par exemple pour ceux qui ont installés NodeJS v10 au début ça ne fonctionnera plus, ils vont m'envoyer un email et ça va me prendre du temps pour répondre. Ceux qui se demanderont c'est quoi cette syntaxe bizarre que je ne retrouve pas dans les tutoriels en ligne (qui sont vieux pour la plupart mais qui rankent le plus dans Google) etc. Les avantages que ça apportent sont subjectifs et surtout quasi-invisibles pour les utilisateurs, ça n'apportera rien de plus pour eux mais par contre ça va me demander de faire de la maintenance et de répondre aux emails. Bref le rapport entre le bénéfice et le coût n'est pas du tout favorable selon moi donc je ne ferai pas cette mise à jour, désolé ! C'est mon XP qui parle, chaque modification d'un logiciel, même mineure, peut entraîner un coût caché (tu le verras avec le temps) et là clairement, ce n'est pas quelque chose de suffisamment utile pour les étudiants pour que j'en paye le coût. En espérant que tu comprennes ma réflexion. A nouveau merci pour ton travail ! |
D'accord, je comprends ta réfléxion. 😄
Je ne pense pas que ça va demander de la maintenance, et au contraire ça va te simplifier les explications, au lieu d'apprendre 2 fois comment importer un fichier JS, dans 2 runtime différents, tu vas pouvoir leur apprendre une seule façon. Aussi ça fait partie de ton rôle de formateur, de ne pas leur apprendre du code legacy et à continuer à mettre à jour tes formations pour leur apprendre les meilleurs pratiques en 2021 et non pas de 2010 (2010, c'est l'année de sortie de Node.js).
Le vrai avantage, c'est de pouvoir leur montrer comment l'écosytème évolue, et comment s'apapter à ce genre de nouveautés quand on est un développeur, et surtout de ne pas leur apprendre quelque chose que l'industrie n'utilise plus.
Oui, ça va mettre du temps, mais comme tout en informatique, au début les posts sur stackoverflow vont continuer à utiliser
Je comprends, mais je ne pense pas que ça soit valide donc je te partage mon avis. 😄 |
Merci pour ton retour. Voici le mien. Non ça ne fait pas partie de mon rôle de formateur JavaScript d'expliquer comment utiliser NodeJS, le mettre à jour etc. C'est un outil à part entière. J'explique comment l'installer car on en a un peu besoin dans ma formation mais c'est tout, je ne forme pas à NodeJS. Si ça va me demander de la maintenance et de répondre aux emails comme je l'ai indiqué précédemment. Et ne pas leur enseigner l'ancienne façon de faire n'est pas bon non plus car ils seront nécessairement confrontés à du code legacy dans leur métier. Je n'enseigne que le JS côté navigateur dans ma formation. Et je ne considère pas NodeJS comme une compétence obligatoire pour les développeurs JavaScript. Si tu veux faire que du front-end ça ne sert à rien de connaître NodeJS. Si tu veux être full-stack JS, là oui évidemment. J'ajoute à nouveau que ça fait partie de mon rôle de formateur au contraire de leur apprendre à lire du code legacy car c'est ce que tu trouves en entreprise ! Aucune société ne crée de logiciels sur des technos trop récentes car elles sont instables, sujettes à des changements majeurs etc. C'est pour ça que le code legacy est légion dans les entreprises et qu'il est au contraire indispensable de savoir le lire et le modifier. Oui l'informatique évolue vite, les meilleures pratiques je les enseigne comme je les connais et dans l'état de l'art d'aujourd'hui. Je leur enseigne aussi comment en apprendre d'autres et se servir de la doc pour apprendre n'importe quel outil ou méthode qu'ils ne connaissent pas encore. Ce sont des core skills indispensables que j'enseigne. NodeJS n'est pas un core skill, c'est un outil de plus tout simplement. L'adoption d'une nouvelle pratique/techno/framework/outil/façon de faire dans l'industrie est très très longue, beaucoup plus longue que ce que tu penses ! Ce n'est pas 2-3 ans mais plutôt 5 à 10 ans dont on parle. Et encore ! A partir du moment où suffisamment de gens s'y intéressent et où les développeurs eux-mêmes adoptent cette techno... et à partir du moment où cette techno ne meurt pas avant son adoption. Par conséquent entre le moment de la création de la techno et son adoption peuvent s'écouler plusieurs décennies. La programmation évolue très vite mais l'adoption par les entreprises c'est tout l'inverse pour ne pas essuyer les plâtres de l'évolution d'une techno ! On attend toujours la maturité d'une nouvelle techno avant de l'adopter dans l'industrie, c'est pour ça que tu bosses 90% du temps sur du code legacy avec des technos dites "vieilles" etc. A moins de rentrer dans une startup avec des fondateurs technophiles qui créent un nouveau produit from scratch, tu n'es pas prêt d'utiliser les dernières technos dont on parle dans les news ! Je pense que c'est ce point là où tu te trompes principalement. Amicalement, |
Excuse moi pour cette réponse tardive, je vais fermer la PR et effectivement cette migration est encore trop tôt.
Si tu ne formes pas tes étudiants à Node.js, effectivement ce n'est pas la peine.
D'après moi Node.js reste une compétence bien apprécié pour un développeur Frontend, même si ce développeur ne fait aucun développement Backend, il sera amener à utiliser des outils conçu avec Node.js comme des CLI par example. Dans de grandes applications (même petites d'ailleurs), il est très rare de faire seulement du JavaScript vanilla sans framework/outils, au minimum on a la plupart du temps un linter (
Totalement d'accord, au fond, ce qu'on doit apprendre en tant que développeurs, c'est de résoudre des problèmes concrets de clients, et pour cela peu importe la technologie/outil qu'on utilise tant qu'on l'utilise correctement et ça fait ce qu'on lui demande. 👍
J'ai surement surestimer l'adoption d'une technologie, n'empêche que c'est quand même plus rapide que 10 ans, exemple des frameworks comme React.js ou Vue.js sont encore très jeune, et sont utilisés dans le monde entier dans des grandes entreprises. |
Salut @javascriptdezero 👋,
Cette PR permet l'utilisation des imports ESM contrairement aux imports CommonJS, ça a de nombreux avantages pour tes étudiants car ça permets "d'unifier" la façon d'importer du code, car ça fonctionne de la même manière dans les navigateurs et le nouveau runtime Deno. Quand je débutais sur Node.js, j'ai toujours trouvé bizzare, que les imports soient différents selon le runtime alors que ça reste le même langage, et je pense ça permettrais d'éviter ce genre de confusions.
Et entre nous même si c'est subjectif, la syntaxe est quand même mieux, c'est plus "agréable" à écrire.
Aussi la version 10 de Node.js sera bientôt "EOL (End Of Life")", normalement à la fin de ce mois-çi, et Node.js supporte les imports ESM depuis la version 12, qui est la prochaine après la v10 car la v11 est déjà plus maintenu car Node.js supporte seulement les versions paires dans le long terme, les versions LTS.
Aussi je pense qu'avec cette nouveauté de plus en plus de packets
npm
vont migrer vers cette syntaxe, et on peut imaginer un futur où seule la syntaxe ESM est utilisé pour l'import/export de modules JavaScript, ça va être long car tout l'écosystème dépend de CommonJS encore, mais ça se fera au fur et à mesure. 👍Notamment
jest
supporte déjà les imports ESM, et ils prévoient de les supporter encore mieux comme tu peux le voir sur cette issue : jestjs/jest#11167Je n'ai pas finis la PR, j'ai seulement mis à jour le premier exercice du niveau facile et j'ai déjà mis à jour le script pour crée un exercice, d'ailleurs remarque: Tu ne fais pas de tests automatisés pour ce script là, faudrait en faire, ça serait plus sécurisé par la suite. 😄
J'aimerais d'abord savoir si c'est quelque chose qui effectivement te tenterais ou pas du tout avant de continuer cette PR et de mettre à jour les imports/exports dans tout les exercices.
PS: Git affiche énorméments de changements car j'ai mis à jour
jest
à la dernière version etnpm
génére automatiquementpackage-lock.json
c'est pour ça, donc rien d'inquiétant. 😄