Definitelytyped: META - Mise Ă  jour de la version minimale de TypeScript

CrĂ©Ă© le 31 oct. 2019  Â·  39Commentaires  Â·  Source: DefinitelyTyped/DefinitelyTyped

Nous envisageons de déplacer la version minimale de TypeScript prise en charge sur DT de 2.0 à 2.8.

Raisons de le faire :

  • RĂ©duisez la friction pour l'utilisation des fonctionnalitĂ©s 2.8 populaires telles que les types conditionnels
  • Temps de CI considĂ©rablement plus rapide puisque nous testerions moins de versions antĂ©rieures
  • RĂ©duisez le taux de dĂ©sabonnement des utilisateurs sur les anciennes versions de TS, car ils n'aiment probablement pas le changement en premier lieu

Risques et résultats potentiels :

  • Un dĂ©veloppeur sur 2.7 ne pourrait pas utiliser un package DT Ă©crit aujourd'hui via l'acquisition automatique de type, mĂȘme si cela fonctionnerait trĂšs probablement de toute façon (~ 60% des packages actuels sont compatibles 2.0)

    • Les dĂ©veloppeurs TS peuvent l'essayer quand mĂȘme, et sont dĂ©jĂ  dans cet Ă©tat dans une certaine mesure en raison de nouveaux packages commençant le dĂ©veloppement Ă  la version minimale 2.8+

    • Les dĂ©veloppeurs JS n'ont aucune raison rĂ©elle de ne pas passer Ă  un JS LS plus rĂ©cent

Données:

  • La tĂ©lĂ©mĂ©trie indique que 99,9 % des utilisateurs de VS Code sont 3.0 ou plus rĂ©cents
  • La tĂ©lĂ©mĂ©trie indique que 97 % des utilisateurs de VS utilisent la version 3.0 ou une version plus rĂ©cente
  • 20% des packages DT ont dĂ©jĂ  optĂ© pour la version 2.8 ou plus rĂ©cente

Retour d'information?

Commentaire le plus utile

@sandersn , voici mes réflexions sur cette question

  • Avons-nous besoin de la fin de vie (EOL) pour la version TypeScript ?
    Bien sûr que oui. La prise en charge de chaque version de TypeScript créée nécessite des ressources excédentaires.
  • Pourquoi devrions-nous avoir un calendrier EOL ?
    _La meilleure pratique consiste Ă  ĂȘtre franc et clair avec l'Ă©tat de vos projets. Si vous ne soutenez plus un projet, ou si vous ĂȘtes en train de le terminer, faites en sorte que cela soit douloureusement Ă©vident pour quiconque tomberait sur votre code_ (c) Jared Smith.
  • Qu'est-ce qui devrait ĂȘtre utilisĂ© comme base pour le calendrier ?
    Analytique? Chaque décision basée sur l'analyse est un compromis. Chacune de ces décisions est une réponse à la question de savoir quelle partie de la communauté / entreprise allons-nous taquiner. WordPress a un problÚme similaire sur la version minimale de WP/PHP/MySQL qu'il doit prendre en charge. C'est une voie dangereuse.
    Calendrier d'outils dépendant ? Code visuel/Microsoft Azure/Angular/etc. Trop d'options et trop facile de commencer une nouvelle guerre sainte.
    Processus TC39 ? Bonne option, mais TC39 n'introduit pas et n'introduira pas EoL pour aucune fonctionnalité de langue.
    Node.js ? Node.js est un pilote pour la communauté JS avec un calendrier de publication/EOL. TypeScript utilise Node.js. Je vois cela comme la meilleure base pour le calendrier.
  • Comment crĂ©er le planning ?
    Option 1. Associez la version TypeScript à la version Node.js et annoncez une EOL similaire. Par exemple, il y a 2 ans, Node.js v8 a démarré LTS et TypeScript v2.6 a été publié , donc 2019.12.31 est EOL.
    L'option 2 Node.js a une politique de 12 + 18 mois avant la fin de vie. Nous pouvons utiliser la mĂȘme approche, 2,5 ans. Cela peut ĂȘtre trop long, mais pas moins de 2 ans.
    Option 3 Faire une réunion avec les décideurs et partager avec la communauté le résultat tel qu'il a été

Donc ma proposition ressemble à ça :

version | Libéré | Fin de vie dans 2,5 ans | Fin de vie dans 2 ans
-- | -- | -- | --
2.1 | décembre 2016 | juin 2019 | Décembre 2018
2.2 | février 2017 | août 2019 | Février 2019
2.3 | avril 2017 | septembre 2019 | Avril 2019
2.4 | juin 2017 | novembre 2019 | Juin 2019
2.5 | août 2017 | janvier 2020 | Août 2019
2.6 | octobre 2017 | mars 2020 | Octobre 2019
2.7 | janvier 2018 | juillet 2020 | Janvier 2020
2.8 | mars 2018 | août 2020 | Février 2020
2.9 | Mai 2018 | octobre 2020 | Avril 2020
3 | juillet 2018 | décembre 2020 | juin 2020
3.1 | septembre 2018 | mars 2021 | Août 2020
3.2 | novembre 2018 | mai 2021 | Octobre 2020
3.3 | janvier 2019 | juillet 2021 | DĂ©cembre 2020
3.4 | mars 2019 | août 2021 | Février 2021
3.5 | Mai 2019 | octobre 2021 | avril 2021
3.6 | août 2019 | janvier 2022 | juillet 2021
3.7 | novembre 2019 | mai 2022 | Octobre 2021

Tous les 39 commentaires

Quand unknown a-t-il été ajouté ? Allez grand ou rentrez chez vous ! Tous les any dans DT sont de loin la plus grande source de bogues "dactylographié aurait dû l'attraper" dans ces parties ici.

Quand unknown a-t-il été ajouté ?

3.0

toi. Donc, 99,9 % !

Je suis d'accord que nous devrions le faire. Faisons cela!

S'il vous plaßt, pourriez-vous plutÎt l'augmenter lentement au fil du temps ? 2.1 un mois, 2.2 le suivant, et ainsi de suite ?

Chaque version a quelques petits changements de rupture. Il sera plus facile de comprendre les problÚmes que cela apporte en y allant lentement et méthodiquement au début.

Les projets en mode maintenance n'ont souvent pas la bande passante nĂ©cessaire pour surmonter ces changements de rupture, surtout s'ils sont au cƓur de l'infrastructure.

Oui, s'il vous plaĂźt, les saisies node en particulier ont souffert du manque de fonctionnalitĂ©s plus rĂ©centes et de nombreuses solutions de contournement ~ hacks ~ ont dĂ» ĂȘtre utilisĂ©es.

Les projets @JoshuaKGoldberg en mode maintenance ne mettront probablement pas à jour les versions des définitions de type mois aprÚs mois, n'est-ce pas ?

@JoshuaKGoldberg rappelez-vous que la mise à niveau de DT ne supprime pas les définitions de type historiques qui ont déjà été publiées sur npm. Les versions historiques @types vivent pour toujours comme Mumm-Ra.

Vous pourrez compter sur ceux-ci, quel que soit l'endroit oĂč DT va en termes de version.

logique

Salut @RyanCavanaugh ,
Je soutiens cette idée à 100%. TypeScript v2.0 est un bloqueur pour un meilleur systÚme de type pour de nombreux packages, y compris node .
Je me soucie de la transparence et de la prévisibilité pour la communauté et les entreprises . Il y a des questions:

  • Quand pensez-vous qu'il est temps de changer la version minimale de TypeScript prise en charge ? Pendant la version TS 3.7 ?
  • Corrigez-moi si je me trompe, mais cela ressemble Ă  la fin de vie des versions TypeScript avant 2.8 ?
  • Pourrions-nous avoir un calendrier similaire Ă  Node.js ? Un tel document aidera les Ă©quipes de dĂ©veloppement Ă  pousser les entreprises Ă  approuver les ressources de dĂ©veloppement pour la mise Ă  jour.

Une raison pour laquelle c'est 2.8 et pas une version différente ? (Par exemple 3.0 pour unknown .)

2.8 est le moment oĂč les types conditionnels ont Ă©tĂ© introduits

Fortement en faveur.

S'il vous plaĂźt, pendant que vous y ĂȘtes, envisagez de mettre en place un calendrier (semi-) formel afin que la communautĂ© puisse compter sur l'augmentation prĂ©visible de la version minimale au fil du temps. Quelque chose comme : "Chaque annĂ©e en novembre, nous prĂ©voyons de mettre Ă  jour la version minimale du manuscrit Ă  la version de 18 mois avant. Veuillez planifier en consĂ©quence."

@donaldpipowitch
Parmi les utilisateurs pré-3.0, nous avons vu un groupe de personnes encore sur 2.8. (Et, bien sûr, les types conditionnels font de 2.8 une cible populaire pour les types DT, comme le souligne @IllusionMH .)

Nous prévoyons de revoir ce problÚme périodiquement car nous espérons que les gens continueront à mettre à niveau.

@galkin
Techniquement, les anciennes versions de Typescript ne sont pas du tout desservies, et ce changement est l'arrĂȘt du service de Definitely Typed. Et bien sĂ»r, les anciennes versions de Typescript peuvent continuer Ă  obtenir les versions existantes des packages DT. Ils ne recevront tout simplement pas de mises Ă  jour.

Cependant, ce n'est qu'un détail technique. Ce serait une bonne idée pour nous de produire un calendrier de type LTS. Nous n'avons pas encore commencé quoi que ce soit de ce genre. Dans ce cas, les données étaient suffisamment claires pour faciliter la décision a posteriori. Je ne sais pas encore comment prédire une bonne date pour les dépréciations futures.

Re : la date : Je dois de toute façon mettre à jour l'infrastructure DT pour la version 3.7, donc cela se produira le jour de la sortie de la version 3.7 dans le cadre de la version.

Ce serait une bonne idée pour nous de produire un calendrier de type LTS.

Je voulais juste faire écho, je pense que ce genre de calendrier est une idée vraiment solide.

@johnnyreilly, nous cherchons autour de Microsoft un précédent. Il n'y a rien de tel que Definitely Typé !

@RyanCavanaugh , des mises à jour ?

@galkin si vous avez un calendrier de dépréciation proposé, veuillez le publier sur ce fil afin que nous puissions en discuter.

@sandersn , voici mes réflexions sur cette question

  • Avons-nous besoin de la fin de vie (EOL) pour la version TypeScript ?
    Bien sûr que oui. La prise en charge de chaque version de TypeScript créée nécessite des ressources excédentaires.
  • Pourquoi devrions-nous avoir un calendrier EOL ?
    _La meilleure pratique consiste Ă  ĂȘtre franc et clair avec l'Ă©tat de vos projets. Si vous ne soutenez plus un projet, ou si vous ĂȘtes en train de le terminer, faites en sorte que cela soit douloureusement Ă©vident pour quiconque tomberait sur votre code_ (c) Jared Smith.
  • Qu'est-ce qui devrait ĂȘtre utilisĂ© comme base pour le calendrier ?
    Analytique? Chaque décision basée sur l'analyse est un compromis. Chacune de ces décisions est une réponse à la question de savoir quelle partie de la communauté / entreprise allons-nous taquiner. WordPress a un problÚme similaire sur la version minimale de WP/PHP/MySQL qu'il doit prendre en charge. C'est une voie dangereuse.
    Calendrier d'outils dépendant ? Code visuel/Microsoft Azure/Angular/etc. Trop d'options et trop facile de commencer une nouvelle guerre sainte.
    Processus TC39 ? Bonne option, mais TC39 n'introduit pas et n'introduira pas EoL pour aucune fonctionnalité de langue.
    Node.js ? Node.js est un pilote pour la communauté JS avec un calendrier de publication/EOL. TypeScript utilise Node.js. Je vois cela comme la meilleure base pour le calendrier.
  • Comment crĂ©er le planning ?
    Option 1. Associez la version TypeScript à la version Node.js et annoncez une EOL similaire. Par exemple, il y a 2 ans, Node.js v8 a démarré LTS et TypeScript v2.6 a été publié , donc 2019.12.31 est EOL.
    L'option 2 Node.js a une politique de 12 + 18 mois avant la fin de vie. Nous pouvons utiliser la mĂȘme approche, 2,5 ans. Cela peut ĂȘtre trop long, mais pas moins de 2 ans.
    Option 3 Faire une réunion avec les décideurs et partager avec la communauté le résultat tel qu'il a été

Donc ma proposition ressemble à ça :

version | Libéré | Fin de vie dans 2,5 ans | Fin de vie dans 2 ans
-- | -- | -- | --
2.1 | décembre 2016 | juin 2019 | Décembre 2018
2.2 | février 2017 | août 2019 | Février 2019
2.3 | avril 2017 | septembre 2019 | Avril 2019
2.4 | juin 2017 | novembre 2019 | Juin 2019
2.5 | août 2017 | janvier 2020 | Août 2019
2.6 | octobre 2017 | mars 2020 | Octobre 2019
2.7 | janvier 2018 | juillet 2020 | Janvier 2020
2.8 | mars 2018 | août 2020 | Février 2020
2.9 | Mai 2018 | octobre 2020 | Avril 2020
3 | juillet 2018 | décembre 2020 | juin 2020
3.1 | septembre 2018 | mars 2021 | Août 2020
3.2 | novembre 2018 | mai 2021 | Octobre 2020
3.3 | janvier 2019 | juillet 2021 | DĂ©cembre 2020
3.4 | mars 2019 | août 2021 | Février 2021
3.5 | Mai 2019 | octobre 2021 | avril 2021
3.6 | août 2019 | janvier 2022 | juillet 2021
3.7 | novembre 2019 | mai 2022 | Octobre 2021

Waouh, c'est incroyable ! Merci pour la réflexion que vous y avez consacrée.

Quelques petits points :

  1. Certainement Typed et Typescript sont des projets diffĂ©rents, bien qu'ils doivent avoir le mĂȘme calendrier EOL.
  2. Ce que signifie EOL pour DT est expliqué ci-dessus, mais ce n'est pas aussi clair pour TS. Nous n'avons jamais créé de version patch plus d'une version mineure à ma connaissance. D'un autre cÎté, nous n'avons pas recommandé les nouvelles versions de TS aux gens, sauf en tant que bonnes pratiques générales ou pour des solutions de contournement spécifiques.
  3. Étant donnĂ© que TS est livrĂ© dans le cadre de Visual Studio, un produit payant avec des contrats de support, nous devrons peut-ĂȘtre dĂ©finir une extension spĂ©cifique Ă  VS pour toute pĂ©riode de support open source dĂ©finie. Cela ne devrait cependant pas affecter la communautĂ© open source.

@DanielRosenwasser ça vous dérange de regarder ça quand vous avez le temps ?

2,8 est maintenant le nouveau minimum. 2.0 - 2.7 ne seront plus testés et les balises ts2.0 - ts2.7 ne seront plus mises à jour sur les packages @types/* existants. Les utilisateurs antérieurs à la version 2.8 qui installent @types/*@latest peuvent obtenir des types qui ne fonctionnent pas pour eux.

Je ne vais pas clore ce sujet car il y a des discussions en cours (et c'est d'ailleurs un méta-problÚme ?).

@sandersn cela signifie-t-il que la vérification qui vérifie généralement qu'une dépendance a une version supérieure ou égale (par exemple, un package arbitraire (2.x avec x> 1 faisant référence à un autre package avec x = 1) est désormais désactivée?

Demander parce que c'est un blocage majeur du dĂ©placement des typages de nƓuds vers l'avant.

@SimonSchick non, ce n'est pas dĂ©sactivĂ©; cela ne s'applique qu'aux en-tĂȘtes qui nĂ©cessitent >=2.8 .

En d'autres termes, vous ne pouvez pas mettre Ă  jour @types/node pour exiger 3.1 car il existe de nombreux packages qui spĂ©cifient 2.8 ou 2.4 - qui est traitĂ© comme 2.8. Mais vous pouvez certainement avoir besoin @types/node 2.8 maintenant. Cela signifie que vous pouvez utiliser des types conditionnels et que vous pouvez supposer que la sĂ©mantique 2.8+ s'applique lĂ  oĂč elle diffĂšre des anciennes versions.

En fait, la valeur par dĂ©faut est 2.8, donc ne pas avoir de version requise dans l'en-tĂȘte Ă©quivaut Ă  exiger 2.8.

@sandersn , pourrions-nous parler d'une nouvelle mise à jour de la version minimale ? Je pense que c'est le bon moment car la 3.8 est sortie.

Nous en avons discutĂ© en interne et nous penchons vers la prise en charge du calendrier de 30 mois de style nƓud. Mais je dois me coordonner avec l'Ă©quipe d'intĂ©gration de Typescript-VS, qui souhaite avoir un calendrier de support pour le nouveau-TS-dans-l'ancien-VS, donc je n'ai pas encore essayĂ© de relancer la discussion ; si nous nous retrouvons avec 30 mois, la prochaine dĂ©prĂ©ciation aura lieu en aoĂ»t, nous avons donc un peu de temps.

Mise à jour : J'ai parlé à l'équipe Typescript-Javascript sur VS et ils ont décidé d'un calendrier de 2 ans ou de 2,5 ans. Ils vont rassembler des données d'utilisation pour les aider à choisir entre les deux. J'ai également récupéré leur scénario - c'est le support de l'ancien-TS-dans-le-nouveau-VS.

Sur la base de nos donnĂ©es d'utilisation collectĂ©es prĂ©cĂ©demment [1], je prĂ©fĂšre une fenĂȘtre de 2 ans simplement pour rĂ©duire le fardeau de la maintenance. Il permet Ă©galement aux packages importants de commencer Ă  utiliser de nouvelles fonctionnalitĂ©s 6 mois plus tĂŽt sans effort pour mettre Ă  jour les personnes Ă  charge. Une fenĂȘtre de support courte n'a pas d'inconvĂ©nients pratiques que j'ai vus jusqu'Ă  prĂ©sent.

Cependant, le calendrier du nƓud peut amener les gens Ă  s'attendre Ă  une fenĂȘtre de 2,5 ans Ă  la place. Y a-t-il d'autres avantages de la fenĂȘtre plus longue ? InconvĂ©nients qui me manquent?

[1]
Données réimprimées d'en haut :

  • La tĂ©lĂ©mĂ©trie indique que 99,9 % des utilisateurs de VS Code sont 3.0 ou plus rĂ©cents
  • La tĂ©lĂ©mĂ©trie indique que 97 % des utilisateurs de VS utilisent la version 3.0 ou une version plus rĂ©cente
  • 20% des packages DT ont dĂ©jĂ  optĂ© pour la version 2.8 ou plus rĂ©cente

Je prĂ©fĂšre une fenĂȘtre plus courte; Ă  la fois pour des raisons de rĂ©duction de la charge de maintenance et compte tenu des donnĂ©es que vous avez dĂ©couvertes @sandersn.

Merci pour la mise Ă  jour!

Aussi pour une fenĂȘtre plus courte.

Une longue fenĂȘtre ne profiterait qu'Ă  ceux qui ne mettraient Ă  jour qu'une partie de leurs dĂ©pendances, mais jamais de tapuscrit, et cela ne devrait ĂȘtre qu'un trĂšs petit groupe.
La plupart du temps, les gens mettent réguliÚrement à jour toutes leurs dépendances (y compris le tapuscrit), ou pas du tout.
Ou l'inverse : la plupart des développeurs qui n'ont pas pris la peine de mettre à jour leur TypeScript depuis deux ans ne se soucient probablement pas du tout des nouveaux packages et des nouvelles définitions de type.
Donc, cela blesserait probablement beaucoup moins de personnes que vous ne le pensez - et cela empĂȘcherait l'ensemble de l'Ă©cosystĂšme d'Ă©voluer.

TL ; DR ; @sandersn , que pensez-vous de 18 mois ?

Mes pensées :

J'ai Ă©crit

L'option 2 Node.js a une politique de 12 + 18 mois avant la fin de vie. Nous pouvons utiliser la mĂȘme approche, 2,5 ans. Cela peut ĂȘtre trop long, mais pas moins de 2 ans.

mais je ne me souviens pas pourquoi j'ai pensé que 2 ans était la bonne période. Je ne peux pas justifier logiquement ces 2 ans. Maintenant, avec un esprit neuf, il me semble qu'il aurait dû y avoir ..., but not less 18 months .

Chaque version majeure couverte par le plan LTS sera activement maintenue pendant une période de 12 mois à compter de la date à laquelle elle entrera dans la couverture LTS. AprÚs ces 12 mois de support actif, la version majeure passera en mode "maintenance" pendant 18 mois supplémentaires. Avant Node.js 12, la période active était de 18 mois et la période de maintenance de 12 mois. (c) Plan de publication de Node.js

Motivation : chaque version de TypeScipt est d'abord publiée en tant que rc/beta. Ainsi, chaque version stable a un mode de maintenance dÚs le premier jour et 18 mois suffisent.

C'est logique. Mais si nous utilisons 18 mois comme fenĂȘtre, nous obsolĂšterons 3.1 en mars 2020. Étant donnĂ© que notre tĂ©lĂ©mĂ©trie a montrĂ© un nombre important d'utilisateurs VS toujours sur 3.1, je ne pense pas que 3.1 devrait encore ĂȘtre obsolĂšte.

Cependant, il est possible que ces chiffres aient changé depuis la fin octobre. Je vais découvrir ce qu'ils sont actuellement.

Les nombres d'utilisation pour 3.1 n'ont pas beaucoup diminué dans VS depuis fin octobre. Fait intéressant, 95% de l'utilisation est concentrée dans 3.9 - 3.4.

Je pense que 3.1 est toujours tellement utilisé parce que VS vous évitera de mettre à jour le texte dactylographié lors du téléchargement des mises à jour, mais je n'en suis pas sûr. Quoi qu'il en soit, ce comportement est susceptible de se poursuivre dans les futures versions de VS, ainsi que d'autres IDE qui ne sont pas mis à jour aussi souvent.

En rĂ©sumĂ©, pour prendre en charge 98 % des utilisateurs de VS, nous avons besoin d'une fenĂȘtre de 2 ans. Pour prendre en charge 95 %, nous n'avons besoin que d'une fenĂȘtre d'un an ! Mais il ne sert Ă  rien d'avoir quoi que ce soit entre les deux.

Je soutiens toujours 2 ans sur la base de ces données.

Il me semble que la discussion ici s'est terminĂ©e. Je vais opter pour une fenĂȘtre de support de 2 ans.

2.8 publié le 27 mars 2018 , je ne vais donc pas supprimer le support immédiatement. Mais je le ferai dans les prochaines semaines, et je mettrai à jour et fermerai ce problÚme quand ce sera fait.

J'ai un PR qui ajoute de la documentation au README au #42834.

J'ai traduit les modifications de la documentation en russe au n° 42881

Quelqu'un pourrait-il aider avec les changements de traduction en :

  • LISEZMOI.cn.md
  • README.es.md
  • LISEZMOI.ko.md

@kingwl @armanio123 @saschanaz sont les dactylographes les plus impliqués que je connaisse qui sont des locuteurs natifs pour ces trois langues.

(Bien sĂ»r, n'hĂ©sitez pas Ă  l'ignorer si vous ĂȘtes trop occupĂ©.)

La tùche ajoute-t-elle la traduction des modifications dans #42834 ?

J'ai traduit les modifications de la documentation en russe au n° 42818

C'est le #42881 😁

Oui.

La tùche ajoute-t-elle la traduction des modifications dans #42834 ?

J'ai traduit les modifications de la documentation en russe au n° 42818

C'est le #42881 😁

Fixé. Désolé, j'ai fait la faute de frappe.

Mise Ă  jour : en mĂȘme temps que la version 3.9, je viens de supprimer le support de la version 2.8.

J'ai retardé la dépréciation pour deux raisons.

1 Retard général covid-19.

  1. Nous sommes en train de basculer l'infrastructure d'éditeur de types vers un dépÎt unique qui publie dans l'espace de noms @definitelytyped/* . La mise à jour de la version fait désormais partie de ce monorepo. Malheureusement, nous attendons toujours que le bureau MS open source rende le monorepo open source, mais cela ne devrait pas tarder.

MĂȘme si la version 4.0 ne sera pas en mai, je supprimerai toujours la prise en charge de la 2.9 en mai comme prĂ©vu. Cela devrait ĂȘtre un peu plus facile avec la nouvelle configuration.

Cette page vous a été utile?
0 / 5 - 0 notes