Dans Technique par Florian Strzelecki - 18:27 - 06.01.2010
Mon dieu, qu'il m'énerve !
Les fins mélomanes (humour humour) auront vu la référence à Helmut Fritz et son morceau "Ça m'énerve", tandis que d'autres compatiront d'emblée à l'idée du temps que j'ai pu perdre à devoir utiliser ce maudit framework.
Parce que, disons le tout haut, et bien clair : Zend Framework est un petit cauchemar au quotidien. Une malédiction pour le développeur que je suis, et surtout, celui que je rêverais d'être à mon travail.
Je travaille avec par obligation, et parce qu'il n'y avait pas mieux dans les choix proposés. Ce n'est pourtant pas faute d'avoir tenté Django, mais la réponse fut "C'est du Python ? Donc c'est non." et même si elle était attendue, c'était pas une raison de prendre ce framework. Même si j'aurais du prendre un peu de temps pour apprendre, il y a Symphony à côté.
Rien n'est vraiment réutilisable dans ce que vous développez avec le Zend Framework.
D'une part, les classes changent de nom en fonction de l'endroit où elles se trouvent, la faute à l'auto-loader de plus en plus mis en avant dans Zend Framework. Mais après tout, on peut faire avec, si on est très méticuleux.
Vient ensuite le système de Bootstrap, qui, alors qu'il me semble être un concept intéressant, se révèle en fait un véritable piège : vous ne pouvez pas faire de Bootstrap spécifique à une partie de l'application seulement, tous les Bootstraps sont globaux à toute l'application. Oubliez donc l'idée d'avoir un Bootstrap pour votre Frontoffice, et un autre pour votre Backoffice. : il faudra plus que certainement faire du copier/coller de code et faire deux applications différentes.
Puis l'histoire des Modules, et Zend Application, qui, bien loin d'être ce qu'on croit, servent surtout à ranger vos affaires dans des boîtes, mais pas du genre que l'on transporte, échange, enlève et réorganise à loisir. C'est une structure rigide, où chaque élément, s'il vient à disparaître, sera la cause d'effet de bords catastrophiques.
Bref, non, la réutilisabilité des applications est un mythe total avec Zend Framework, une source d'ennuis quotidienne, et une perte de temps conséquente.
Et je ne parle même pas de la maintenance.
Je suis peut-être un peu méchant avec la communauté de PHP.
Elle est peut-être énorme, mais elle est composée en grande partie par des amateurs, des bidouilleurs du dimanche, bref, des gens dont les besoins peuvent être comblés par des pratiques toutes sauf professionnelles. Je sais, je fais dans la diplomatie en 2010.
Or, lorsque je m'adresse à une communauté, je cherche des réponses techniques concrètes et sérieuses. Des bonnes pratiques éprouvées, par tout un ensemble de gens ayant de l'expérience. Bref, je m'adresse à des gens qui savent mieux que moi comment utiliser correctement le framework.
Sauf qu'entre les hacks bien crades et les explications à l'emporte pièce, on est loin d'atteindre un niveau suffisant.
La documentation, pour sa part, est un véritable désastre : je me moque bien de savoir si elle est traduite ou non, j'aimerais déjà qu'elle soit complète dans la langue d'origine ! Ou, au moins, qu'elle ne m'embrouille pas plus qu'elle ne m'aide.
Incomplète, manque de clarté, décousue, parfois même n'est pas à jour : la documentation du Zend Framework est un gouffre dans lequel votre temps est avalé, et votre cerveau décomposé en petit morceau incandescent .
Une torture moderne, en quelque sorte.
Alors, d'accords, PHP n'est sans doute pas un langage pour faire dans la performance technique. C'est un point de vue qui se défend, mais ce n'est vraiment pas le propos.
PHP est utilisé pour différentes raisons : développeurs moins chers, technologie plus facile d'accès, popularité plus importante. Mais certainement par pour ses performances.
Mais quand même ! Est-ce une raison pour utiliser une montagne de code, une usine à gaz monstrueuse, dès que l'on veut faire le moindre truc avec Zend Framework ?
En dehors de la complexité du code à produire pour utiliser Zend Framework, si, comme moi, on fouille dans le code source du framework lui-même, on se rend vite compte de l'absurde complexité dudit framework. Et des commentaires aussi utiles qu'une chaussette sur une jambe de bois.
On sentirait presque l'amoncellement d'un historique trop gros, trop lourd, et une dette technique de plus en plus évidente, qui n'est jamais comblée.
C'est une promesse que je me fais à moi-même : plus jamais je n'accepterai de travailler avec ce framework. Plus jamais.
Le pire, je pense, c'est lorsqu'on se rend compte qu'on ne fait même plus attention lorsqu'une fonction "getBidule" fait un "setBidule" : on trouve ça normal, dans la logique Zend Framework.
Oh, traduction pour ceux qui ne sont pas techniques : c'est un peu comme si je posais un objet dans une boîte pour dire que je récupère cet objet de cette boîte là : à peu près aussi utile que cette machine.
Oui bah, des fois, j'ai envie de râler. De râler fort. Et d'utiliser des gros mots (mais je suis un enfant très sage).
Mais bon, 2010, diplomatie. Un peu.
Commentaires (18)
Commentaire #1 Par Beldom - 22:32 - 06.01.2010
Joli résumé. Pour avoir testé... Je suis entièrement d'accord. Non, non et encore non à Zend. C'est juste mauvais et inefficace au possible. Aussi, mon seul commentaire sera : courage !
Et si en effet php n'est pas le plus performant, ce n'est pas une raison, et cela ne le sera jamais, pour faire une usine à gaz à partir de ce langage. Puisque réduire encore les performances de quelque chose qui n'est pas le plus performant, ce n'est pas avancer dans l'optique de la dite chose, c'est la planter.
Enfin jolie démonstration de diplomatie. J'aurais été moins tendre ^^
Commentaire #2 Par Patrick Allaert - 12:23 - 08.01.2010
Même expérience, d'accord sur toute la ligne!
Commentaire #3 Par Jean-Marc Fontaine - 13:03 - 08.01.2010
Concernant les critiques techniques sur ZF, je suis relativement d'accord avec toi à l'exception de celle sur les bootstraps car il possible d'avoir des bootstraps par module.
Pour le reste je ne partage pas tout à fait ton avis. Je te trouve bien sévère à l'égard de la communauté. S'il y a effectivement une proportion importante de "bidouilleurs du dimanche", il ne faut pas jeter le bébé avec l'eau du bain. Il y a également des gens très compétents qui essayent de faire bouger les choses.
Commentaire #4 Par Jérôme Vieilledent - 13:53 - 08.01.2010
Hé bé ! Moi qui avait envie de voir un peu comment ça marche, ça m'a fait passer l'envie ! J'ai un peu travaillé avec quelques composants du ZF (notamment Zend_AMF) et je me suis vite rendu compte que la doc était assez incomplète et qu'il fallait souvent aimer jouer aux devinettes...
Par ailleurs, si vous voulez utiliser juste Zend_AMF, sachez que le package proposé est incomplet (il manque pas mal de dépendances de composants).
Bref, je pense que je vais continuer à travailler avec Symfony (pour le spécifique), et voir de plus près les eZ Components (en spécifique toujours, notamment avec les MVC Tools)
Commentaire #5 Par Exirel - 11:31 - 10.01.2010
Ah ! Tout d'abords merci de vos commentaires. C'est toujours un plaisir, surtout de gens que je ne connais même pas (hey, j'ai un petit blog moi...) !
@Jean-Marc : hm... faudra que je reteste ça pour les bootstraps.
Concernant la communauté, oui, je suis un peu dur (mais j'avais prévenu), mais je suis particulièrement agacé devant l'amoncèlement de fausses bonnes pratiques, des vrais faux conseils... il suffit de parcourir les commentaires sur la doc officielle de php pour s'en rendre compte.
Après, j'aime php, et, heureusement, il y a encore des gens de très intéressants dans cette communauté.
@Jérôme : damned! Je préfère encore Zend Framework à EzPublish. Si Zend Framework m'énerve, je pense que je pourrais tuer la prochaine personne qui m'oblige à faire du Ez. :)
Concernant Zend_AMF, pas testé. J'ai eu l'occasion de tester AMFPhp et depuis ça me semble une excellente solution. http://www.amfphp.org/
Concernant les EzComponents, ils sont arrivés peu après que j'ai décroché d'Ez (vive le changement d'entreprise !) je ne sais donc pas trop quoi en penser. Est-ce qu'ils améliorent vraiment cet espèce d'uzine à gaz ? Je ne peux que le souhaiter.
Ah, et comme j'ai aussi laché Ez depuis quelque temps... est-ce qu'ils ont fait de vrai efforts sur la documentation ? Celle de ZF est assez médiocre, mais celle d'Ez... outch ! C'était pas vraiment mieux en 2008 !
Commentaire #6 Par Jérôme Vieilledent - 15:07 - 13.01.2010
Rhhoooo, c'est super pourtant eZ Publish ;-). Le vrai problème d'ez, c'est la doc justement... Et je suis justement en train d'y travailler avec un projet de bouquin (pour montrer notamment qu'avec ez, on ne fait pas que du template, bien au contraire !).
Les eZ Components améliorent grandement eZ Publish depuis qu'ils y sont intégrés. Par ailleurs, d'après ce que j'ai pu comparer avec Zend, les composants semblent être bien meilleure qualité, et la doc est au rdv (avec des tutos)
Commentaire #7 Par Hakim - 03:16 - 20.03.2010
Sincèrement, pour un projet en cours, j'ai décidé de travaillé avec Zend, c'est n'importe quoi, pour faire une chose même un formulaire on est obligé de plonger la tête dans des tutos quasiment inexistant sur le net donc il faut déjà les trouver et en plus il faut comprendre le bootstrap le ini le zend layout le zend form et j'en passe. Sérieusement ça fais mal au crane j'ai passé des nuits juste pour comprendre une chose. Alors je vais faire mon projet avec cakephp qui est souple au moins on comprend rapidement en 2 lignes toute la plateforme est configurée. Donc Zend c'est fini je trouve ça grave mal fais cakephp est peut être moins performant mais au moins comme il est parti je lui réserve un plus bel avenir.
Commentaire #8 Par Titi - 07:16 - 30.03.2010
D'accord aussi Le Zend framework est un casse tete chinois je prefere me prendre la tete à organiser mes fichiers moi même et comprende rapidement ce que je fais , le meilleur reste à coder ses propres classes et Go on avance vite au moins. Zend Framework est une merde d'usine a gaz
Commentaire #9 Par Carlos - 16:34 - 16.04.2010
Je viens de me plonger dans Zend Framework depuis deux semaines et déjà, dès la mise en place du premier squelette, ça foire. La doc officielle et les tutos parlent d'une archi comme ci et d'un fichier de config comme ça, sauf que dans la pratique, il faut faire autrement. Super ! De plus, ça ne choque personne sur les forums... La doc est pauvre, les concepts à peine expliqués, les tutos elliptiques. Donc du coup, au vu de ce billet, j'ai des doutes sur ma capacité à aller plus loin, mon but était de migrer mon appli (non professionnelle) basée sur une archi MVC perso vers un framework connu pour la maintenabilité. Je m'étais laissé tenté par symfony, mais j'ai cru que je perdrais du temps à comprendre et j'ai abandonné ; erreur ? Bon, allez ! j'y retourne.
Commentaire #10 Par Exirel - 21:29 - 16.04.2010
@Carlos : oh, migrer vers un framework connu...
Ce n'est pas mauvais en soi comme idée, ça peut même être très profitable. Cependant, j'ai tendance à plutôt utiliser des librairies pour remplacer certains codes personnels, au lieu de migrer vers un Framework.
Symfony n'est pas trop mal, je le teste en ce moment au bureau (je ne suis pas allez très loin encore), et il est assez complet.
Nonobstant, il n'y a rien à faire : en php, les frameworks sont lourds, et le langage en lui-même est trop verbeux. Il y a trop de lignes à écrire, trop d'étapes à réfléchir... définitivement, pour du framework je préfère utiliser python, avec Django. :)
Commentaire #11 Par Menencia - 12:25 - 21.04.2010
Pfiouu j'suis dessus depuis un mois déjà, et franchement, je passe mes journées à déprimer. Pourtant, j'ai déjà programmé avec d'autres frameworks avant ça: CakePHP, mon premier, où j'ai justement découvert ce concept de framework PHP, qui m'a un peu rebuté au début, mais qui s'est révélé à la longue de plus en plus agréable à utiliser, et plus récemment.. Kohana (mais j'y reviendrai).
Le seul reproche que je fais aux frameworks, c'est qu'il s'agit véritablement de machines à gaz, comportant des milliers de fichiers et une tonne de fonctionnalités qu'on utilisera jamais à 100% pour monter notre petit site sympa. Mais malgré cela, il faut avouer que les frameworks proposent un environnement et une architecture qui nous permettent rapidement de poser un base de travail très stable et modulable ;)
Zend Framework est peut-être LE framework du moment (on l'entends partout) mais je le trouve très brouillon, que ce soit dans son architecture proposé ou bien dans la documentation, où on passe clairement le plus de temps à ne rien trouver au final. Alors oui, moi aussi, je le fais par obligation, mais ce sera également un "plus jamais" ensuite..
@Forian: Ton article décrit parfaitement les lacunes impardonnables de ZF et je rajouterai néanmoins qu'on peut avoir davantage de réponses en partant sur les canaux IRC. Je dirai également que la documentation est buggée, que la communauté est au courant, mais que personne a l'air de s'en soucier véritablement. J'ai trouvé cet accueil non engageant et terriblement décevant.
Pour ma part, je vous conseille tous de tester Kohana, qui m'a au contraire beaucoup surpris et qui reste selon moi d'un potentiel énorme en plus d'être très léger :)
Commentaire #12 Par Salve34 - 13:11 - 30.04.2010
Moi je me suis mis à Zend depuis 2 mois. C'est vrai que la Doc semble riche et en fait pas trés claire. Mais pour le reste pas d'accord. Zend est compliqué car n'est pas en fait un vrai FrameWork. Les compos sont en fait des briques utilisables comme on le veut sinon faut prendre Symphonie ou alors passer en JAVA avec Spring ou JSF et les EJB et là t'auras du costaud et du vrai.
Commentaire #13 Par Exirel - 18:47 - 01.05.2010
@Salve34 : hm, utiliser JAVA pour avoir "du costaud et du vrai", c'est un troll. Déjà, il faudrait me définir "du costaud" et "du vrai".
Prenons Ruby on Rails(en Ruby) ou Django (en Python) : là aussi ça me semble costaud, et c'est loin d'être "du faux".
Btw, que Zend soit compliqué fait que, à mes yeux, il ne vaut pas tripette. Ce n'est pas de la complexité dont j'ai besoin, c'est de l'utilisable, du fonctionnel, du pratique, et surtout du maintenable.
@Menencia : via IRC on doit sans doute avoir des réponses oui. J'ai eu la même impression sur la communauté : au courant, mais pas tellement engagée pour que ça change.
Je vais regarde Kohana tiens, je connais pas du tout.
Commentaire #14 Par Zend_FDP - 11:26 - 21.10.2010
je t'aime
Commentaire #15 Par JZ | Web developpeur - 14:46 - 29.01.2011
J'utilise Zend au boulot depuis 9 mois maintenant, j'ai donc été amené à m'en servir sur une flopée de projets différents.
Premier point, je suis d'accord avec le manque de documentation. Plus encore c'est le manque d'exemple pour créer une structure modulaire et propre qui manque. Lorsque je suis arrivé dans la boîte j'ai été épaulé par des personnes qui utilisent Zend depuis très longtemps et j'ai pu immédiatement bénéficier d'un balisage pour agencer et concevoir mon code en Zend. C'est ce point qui a du diriger le plus tout ces avis négatifs. L'apprentissage au début est rude, c'est vrai, mais une fois qu'on est dedans, apprendre à se servir d'un composant que l'on ne connait pas encore devient tout de suite plus facile.
Pour les critiques techniques, je ne suis pas d'accord:
1) En faisant les choses proprement on peut segmenter son code en modules indépendant. Ce qui me permet de réutiliser n'importe quel module d'un projet précédant en 15sec, sans aller dans le code simplement en faisant copier coller de trois dossiers (contrôleurs et vue, modèle, formulaire).
2) "les classes changent de nom en fonction de l'endroit où elles se trouvent" C'est positif: c'est une des raisons pour lesquels en trois copier coller je peux faire fonctionner un module d'un projet x dans un projet y. Il suffit pour cela de le mettre au même emplacement. Cela dit si ca te dérange, tu n'es pas obligé d'utiliser l'auto-loader, tu peux même utiliser Zend comme une simple librairie de fonctions (appel des méthodes statiques).
3) Pour les Bootstrap je rejoins Jean-Marc Fontaine: "il possible d'avoir des bootstraps par module."
4) "C'est une structure rigide, où chaque élément, s'il vient à disparaître, sera la cause d'effet de bords catastrophiques" C'est bizarre souvent on reproche sa rigidité à symfony (mais c'est cette rigidité qui lui permet de taper si peu pour en faire autant). Quant aux effets de bords, tu pourrais supprimer la moitié des modules d'un des projets que j'ai fait, les modules restants fonctionneront sans changer le code.
5) Pour les "getBidule" et "setBidule" je ne sais pas quoi répondre, ca ne me rappel rien.
Voila il se peut que je change d'avis un jour mais pour l'heure c'est mon expérience. Je n'ai rien contre ton point de vue, j'aime bien les avis francs quitte à être tranché, à contre-courant. Mais dans ce cas, accepte que moi aussi j'émette un avis tranché dans le sens opposé.
Commentaire #16 Par Mumu - 15:18 - 22.02.2011
Le bonjour tout d'abord et un... immense merci pour la publication de ce "coup de gueule".
J'ai eu la mauvaise idée de proposer cette horreur sans nom qu'est Zend dans une entreprise et du coup je suis obligée de me dépatouiller avec ! Mais j'ai l'impression d'être paumé au milieu d'un marais sombre et dès que j'entrevois un passage à sec soudain le sol se dérobe sous mes pieds et je me retrouve à nouveau dans les miasmes jusqu'à la taille !
Zend je te hais, je hais toute ta famille !! J'y perds, mon temps, de l'argent, ma santé mentale ! Incroyable au bout de trois jours de rage intensive, où j'ai pu débloqué deux micros avancées dans le projet que j'ai a concevoir, je m'acharne depuis deux heures à faire une simple ouverture et déclaration de session ... Sans dec' les mecs de Zend, vous plaisantez ou quoi ? Les sessions pour ne citer que cela, ça prends 5 mn en codant normalement !
Je ne parle même pas de la prochaine version du coeur du framework qui en plus, vous fera tout reprendre pour effectuer les corrections dans votre code si vous voulez bénéficier des nouvelles fonctionnalités et avancés du framework.
Framework -> gain de temps, pas perte de temps ! Je parle même pas des documentations qui me crame les neurones et me font plus que doutez de mes capacité intellectuelle. Si encore elle était complète, comme le dit l'auteur de ce topic dans la langue de la version d'origine ! On peu même pas en télécharger un pdf ! Je prétends pas être une lumière m'enfin quand même ... Rien à dire sur la communauté, elle est là, elle fait de son mieux.
Je me sentais franchement seule et désemparée me demandant si il n'y avait que moi qui trouvait que ce framework était "bbiiippp", mais ça me rassure de voir que d'autres partagent mon expérience et mon ressentie.
Je ne critique pas la communauté entendons nous bien, ni même les mecs qui ont conçu cette chose, mais je me demande si justement en faisant de Zend ce qu'il est, il n'y aurait pas une forme d'élitisme malgré tout, genre ouvrir et connaitre les secrets ainsi que fonctionnement de Zend, ne serait pas accéder au saint des saints pour qu'au bout du compte : Vous n'utilisez pas Zend ? Vous ne connaissez pas Zend, vous ne maitrisez pas Zend ? Seigneur un amateur !
Dommage, php est simple d'approche, simple à apprendre, pas besoin de sur dimensionner l'ego des utilisateurs et développeurs en concevant une chose abjecte qui se veut accessible par tous que par le discours, et peut être en déboursant monnaie sonnante et trébuchante pour suivre des formations. Quoique ce côté là est tout de même bien pensé.
Voila moi aussi j'ai poussé mon p'tit coup de râle !
Sur ce, je retourne parlementer pour la changement de framework avant de me retrouver en Hôpital Psy ! :P
Commentaire #17 Par JZ | Web developpeur - 17:38 - 26.03.2011
Mumu, je comprends ton coup de gueule, mais comprends aussi que une fois que tu maitrise la bête ca devient un gain de temps énorme.
Et pour les sessions que tu trouves compliquées, ce n'est jamais que deux lignes:
$sess = new Zend_Session_Namespace('membre'); $sess->photo = 'sa photo';
Commentaire #18 Par Noway - 13:01 - 27.01.2012
Zend est une usine à gaz. La nouvelle mode du toujours mieux dans le numéro de version sans une réflexion globale, vous met à genou en 20mn de bataille acharnée sur chaque opération. Pour un peu que vous utilisiez d'autre logiciels évoluant sur les mêmes méthodes de la chasse au numéro de version. Vous y passez 3 jours à configurer votre bordel. Si par la suite les librairies sont utiles pour ne pas réinventer la roue. La courbe d'apprentissage est si longue et fastidieuse, d'autant qu'elle chaotique, vaut bien la durée d'une formation sur un language complet, l'architecture d'un système... Faire gagner du temps, ne me semble pas au premier abord ce que ce framework fait de mieux !
Poster un commentaire
Haut de page