web-dev-qa-db-fra.com

Convaincre les gens de ne pas utiliser de "fin de vie" Python 3.x version

Le contexte

Dans ma compagnie, nous avons un important Python package écrit en Python 2. Nous prévoyons maintenant de la migrer sur Python 3 (nous ne nous soucions pas de le garder Python 2 compatible).

Je suis un développeur junior et mes collègues sont des personnes âgées, qui n'ont pas de fond de science informatique solide.

Problème

Au cours du processus de planification, nous devions répondre à la question du minimal Python Version que nous voulons prendre en charge. La réponse choisie était Python 3.4, pour des raisons internes . Cependant, Python 3.4 atteindra la fin de la vie dans 5 mois (même avant même que ce paquet soit porté sur Python 3)

Je n'aime pas l'idée de soutenir a Python qui n'est pas prise en charge par Python organisation, mais je ne trouve plus d'arguments concrets contre celui-ci, d'autres que "ça ne se sent pas juste".

Les arguments que j'ai pensés sont:

  • nous aurons moins Python versions à prendre en charge: Si nous commençons la version 3.5, nous devons prendre en charge une version inférieure, 3,6 deux autres versions, etc.
  • nous pouvons utiliser de nouvelles fonctionnalités de langue

À propos du premier, d'autres ont déclaré que nous ne testerions que la version minimale prise en charge de notre CI et que les développeurs de ce paquet utiliseront la dernière fois que notre environnement de développement local. C'est dangereux en termes de test, mais je dois admettre des différences entre Python Versions 3.x ne brise pas autant de choses, en particulier donnant ce que ce paquet fait.

À propos du deuxième argument, les gens ne sont pas vraiment conscients des nouvelles fonctionnalités de Python 3.5 et plus et ont tendance à dire: "Nous le faisons aujourd'hui dans Python 2, donc je ne vois pas le point d'avoir de nouvelles fonctionnalités ". En outre, dans le contexte de ce paquet, il n'y a pas de nouvelles fonctionnalités que je peux vraiment faire de la publicité comme étant super sympa (comme async trucs par exemple) .

Des questions

  • Quelles sont les conséquences de l'utilisation d'un Python 3.X qui a atteint la fin de la vie? Je peux trouver des ressources sur Python 2 vs Python 3, mais je ne peux pas vraiment trouver quelque chose de spécifique à Old Python 3.x libellés vs neufs.
  • Quelles sont les stratégies pour sensibiliser le public à la mise à jour des logiciels? Comment changer l'état d'esprit des gens pour ne pas le trouver normal d'utiliser des outils obsolètes?
4
filaton

Le cycle de vie du développement de logiciels est plus que le développement - il implique également de la maintenance et du déclassement ou du remplacement du logiciel. Donc, demandez "qu'en est-il de x ans" est généralement une question judicieuse.

La grande raison pour laquelle vous souhaitez utiliser une version Pythonpris en charge est la sécurité, en particulier pour les logiciels connectés au réseau. L'utilisation d'une version récente Python vous donne une période de soutien plus longue sans avoir à faire plus de travaux de développement. Pour la même raison, vous auriez (espérons-le) ne concevez pas un nouveau système pour Windows XP ou Android 4 ou Ubuntu 16.04. Pour Python, la date EOL ne s'applique qu'au développement officiel de CPPHON, qui compte si vous vous compilez ou téléchargez des fichiers binaires officiels. Si vous utilisez un Python qui est livré avec le système d'exploitation, le fournisseur du système d'exploitation peut fournir des périodes de support différentes.

Notez que vous pourriez être légalement tenu de suivre les pratiques de sécurité de l'état de la technologie, telles que l'exécution de versions logicielles pris en charge, par exemple si votre logiciel traite des données à caractère personnel et est soumis au GDPR (voir art. 32 ).

Du point de vue du développement, supporter des versions multiples Python est facile (surtout lorsque vous êtes Python 3,4+ uniquement) et la mise à niveau vers de nouvelles versions est triviale au-delà des minuscules corrections (par exemple, Python 3.7 tourné async dans un nouveau mot-clé).

  • Le plus gros facteur de traction pour de nouvelles versions est des caractéristiques de langue cruciale qui rendent le développement plus agréable (par exemple ASYNC, des annotations de type, des chaînes F, des dictères ordonnées, des missions en ligne) et des améliorations de la bibliothèque standard.
  • L'écosystème de la bibliothèque plus large est un facteur push-push pour abandonner l'écosystème de la bibliothèque: de nombreuses bibliothèques n'aiment pas les efforts déployés sur le support des versions Eol'ed Python. Si vous ne mettez pas à niveau, vous devriez vous préparer à ces bibliothèques et rétrodifférez-vous de bugfixes vous-même, ce qui est beaucoup d'effort.

Ainsi, alors que vous pouvez utiliser une version plus ancienne Python aussi bien, il n'y a pas de bonne raison de le faire - sauf lorsque vous avez des contraintes externes. Par exemple, une exigence comme: "Le logiciel doit exécuter sur ce serveur et ce serveur n'a que Python 3.4 installé. Nous ne pouvons pas installer une autre version Python. " La suppression parfois de ces contraintes est plus facile (c'est-à-dire le lobbying pour une mise à jour du système d'exploitation ou le déploiement de conteneurs via des conteneurs), mais dans le contexte de code non async et Python 3.4, il suffit d'écrire compatible Python code est généralement le chemin du moindre résistance.

1
amon