Feuille de route
Hoa, quelques questions et réponses
Que veut dire Hoa ?
Hoa est un rétro-acronyme récursif de : Hoa Open
Accessibility.
Il se lit /hɔa˦/, soit
Quelques dates
Hoa a officiellement démarré le 1 janvier 2007, avec la publication d'un paquetage XML sur PHPClasses. Ce paquetage a été élu second meilleur paquetage de sa catégorie et n'a pas bougé de place depuis. La réaction la plus courante était la facilité d'utilisation, pari gagné.
Après moult péripéties, j'ai pensé qu'il serait intéressant de publier le framework. C'est chose faite le 2 février 2008, soit 1 an, 1 mois et 1 jour plus tard (ce n'est pas un hasard).
Pourquoi Hoa ?
J'ai tout d'abord conçu Hoa pour apprendre. En effet, le projet me servait de prétexte pour approfondir plusieurs domaines de l'Informatique, des besoins de différentes personnes ou milieux. Après 1 an à explorer plusieurs domaines, j'avais écrit un ensemble de bibliothèques qui devenait intéressant. J'ai donc publié publiquement le projet. Les premiers retours ont été très encourageants.
Certes, il existe de nombreux frameworks comme Symfony, Zend Framework, Jelix, CakePHP … Hoa est très jeune comparé à ces frameworks (presque de 2 ans pour les plus jeunes). Il faut le temps au projet de devenir plus mature.
Le but de Hoa n'est pas de concurrencer tous ces frameworks — qui sont, j'en suis sûr, très bien —. Le but est toujours de découvrir de nouvelles façons de répondre à un problème. Attention, Hoa n'y répond pas n'importe comment.
Simplicité
Hoa est tout d'abord pensé pour l'utilisateur. On tente donc d'être le plus complet possible tout en étant le plus intuitif possible. Chaque cas, chaque action, est vue et revue pour faciliter le travail de l'utilisateur.
Légèreté
Chaque paquetage de Hoa est toujours écrit de façon minutieuse de façon à avoir un système le plus léger, mais le plus performant possible.
Performances
On s'applique à utiliser les solutions les plus pointues pour résoudre la plupart des problèmes. Cela passe par l'utilisation de nombreux design patterns par exemple.
Chaque action est pensée pour économiser des ressources, de la mémoire, du temps de calcul, de la complexité etc., afin d'avoir un système optimal dans toutes les situations.
Hoa tente également d'améliorer les performances de l'application à travers différents systèmes de caches, ce qui aura pour effet d'économiser encore des calculs.
Standard et pérennité
Hoa met un point d'honneur sur l'utilisation des normes et standards. Ces derniers nous offrent plusieurs choses :
- bon fonctionnement et cohérence des applications ;
- interopérabilité des opérations avec d'autres applications ;
- pérennité des projets et ressources créés.
Hoa est très respectueux des normes, standards et recommandations, tels que ceux du W3C , RFC , ISO etc., et se base sur des fonctionnements similaires qui ont fait leur preuve ou qui sont reconnus comme étant une référence (on pense par exemple à Gettext).
Indépendance des paquetages et réutilisabilité
Un framework a pour vocation de fournir un environnement de développement le plus large possible afin de répondre à toutes les situations. Toutefois, on peut n'avoir besoin que de quelques bibliothèques. C'est pourquoi le couplage/dépendance entre les paquetages est le plus faible possible afin de pouvoir réutiliser tout ou partie du framework et de l'intégrer dans n'importe quel projet.
Licence permissive
Hoa est placé sous licence GNU GPL. Cette licence est suffisament permissive pour intégrer Hoa dans la plupart des projets.
Le projet est en version bêta
On aura naturellement remarqué que le projet est en version bêta. Cela implique que certains bugs peuvent exister pour les paquetages non-revus, c'est à dire les paquetages non-documentés. Néanmoins, les codes sont testés dans plusieurs situations, et même si un bug est détecté, il sera rapidement corrigé.
Mais ça implique surtout que le projet n'est pas encore au même stade que ce que je souhaite obtenir. Même si le projet est déjà largement utilisable, il ne faut pas s'arrêter et se faire une idée sur le projet tel qu'il est actuellement. Le projet va encore évoluer, et pas seulement dans ses paquetages, mais dans son utilisation en environnement de développement.
Personnellement, je ne conseille pas Hoa dans un environnement de développement ou de production « critique ». Mais certains l'ont fait, le projet a gagné en retours d'expériences ainsi que tous ses utilisateurs. Pour un environnement de développement personnel ou à petite échelle (des équipes de 5 à 15 personnes), Hoa conviendrait tout à fait, même si on espère séduire un public de plus en plus large.
Les plus
Objet, modulaire et extensible
Hoa est totalement programmé de façon orientée objet. Ce style de programmation assure une meilleure organisation, maintenance et flexibilité du code. En effet, le système de paquetage est conçu pour être très modulaire et extensible, c'est à dire que l'on peut facilement étendre les fonctionnalités du framework pour répondre à des besoins plus spécifiques.
Modèle Vue Contrôleur (MVC)
Le modèle de conception MVC partage les applications en trois couches : le modèle, la vue et le contrôleur. Avant que ce modèle n'existe, l'interface utilisateur consisitait en un simple agrégat de ces objets. Alors, on les a découplés pour accroître la flexibilité, la réutilisabilité et l'interopératibilité. En effet, chaque couche étant distincte les unes des autres, chaque département peut travailler sur ce qui le concerne sans se soucier ou rencontrer de problème avec d'autres départements. Les projets peuvent alors être élaborer ensemble, pour une rapidité et une productivité accrues.
Base de données
Les bases de données sont un point critique dans la gestion d'application. Hoa propose plusieurs systèmes de gestion de base de données à utiliser de façon très naturelle, et ont été très simplifiés sans pourtant perdre en puissance, performance et capacité d'action. Ainsi, on peut changer de système de gestion de bases de données de façon quasi-transparente.
Internationalisation, localisation et traduction
Les applications sont de plus en plus souvent amenées à être traduites en plusieurs langues, à manipuler plusieurs monnaies etc. C'est pour cela que Hoa a mis en place différents systèmes de traductions se basant tous sur des standards, comme Gettext, TMX, XLIFF etc. Hoa est également capable de localiser (continent, pays, ville) les utilisateurs à partir de peu d'informations, toujours en se basant sur les standards, comme ISO. Les langues, devises, mesures, encodages, fuseaux horaires en sont déduits le plus judicieusement possible.
Enfin, Hoa est écrit en unicode : UTF-8, pour éviter tous les problèmes liés aux encodages exotiques.
Système de cache
Afin d'éviter des calculs, des accès, des ressources …, pour permettre de meilleures montées en charge, Hoa propose un système de cache. On peut utiliser différents systèmes : APC, EAccelerator, fichiers, Memcache, SQLite, XCache, ZendPlatform, sans oublier ses propres systèmes.
Formulaires
Hoa propose un système de gestion de formulaire puissant et flexible. Les formulaires peuvent être codés nativement en PHP, ou en YAML, voire encore en XML etc. Le tout se manipule très bien et une méthode suffit à valider un formulaire en entier. De nombreuses fonctionnalités sont déjà prises en charge comme l'auto-complétion, la sécurité des mots de passes etc.
Autres outils
Bien sûr, Hoa comporte d'autres outils que l'on vous laisse découvrir.