Souvenons nous que cette mort aurait initialement due se produire en 2015 mais le support de Python 2 avait été maintenu pour 5 ans. Le lancement en 2006 de Python 3 a alors marqué un tournant puisque selon Gido Van Rossum , leader du projet, Python 3 a apporté de nombreuses améliorations que Python 2 ne pouvait pas supporter. La transition s'avérerait laborieuse, mais il s'agissait d'un mal nécessaire afin de moderniser le langage. L'utilisation massive des itérateurs, la distinction plus stricte des bytes versus str ainsi que la gestion des floats n'aurait pu se faire en conservant une branche unique.
L'adoption de Python 3 s'est faite très lentement. Bien que disponible depuis 2008 , il a mis du temps à proposer une version stable et véloce, 6 ans plus tard avec Python 3.4. Comme il n’était pas rétrocompatible avec Python 2, de nombreux développeurs ont trainé des pieds.
Des efforts on été fait pour faciliter la transition. Par exemple, la syntaxe u"" est de nouveau supportée depuis Python 3.3. L'arrivée d' asyncio , puis la bascule de tout l'écosystème numpy en version 3 a enfin fait sauter les excuses pour rester coincé en v2. La branche 2.7, dernière stable de Python 2 a été réalisée pour faciliter cette migration et cette branche ne sera donc, elle non plus, plus maintenue à partir du premier janvier prochain comme est venue le confirmer la Python Software Foundation . Malgré de nombreux échanges animés entre les membres de la communauté Python, il ne faudra pas espérer un Python 2.8 et la fondation l'a d'ailleurs réitéré à plusieurs reprises, comme sur la page "Python 2.8 Un-release Schedule" et non sans humour.
Cette mort annoncée de Python 2 devrait en toute logique pousser de nombreuses organisations à des migrations qui ne devraient globalement pas s'avérer trop douloureuses. Aujourd'hui il n'existe plus aucune raison de ne pas migrer son ancien code vers Python 3. L'immense majorité des librairies ont déjà été portées et devraient fournir aux développeurs tout ce dont ils ont besoin pour moderniser leur code. Il existe bien des cas ou la migration risque d'être plus douloureuse, comme par exemple chez JP Morgan dont la plateforme de trading Athena tourne sur Python 2.7 et qui aura bien du mal à porter ses 35 millions de lignes de code dans les temps ... un manque d'anticipation qui risquerait à terme de lui coûter cher.
Si votre application repose sur une librairie plus exotique qui n'a pas été portée sur Python 3, il vous faudra trouver des solutions alternatives et probablement envisager une refonte plus en profondeur de votre code pour vous prémunir de problèmes de sécurité et de maintenabilité à moyen et plus long terme.
Nous noterons l'existence de l'outil 2to3 qui se propose de transformer votre code Python 2 en code Python 3 valide et qui pourrait vous faire gagner un précieux temps, mais sachez que globalement, la communauté Python a fait le nécessaire pour vous éviter des migraines et que l'intérêt de 2to3 est "structurellement" plus limité maintenant. Enfin, la librairie de compatibilité Six a aussi grandement contribué à régler pas mal de soucis et vous aidera assurer la compatibilité de votre code en Python 2 et 3.
Même si Python 3 est largement documenté , ainsi que le processus de migration , il se peut que certains projets nécessitent un regard professionnel extérieur pour envisager une migration dans de bonnes conditions. En tout cas, si vous êtes concernés par cette migration, conservez un oeil attentif sur la PythonClock , et migrez vite.