This blog is available in English too. The English version is a bit less complete than the French one. Go to the English version of this blog.

14 décembre 2009

Django mieux qu’un CMS ?

Logo DjangoJ’ai du récemment réécrire un site web que je gère pour une très petite entreprise : Le fil à soi. Cette entreprise comprend 3 animatrices qui proposent des ateliers et stages de massage chinois, qi gong et Gestalt-thérapie à Bordeaux. Les spécifications du site sont assez simples :

  • présentation du lieu, des animatrices et informations de contact ;
  • pages pour chaque atelier et stage classées en catégories ;
  • gestion automatique des dates de stages et génération d’un flux RSS ;
  • une interface d’administration simple pour modifier les infos sur les ateliers et stages (qui devrait être utilisée par les animatrices, même si en réalité elles ne sont pas fans d’informatique et préfèrent m’envoyer un mail…).

La version que je voulais remplacer était un site web fait à la main en PHP à partir de rien. Je l’avais commencée il y a des années avant de savoir grand chose sur la conception de sites web. Elle était donc devenue plutot difficile à gérer. Je voulais une version plus propre pour pouvoir laisser quelqu’un d’autre maintenir ce site.

Utiliser un CMS : Drupal ou WordPress

Un CMS (Content Management System : système de gestion de contenu)est une plateforme qui simplifie la création d’un site web. WordPress a été créé pour faire des blogs, mais il existe plein d’extensions qui permettent de créer n’importe quel type de site web. Drupal a vraiment été prévu pour créer n’importe quel type de site web. Il possède aussi de nombreuses extensions qui pourvoient à tous types de besoins  (calendrier, magasin en ligne…)

La force de ces CMSs est qu’il gèrent les deux parties du site web : la partie utilisateurs et la partie administration. L’administration donne aux responsables du site de nombreux moyens de personnaliser et de surveiller la partie utilisateurs.

J’ai donc commencé deux petits prototypes utilisant chaque CMS et j’en suis venu à la même conclusion :  aucun des deux ne répond parfaitement à mes besoins, pourtant très simples.

Par exemple pour la gestion des dates de stages : des tas d’extensions font des choses très proches de ce que je veux, mais aucun ne le fait tout à fait. Il va donc falloir que je personnalise une extension, dont le code n’est probablement pas vraiment documenté. Ensuite cette extension sera mise à jour (à nouveau sans documentation) par son auteur, et je devrais maintenir mes modifications…

Même chose pour le thème : de nombreux thèmes sont disponibles mais il ne serait pas sérieux d’utiliser un design tout fait sans l’adapter.

Je peux donc faire mon petit site web avec un CMS mais :

  • le résultat sera énorme, avec plein de fonctionnalités dont je ne me servirai pas (pas besoin de blog, de gestion des utilisateurs…) ;
  • il sera difficile à maintenir, et il faudra que je surveille toutes les mises à jour des extensions que j’aurai modifiées ;
  • je devrai faire des mises à jour régulières quand le CMS sera mis à jour, car les failles de sécurité connues des grands CMSs sont très rapidement utilisées par des « pirates ».

Ça fait beaucoup de travail pour un tout petit site.

Utiliser Django

Django n’est pas vraiment un CMS. C’est un framework Python pour créer des sites web (comparable à PHP Zend, Ruby on Rails…). Cela veut donc dire qu’il faut écrire du code pour l’utiliser.

La grosse différence avec d’autres frameworks web est que Django a été développé à l’origine pour un site web d’actualité, la gestion du contenu était donc primordiale. C’est pourquoi un fonction très impressionnante est disponible : la génération automatique de la zone d’administration du site.

J’ai juste eu à définir mes modèles (ce qu’est un stage, une animatrice, une date de stage, une catégorie…). C’était ensuite lié à ma base de données et la partie administration était générée. J’ai enfin défini mes vues, c’est à dire la façon dont ces modèles sont affichés aux utilisateurs (avec des outils simples pour générer des flux RSS, des sitemaps…)

Les avantages de cette approche sont :

  • l’application finale est très petite, sans fonctions inutiles ;
  • on obtient exactement ce qu’on veut : pas besoin de s’adapter aux extensions trouvées sur Internet ;
  • on sait exactement ce que chaque ligne de code fait (même si on omet de documenter…) ;
  • les seules mises à jour à surveiller sont celles de Python et de Django, qui sont rares et plutôt bien gérées.

Les seuls inconvénients que je vois :

  • il y a beaucoup moins de gnes qui connaissent Python Django que de gens qui connaissent WordPress, il sera donc plus difficile de trouver des gens pour gérer le site (mais ils seront meilleurs :p) ;
  • Python doit etre supporté par votre hébergeur. J’utilise OVH, qui ne supporte Django qu’en CGI, mais ça suffit pour un si petit site ;
  • il n’y a pas d’éditeur WYSIWYG par défaut dans l’adminstration générée par Django : ça peut être un problème pour éditer des articles (ou des descriptions de stages dans mon cas). Mais il est plutôt simple d’ajouter TinyMCE qui est purement en javascript.

Conclusion

Si vous voulez créer un blog simple et complet, utilisez WordPress. Si vous voulez faire des choses compliquées comme un magasin en ligne, utilisez Drupal.

Mais si vous voulez construire un site web simple, dynamique et facile à maintenir, et si coder ne vous fait pas trop peur, utilisez Python Django. Vous obtiendrez exactement ce que vous voulez sans trop d’efforts, et le résultat sera vraiment simple à maintenir.

Accueil du site du fil à soi

Accueil du site du fil à soi

Administration des pages du fil à soi

Administration des pages du fil à soi

3 commentaires »

24 septembre 2009

Stage chez Jolicloud : les premiers pas d’une start-up

Stage chez Jolicloud : les premiers pas d’une start-up

Dans le cadre d’une année « Jeune Ingénieur » à TELECOM Bretagne, je viens de finir un stage de presque un an chez Jolicloud.

Il s’agit d’une toute nouvelle start-up lancée par Tariq Krim (fondateur de Netvibes) qui crée un système d’exploitation adapté aux netbooks et construit autour d’Internet (ses technologies et ses services).

Ce stage a été une passionnante occasion de vivre de l’intérieur le lancement d’une start-up : idée, recherche, lancement d’une alpha privée, recherche de financements, arrivée de gros concurrents (comme Google Chome OS), élargissement de l’alpha, embauches, roadmap de la beta et de la version finale… Nous étions trois au départ : Tariq Krim, Romain Huet et moi.

Niveau développement, le défi est intéressant : se baser sur Linux pour créer un système d’exploitation ergonomique et beau, qui soit centré sur les technologies du web plutôt que sur les technologies classiques utilisées sur un système Linux (plutôt HTML que GTK, plutôt Javascript que C…).

Nous avons utilisé Ruby On Rails et JQuery pour développer l’application web qui est le cœur de Jolicloud, et pas mal de python sur le système, pour permettre à notre application web de communiquer avec le système.

Les premiers développements se sont focalisés sur deux choses : partir d’Ubuntu et le modifier pour créer le système d’exploitation Jolicloud, et créer un annuaire d’applications, un peu comme sur l’iPhone d’Apple, qui permet d’installer/supprimer/mettre à jour ses applications en un clic. Cet annuaire est basé sur APT, la technologie utilisée par Debian (et Ubuntu) pour gérer les fichiers installés sur le système. De plus, Prism a été complètement intégré pour mettre les applications web (Google Docs, GMail, Facebook…) sur le bureau.

La version actuellement disponible de Jolicloud est très loin d’être complète : ce n’est qu’un aperçu de ce que nous voulons faire. Les développements s’accélèrent actuellement et nous avons plein d’idées dont je ne peux pas encore parler. Je dois malheureusement retourner en cours maintenant pour ma 3ème année à TELECOM Bretagne, mais j’espère pouvoir continuer à participer à Jolicloud dans l’avenir.

Contrairement à ce que fera probablement Google Chrome OS, Jolicloud permet de lancer des applications locales, pas seulement des applications web, et il ne pousse pas à l’utilisation des services Google. Et contrairement à Moblin, Jolicloud est autant une application web (notifications, synchronisation…) qu’un système d’exploitation. Et personnellement, le concept de Jolicloud me plairait bien sur mon PC portable aussi, si son interface était adaptée. Donc Jolicloud me semble avoir un bel avenir… à suivre :)

1 commentaire »