Nuxeo abandonne Python pour Java
La nouvelle qui a fait du bruit en ce début d'année dans la communauté Python et Zope est sans aucun doute l'annonce faite par Nuxeo d'abandonner Python et Zope pour Java. Par delà la surprise, nous nous sommes posés quelques questions autour de cette annonce.
Une petite bombe lâchée dans la communauté Python
Nuxeo est une entreprise française dont la réalisation majeure est CPS (Collaborative Portal Server), un système de gestion de contenu basé sur Zope et qui est déployé dans de nombreuses administrations françaises et de nombreux sites gouvernementaux (préfectures, municipalités, conseils régionaux ...). l'entreprise a annoncé qu'elle arrêtait Python et Zope au bénéfice de Java, technologie concurrente historique de Python.
CPS est une application qui a eu son heure de gloire et qui est encore très appréciée. Les développeurs de Nuxeo que l'on connait très attaché à Python et que nous apprécions beaucoup chez Toonux pour leurs divers travaux comme pour leur savoir être (Tarek Ziadé, auteur du livre Programmation Python publié chez Eyrolles et président de l'AFPY ou Julien Anguenot, Zope3 guru) passeraient donc à Java.
Quelques considérations techniques et pratiques
Comme Python, Java est un langage de programmation objet disposant d'une large notoriété et deployé pour de nombreux projets. En fait en dehors de Java, rares sont les langages de programmation permettant autant de possibilités que Python en environnement web, disposant d'autant de librairies, d'une communauté aussi vivante de projets aussi variés.
En revanche Python est auto-interprèté alors que Java nécessite une compilation. On a donc coutume de dire et à juste titre, que le développement en Python est plus rapide que le développement en Java. Arrive ensuite l'argument de la lisibilité du code. En Python, il n'existe pas cinquante mainières de faire les choses. Le Python est certes moins poétique dans sa syntaxe que le Java, ce qui fait de lui un langage bien plus lisible et réutilisable. Pour la sécurité, c'est maintenant un faux débat car les codeurs Java commmencent à montrer un peu plus de rigueur, mais un code java percé, c'est une machine rootée. Avec Python, les trous coutent aussi cher qu'avec Java ou Perl, un vilain n'hax0r poura aller mumurer à l'oreille de votre stack si vous ne prenez pas garde. Le modèle de sécurité de Zope permet une gestion de la sécurité tout à fait respectable, et quoi qu'on en dise Java ou Python c'est quand même bien plus robuste que du php.
Python commence à bénéficier des apports techniques, fruits des développements et investissements de certaines entreprises. Google utilise Python à outrance et ne semble pas prêt à passer sur Java pour quelque raison que ce soit. Quand on connait le dynamisme de cette société et la qualité de services 'Python Powered" qu'elle propose, on se dit qu'en définitive les beaux jours de Python ne se pas encore venus et qu'il attirera encore de nombreux développeurs.
Quelques considérations commerciales
Commercialement, Java jouit d'une notoriété certaine qui est en grande partie due à l'efffort de communication réalisé par Sun. Python est lui bien plus discret même s'il est présent partout : Gnome le gestionnaire de fenêtre très élaboré et très apprécié sous Linux ou unix est une démonstration des capacités de Python, Google que l'on ne présente même plus a misé sur python pour grande majorité de ses projets.
Python est plus discret en terme de communication car il ne bénificie pas d'un support d'une société particulière. Ceci ne l'empêche pas de connaitre une croissance énorme. Sur l'année passée on parle de près de 300 %,. A une échelle moindre que Java, Python est un langage ayant eu les faveurs fabricants de téléphonie mobile. Le marché Python est plus petit que celui de Java, beaucoup plus petit, mais sa croissance laisse augurer de beaux jours.
Alors que des bruits de couloirs nous annoncent le rachat de Sun par Apple on est aussi en droit de se dire que Java a des chances d'en profiter... pourquoi pas après tout ?
Quelques considérations spéculatives
Notre surprise est grande de voir Nuxeo abandonner Python : Quid du dynamisme induit par Nuxeo pour promouvoir Zope et Python et de la générosité que ses développeurs ont pu mettre à évangéliser les hordes impies de scribes php et autres hiéroglyphes ? </troll> :)
- Que vont devenir ces développeurs sans leur petite dose quotidienne de Python ?
- Que va devenir CPS dont les CVS semblent se prendre un coup de ménage de printemps avec un peu de retard.
- Que vont devenir les ministères et préfectures qui ont fait le choix de CPS qui visiblement ne sera plus maintenu ?
- Qui sont les fantastiques baratineurs qui vont expliquer aux clients de Nuxeo que Zope après toutes ces années c'est mal et que Java ça r0x ?
- Comment CapGemini pourra assurer ses contrats de maintenance alors qu'il y a quelques mois la personne qui y avait introduit CPS a posé sa démission et que le Druide a lui aussi posé sa démission de la même société ?
On fait confiance à Nuxeo pour assurer ses engagements de maintenance vis à vis de ses clients, mais les quelques autres prestataires de services autour de CPS risquent de pâtir de la situation. La communauté Python en subit déjà un peu certaines conséquences (ce genre de revirement n'est pas fait pour rassurer les DSI). Tout ça fait quand même un peu désordre non ?
Même si CPS a toujours été considéré comme "à part", à la fois élitiste et pas toujours adapté à n'importe quel type de projet, il est agréable de voir des applications aussi différentes et complémentaires que CPS, Plone, Silva ou Zwook et autres, pour se rendre compte en cette occasion de la richesse et la diversité de Python
Quelques considérations ... tout court.
De très nombreux signes indiquent qu'il ne fait pas bon de tourner sous CPS en ce moment, oui mais ... quoi qu'il advienne Nuxeo n'est pas Python et l'open source n'est pas synonyme de papillon de nuit : la pérénité, la maintenabilité, l'utilisabilité ne sont pas de fumeux paradigmes. La communauté Python, à travers ses travaux et sa croissance le prouve tous les jours.
Et enfin pour rigoler
Voici comment on fait un "hello world" en Python
print "Hello World!"
Voici maintenant comment on fait ce même "hello world" en Java
public Class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World !");
}
}
... il y a quand même de quoi avoir peur non ? imaginez à quoi va ressembler CPS une fois le code passé en Java.

