TravailleursDuWeb se BLACK OUT contre HADOPI

Le difficile choix d’un framework php…

Publié le 29 April 2008, par Babozor dans la catégorie Développement, Organisation, méthodo..., Outils

framework.jpg

Ah la la, que c’est difficile de choisir un “bon” framework php… chez findawine on en est au stade de la réflexion, qui tient plus du casse tête chinois. Mais comment faire pour choisir de façon cohérente et précise le framework qui nous convient le mieux?

1. Quelle utilité
Une des première question à se poser est: pourquoi je veux adopter un framework?
Et bien évidemment cette première question en appelle d’autres, mais principalement quelles sont les tâches que je veux que le framework prenne en charge et quelles sont celles qui me reviennent.
C’est important puisqu’on peut séparer les frameworks actuels en deux clans: les frameworks complets et les autres (ce qui n’est pas réducteur ou mauvais, c’est juste deux modes de fonctionnement différent).
Le premier clan couvre 98% des problématiques qu’un développeur pourra trouver devant son chemin, alors l’autre est plus là pour aider ou délester le développeur des tâches rébarbatives.

2. Quelles fonctionnalités obligatoires
Une des premières tâche est de faire la liste des fonctionnalités obligatoires que doit avoir le framework, et ainsi analyser ses besoins.
Pour nous:
– Structure MVC stricte
– Scripts exploitable en ligne de commande
– Gestion de profils Base de données (plusieurs types, mais aussi plusieurs serveurs en simultanée)
– Gestion efficace et hautement configurable du cache
– Support full UTF8

3. Quelles fonctionnalités supplémentaires/optionnelles
La tâche suivante est de définir le liste des fonctionnalités supplémentaires ou optionnelles qui peuvent nous rendre la vie un peu plus agréable.
Pour nous:
– Outil scaffolding / Back Office
URL rewriting
– Localisation (multi-langues)
– Connecteurs webservices/api
– Documentation
– Tests unitaires métiers
– Surchargement des fonctions et classes simple
– Possibilité d’ajout de plugins

4. Quelles technologies
Vient ensuite la liste des technologies choisies: pour nous rien de plus facile, du classique: AMP (Apache, MySQL et Apache)

5. Se renseigner
Vient donc la tâche longue et fastidieuse d’aller à la pêche aux infos, trouver des sources, voir les spécifications, vérifier, etc…
Quelques sources pour cela:
liste des framework PHP (via WikiPedia pas complète loin de là, mais un bon début)
un article de JDN développeurs (qui date un peu) sur 12 framework PHP
– un thread du forum developpez.com sur le choix des frameworks php (lancé par l’ami vinch si je ne m’abuse?)
ou encore un comparatif de 10 framework sur PHPit
C’est une liste non exhaustive des différentes sources utilisées…

Nous avons donc établi une liste des différents frameworks qui correspondaient (plus au moins) à nos attentes:
CakePHP
Jelix
CodeIgniter
Copix
Kohama
SolarPHP
Symfony
Zend
eZComponents

6. Coût d’entrée / mise en place / support / communauté / contraintes
Ce sont des éléments extrêmements importants à ne pas négliger… le coût d’entrée et de mise en place est crucial, il vous dira quel sera votre investissement initial et en combien de temps votre équipe sera opérationnelle avec ce nouveau framework.
Il vous faut aussi être conscient des contraintes inhérentes à votre choix: les limitations, les choses que vous ne pourrez pas faire ou qui vous prendront beaucoup plus de temps qu’aujourd’hui… les bibliothèques ou classes que vous risquez de devoir modifier pour matcher vos besoins, la difficulté de ceci, etc…
Enfin en dernier c’est important de savoir quels projets ont déjà été réalisés avec tel ou tel framework, la communauté derrière tel ou tel projet, la roadmap de développement, la fréquence des releases, etc… cela vous permet de vous rassurer (ou vous faire craindre la pire).

7. Tester
Là c’est la partie la plus longue, la plus ingrate et sans aucun doute la plus partiale.
C’est là où vous allez installer et tester le framework. C’est aussi le moment où vous pourrez voir si non seulement les fonctionnalités sont au rendez-vous mais surtout si la façon de coder du framework vous correspond (ça peut paraître annexe, mais pour moi c’est un des points les plus importants). Chacun sait que chaque développeur à sa façon propre de coder, et vous allez voir si le code du framework vous correspond ou pas.
Pour ma part l’installation d’un framework est assez révélateur de la façon de coder des gens… une installation difficile et brouillonne me fais penser que les codeurs n’ont pas suffisamment penser aux autres, alors qu’un framework même avec quelques fonctionnalités en moins mais beaucoup plus accessible me plaît beaucoup plus (mais là c’est mon avis à moi).
Bref, pas de tergiversation, il va falloir s’y mettre.

8. Faire son choix
Le choix en gros revient à deux ou trois framework.
Nous avons éliminer les postulants suivants:
Copix, parceque Jelix semble une évolution plus maintenue et plus avancée de Copix
CodeIgniter (à mon grand regret) car codé en PHP4
Kohama, pour son peu de visibilité (et parceque des frameworks très similaires voir identiques existent déjà)
Zend pour sa lourdeur
eZcomponents idem

Il nous reste donc CakePHP/Jelix contre Symfony (pas encore eut le temps de tester SolarPHP, qui à l’air prometteur mais un peu en dessous de Jelix/Cake en terme de fonctionnalités), la bataille des framework agiles contre l’omnipotent.

Pour l’instant on se donne un peu le temps de la réflexion (une décision comme celle ci est importante et ne se prend pas à la légère) et on continue de tester.

Quelques frameworks qui n’ont pas été retenus mais semblent intéressant/prometteurs:
Atomikframework un seul script 15 Ko, et des capacités très raisonnables (pseudo MVC, système de packages, bdd, cache, erreor, command line, etc… je le test en ce moment à titre perso, c’est très efficace et très agile, j’adore)
Qcodo: pas sûr d’avoir tout compris, mais apparemment un framework événementiel basé sur votre modèle de données. Le principe à l’air sympa, bien que pas exploitable sur ce projet.

Et vous vous utilisez quoi comme framework? Quels sont les critères qui vous ont fait choisir tel ou tel produit?



Laissez un commentaire