Developpez.com

Le Club des Développeurs et IT Pro

Django 2.0 : le framework web ne va pas supporter Python 2

Une raison suffisante d'abandonner maintenant Python 2.x ?

Le 2017-01-26 17:09:16, par Michael Guilloux, Chroniqueur Actualités
Django est un framework web libre et open source, écrit en Python, qui suit le modèle architectural Modèle-Vue-Template (MVT). L'objectif principal de Django est de faciliter la création de sites web complexes basés sur des bases de données. Il met donc l'accent sur la réutilisation des composants, le développement rapide et le principe de ne pas se répéter.

Django est de loin le plus utilisé parmi les frameworks basés sur le langage Python et pour de nombreux développeurs, c'est probablement l'une des premières raisons pour lesquelles ils utilisent Python. Pour une personne qui connait bien en effet le langage Python, l'utilisation de Django sera intuitive. Pour les développeurs Python qui comptent sur le framework, les versions du langage prises en charge par Django sont donc importantes, surtout avec une communauté de développeurs partagée entre Python 2.x et 3.x.

Pour rappel, le débat sur le choix des versions de Python à adopter est né de la transition entre les branches 2.x et 3.x que certains ont trouvé trop brutale, créant en effet une rupture dans la compatibilité. S’il semble idéal de commencer les nouveaux projets Python avec les versions 3.x, la migration des projets existants pourrait s’avérer très coûteuse, pour les grands projets surtout. Pour cette raison, de nombreuses entreprises s’accrochent aux anciennes versions.

À l’opposé, d’autres développeurs estiment que les améliorations apportées par Python 3.x sont assez suffisantes pour abandonner les versions 2.x. Certains estiment même que l’abandon du support de Python 2.x serait la bienvenue, dans la mesure où l’utilisation parallèle de ces différentes versions pourrait ralentir la croissance du langage et entrainer un exode vers d’autres langages équivalents.

Le vent semble toutefois souffler dans la direction de Python 3.x, étant donné que la version 2.0 de Django ne va plus supporter Python 2. Conformément à sa politique de support des versions de Python, l’équipe Django prévoit de livrer la prochaine version de Django (1.11) en avril 2017, avec uniquement le support de Python 2.7 dans la branche 2.x. Django 1.11 sera encore la dernière version à supporter Python 2. L’équipe derrière le framework a en effet annoncé que la version suivante (Django 2.0) ne va supporter que Python 3.5 et les versions suivantes. Cette décision va-t-elle pousser pour de bon les entreprises à la traine vers Python 3 ?

Source : Documentation Django 2.0

Et vous ?

Qu’en pensez-vous ?
  Discussion forum
7 commentaires
  • wiztricks
    Expert éminent sénior
    Salut,

    Envoyé par SurferIX
    Je suis un énorme fan de Django à tous les niveaux : déboguage, rapidité de développement, qualité du code, le fait que ce soit Python etc.
    Mais honnêtement, les améliorations ne méritent pas un "2.0".
    Incrémenter la version majeure n'a rien à voir avec la quantité ou la qualité de nouvelles fonctionnalités. C'est juste un signal qui dit que la compatibilité ascendante est cassée cela pour inviter le développeur à lire attentivement le release notes avant de l'installer.

    Stopper le support de Python2 oblige le développeur à migrer sous Python3... Ce qui n'est pas une mince affaire car même si côté technique, il a de la chance, il va falloir re-tester (ce qui coûte en temps). Puis avoir éventuellement des discussions et des décisions sur la migration des autres application et/ou le support d'environnements mixtes Python2/Python3.

    Suivant l'environnement de production où la question sera posée ce ne sera pas toujours un détail et en tous cas, c'est un bien changement majeur dans le sens commun.

    - W
  • SurferIX
    Membre chevronné
    Je suis un énorme fan de Django à tous les niveaux : déboguage, rapidité de développement, qualité du code, le fait que ce soit Python etc.
    Mais honnêtement, les améliorations ne méritent pas un "2.0".

    Faire l'administration en responsive, modifier la syntaxe des filtres, et faire plein de "deprecations" c'est pas une v.2 (on sait tous que Python 2 est officiellement mort en 2020, supprimer son support n'est pas une énorme évolution).

    Pour moi cela aurait dû être une v1.2 grand max.

    Tout est si bien pensé dans Django, par rapport au Web, qu'il n'y a plus grand chose à ajouter :
    - classes de vues parfaites,
    - ORM parfait,
    - organisation parfaite...

    Bref, pour faire une v2 il faudrait faire un très gros "saut" (comme Symfony 3 à 4), ... il faudrait peut être ajouter un gros gestionnaire de "paquets Django" qui installerait des librairies tierces validées officiellement (REST, workflow/process et autres librairies qui ne sont pas indispensables mais très bien faites), et une administration full SPA en REST / JSON et là, oui, on aurait une vraie version 2.
  • SurferIX
    Membre chevronné
    Envoyé par wiztricks
    Stopper le support de Python2 oblige le développeur à migrer sous Python3... Ce qui n'est pas une mince affaire car même si côté technique, il a de la chance, il va falloir re-tester (ce qui coûte en temps). Puis avoir éventuellement des discussions et des décisions sur la migration des autres application et/ou le support d'environnements mixtes Python2/Python3.
    Merci pour cette information, je la garde au chaud, je n'avais pas ça en tête quand on me parlait de nouvelle version "majeure".
  • Songbird
    Membre expert
    je n'avais pas ça en tête quand on me parlait de nouvelle version "majeure".
    Jette un œil à ceci, si ça t'intéresse.
  • Thierry Chappuis
    Expert confirmé
    Aucune compatibilité n'est cassée et peut-être pas de grosse révolution pour cette 2.0. C'est simplement qu'à partir de Django 2.0, chaque version suivant une LTS (Long-terme support) devient une *.0 (loose semantic versioning).

    Avec mes meilleures salutations

    Thierry