title:      Django 1.0, état des lieux
slug:       django-1-0-etat-des-lieux
date:       2007-01-08 20:20:37
type:       post
vignette:   images/logos/django.png
contextual_title1:  Sortie de Django 1.0, une année de nouveautés
contextual_url1:    20080902-sortie-de-django-10-une-annee-de-nouveautes
contextual_title2:  ★ Astuces et bonnes pratiques Django
contextual_url2:    20080211-astuces-et-bonnes-pratiques-django
contextual_title3:  Des vacances et des liens
contextual_url3:    20071007-des-vacances-et-des-liens

<p>Les développeurs principaux ont l'habitude de dire que la version 1.0 sortira lorsqu'elle sera prête. Alors évidemment c'est frustrant... mais louable. Faisons le tour des fonctionnalités manquantes et/ou toujours en développement. Je rappelle que chacun peut bien entendu critiquer, tester, participer, la liste de diffusion de développement est ouverte et intéressante.</p>

<p><strong>Disclaimer</strong>&nbsp;: je ne suis pas développeur Django donc ce billet reste de l'ordre de la supposition.</p>


<h2>Pour la 1.0</h2>


<p>Le plus simple et de consulter le <a href="http://www.djangobook.com/en/beta/">Django Book</a> qui est en cours d'écriture. On constate que les chapitres restants sont les formulaires et les commentaires (d'autres sont incomplets bien sûr mais c'est assez significatif). Par ailleurs, les <a href="http://www.djangoproject.com/documentation/api_stability/"><abbr title="Application Programming Interface">API</abbr> définies comme étant non stables</a> sont&nbsp;:</p>
<ul>
<li><strong>les formulaires</strong>&nbsp;: ils sont actuellement en cours de debug et c'est très actif sur les deux listes de diffusion (utilisateurs et développement). Le problème est que <a href="http://www.djangoproject.com/documentation/newforms/">la documentation n'est pas totalement écrite</a>, heureusement qu'on trouve <a href="http://code.pui.ch/2007/01/07/using-djangos-newforms/">des exemples simples d'utilisation</a> par ailleurs.</li>
<li><strong>les commentaires</strong>&nbsp;: l'objectif est de pouvoir étendre le système de commentaires au même titre que celui des utilisateurs avec l'implémentation récente de <strong>get_profile()</strong> (une <a href="http://www.b-list.org/weblog/2006/06/06/django-tips-extending-user-model">bonne documentation sur b-list</a>, enfin <a href="http://www.b-list.org/weblog/categories/django">toute la catégorie django</a> est exceptionnelle !). C'est le principal frein à la refonte de ce site, je ne veux pas jouer avec le feu concernant les commentaires.</li>
<li><strong>l'authentification</strong>&nbsp;: à ma connaissance, l'<abbr title="Application Programming Interface">API</abbr> est maintenant stable.</li>
<li><strong>les relations génériques</strong>&nbsp;: il n'y a aucune indication quant à leur migration future, c'est à mon avis une bonne chose de les avoir dans le cœur du framework car elles constituent un réel avantage et devraient être mises en avant au même titre que l'interface d'administration. Ça permet de gagner énormément de temps en très peu de lignes de code.</li>
<li><strong>la sérialisation</strong>&nbsp;: vu <a href="http://www.djangoproject.com/documentation/serialization/">l'état de la documentation</a> c'est toujours en cours de développement. Je n'ai pas de gros besoins en <abbr title="Asynchronous JavaScript And XML">AJAX</abbr> pour le moment donc ça ne me dérange pas trop.</li>
<li><strong>le support d'Oracle</strong>&nbsp;: ce n'est pas mentionné mais il y a eu un énorme travail de réalisé et c'est actuellement en phase de debug donc ça sera normalement opérationnel pour la 1.0, c'est d'ailleurs ce qui est annoncé dans le livre. C'est vraiment une bonne nouvelle car je vais en avoir professionnellement besoin.</li>
</ul>

<p>Conclusion, je pense que la 1.0 sortira avec le livre (soit vers début mars à mon avis). J'étais plus pessimiste lors de l'annonce de l'agenda d'écriture du livre qui était pour moi intenable mais force est de constater qu'ils tiennent le rythme&nbsp;! Perfectionists with deadlines, ok.</p>



<h2>Le meilleur est à venir</h2>


<p>Je ne pense pas que les branches actuellement en développement seront finalisées d'ici la version 1.0 (et c'est bien dommage mais bon il faut en garder sous le coude pour la suite). Voici celles que je trouve les plus intéressantes&nbsp;:</p>
<ul>
<li><strong>l'héritage des modèles</strong>&nbsp;: c'était implémenté avant qu'il y ait l'étape «&nbsp;<a href="http://code.djangoproject.com/wiki/RemovingTheMagic">Magic Removal</a> » et c'était vraiment pratique selon les objets manipulés. Apparemment c'est plus complexe à implémenter maintenant, toujours est-il que ça avance. C'est un des développeurs principaux qui s'occupe de la branche mais il était très occupé ces derniers temps. C'est à mon avis la branche la plus proche d'être intégrée dans la 1.0.</li>
<li><strong>l'évolution du schéma</strong>&nbsp;: c'est l'un des gros défauts actuels de django. Enfin pour d'autres c'est un avantage car lorsqu'on touche aux données on n'est jamais trop prudent et il vaut mieux le faire à la main. Mais ce serait tellement plus facile d'utiliser django pour modifier des tables à la volée&nbsp;! C'est en cours de développement mais c'est complexe et les beta-testeurs se font rares ;-).</li>
<li><strong>le contrôle des accès</strong>&nbsp;: c'est aussi un défaut actuel. Les droits ne peuvent être décernés aux utilisateurs de l'interface d'administration que par type d'objet et non par instance d'objet. C'est assez réducteur mais <a href="http://www.djangobook.com/en/beta/chapter18/#cn19">le livre est très clair sur le but de l'interface d'administration</a> (et il était temps)&nbsp;: <strong>elle sert à rendre éditable un contenu structuré par des utilisateurs de confiance</strong>. Donc ce n'est en aucun cas une alternative à une interface utilisateur classique, c'est pour les administrateurs du site (d'où le <strong>de confiance</strong>).</li>
</ul>

<p>Ces deux dernières branches avaient été initiées lors de Google Summer of Code mais ne sont jamais arrivées à terme. Je ne sais pas s'il faut remettre en cause la qualité des développeurs ou l'ampleur de la tâche mais c'est bien dommage.</p>



<p>En conclusion, la 1.0 devrait arriver rapidement maintenant et c'est une bonne chose, autant du point de vue de la stabilité que de celui des décideurs se basant sur les numéros de version. Je rappelle que la version de développement est considérée comme stable pour permettre de disposer des dernières fonctionnalités sans mettre en péril les sites en production. Pouvoir arrêter le code à un instant t sera tout de même intéressant pour les gros projets de façon à être sûr que chacun travaille avec la même version du code.</p>


<p><strong>[edit du 13]</strong>&nbsp;: j'ai doublé Jacob de quelques jours :-). N'hésitez pas à aller <a href="http://groups.google.com/group/django-developers/browse_frm/thread/592d5b8f9593ea38/0c19a63a1e4648e5">lire son résumé bien plus complet</a>, commenté et surtout qui corrige certaines de mes affirmations.</p>
