· Réactions à chaud

Alloy, simplifiez-vous le développement mobile sous Titanium

Vous avez déjà essayé de développer des applications avec Titanium, ce SDK hyper-puissant permettant de concevoir des applications mobiles (et desktop) en partant d’une seule et même base de code en JavaScript ? Si non, je vous conseille d’y jeter un œil rapidement, l’outil vaut le détour. Si oui, formidable, vous êtes alors déjà au courant que si l’outil est extrêmement puissant, il est tout autant ultra-permissif.

C’est d’ailleurs l’un des points faibles de Titanium : il ne propose pas un cadre de développement suffisamment structuré, et n’offre pas de solution pour architecturer facilement ses codebases.

Oui, mais ça, c’était avant…

Car depuis quelques semaines les gentils garçons d’Appcelerator (société éditrice du SDK Titanium), conscients des lacunes de leur outil, ont commencé à développer un framework en surcouche de leur SDK : Alloy. Ce dernier apporte ce qui manque aujourd’hui à Titanium nativement : une architecture claire capable de prendre en charge pour le développeur les structures de base.

Alloy arrive donc en implémentation du design pattern MVC (Modèle/Vue/Controlleur) comme on les aime. Mais ce n’est pas tout… Alloy va plus loin en proposant également de gérer les migrations de données, les styles de présentation des composants, les widgets… Et comme à chaque métier son jargon, Alloy offre de gérer ces éléments non-pas uniquement en JavaScript, mais dans des syntaxes adaptées : les vues sont rédigées en XML de façon déclaratives, les migrations en JSON…

Du côté de l’outil, Alloy fourni un outil en ligne de commande écrit en JavaScript et exécuté en environnement Node.js. C’est cet outil qui va initialiser les projets, générer les scripts de base, gérer la compilation de l’application et exécuter l’application en environnement de test. Et comme Appcelerator est à la base de la solution, un plugin pour Titanium studio (l’éditeur Titanium fourni par Appcelerator) suit le développement pour offrir directement les templates de base à la création d’un nouveau projet, et intégrer l’outil en CLI dans le workflow.

Nous avons donc testé cet outil prometteur. Sur le papier, la description est plus qu’alléchante : on retrouve les grands paradigmes de développement moderne mis au profit du SDK. Dans la pratique, pour ceux qui utilisent des frameworks comme Ruby on Rails ou Symfony, on retrouve rapidement ses marques. C’est même un confort particulièrement agréable. Malheureusement, le rêve s’arrête là, un peu brutalement…

Car la solution, actuellement distribuée en early-beta, n’est pas encore stable. A raison de 10 à 20 commits par jour, on voit qu’Appcelerator avance à grands pas et fourni un effort considérable pour développer Alloy. C’est aussi la source de nombreuses erreurs. En un week-end, nous avons pu voir passer 3 mises à jour du paquet npm, la première ayant cassé l’instanciateur (impossible d’initialiser totalement un projet) ; la deuxième, le compilateur (impossible alors de lancer le projet) ; quant à la troisième, les templates des vues et des contrôleurs s’avéraient incomplets…

Conclusion, l’outil promet beaucoup mais n’est pour le moment pas utilisable en production (en tout cas, sans y laisser un maximum de cheveux et de nuits blanches). Cela dit la solution est plus que prometteuse, et les objectifs sont engageants. Elle montre notamment que l’équipe d’Appcelerator a atteint une phase de maturité suffisante dans son SDK pour se permettre de commencer à concentrer ses efforts vers des outils tiers, et poser les bases d’une architecture solide.

Pour se faire une idée précise, nous vous donnons rendez-vous dans quelques semaines pour un article technique complet détaillant le développement d’une app de lecture de flux RSS basée sur l’API Google Reader. Ce billet sera pour nous l’occasion de tester le framework en temps réel dans des conditions de production, et de vous faire profiter de notre retour d’expérience…

4 commentaires

  1. Bon, et sinon, à part des effets d’annonce creux (« on retrouve les grands paradigmes de développement moderne mis au profit du SDK. Dans la pratique, pour ceux qui utilisent des frameworks comme Ruby on Rails ou Symfony, on retrouve rapidement ses marques »). Vous parlez de quoi au juste ? Parce qu’hormis gagner 19 points au Scrabble avec le mot paradigme, ça n’apporte franchement pas grand chose…

    « Alloy offre de gérer ces éléments non-pas uniquement en JavaScript, mais dans des syntaxes adaptées : les vues sont rédigées en XML de façon déclaratives, les migrations en JSON… » : ah, et depuis quand JSON est-elle la syntaxe adaptée pour les migrations ?

    Allez, on dira que c’est un article bon pour le SEO…

  2. Matthias Dugué

    Dans le cas de l’utilisation des frameworks tels que RoR ou Symfony, le socle MVC est fourni « de base », et c’est même leur raison d’être : il suffit de suivre les règles de codage imposées (convention over configuration) pour exploiter les différents composants du design pattern. Alloy offre le même confort dans le cas des développements avec Titanium. Si on n’utilise que le SDK, il faudra veiller à gérer soit même les différentes couches (modèles, vues, controleurs). Même si « ça va de soit » en théorie, ce n’est pas toujours évident. De la même façon on peut très bien développer une app MVC directement en PHP ou en Ruby. Mais le faire avec un outil adapté comme Symfony ou RoR facilite quand même grandement les choses…

    Pour le cas des migrations, la syntaxe proposée par Alloy est déclarative, appuyé sur JSON (mais pas uniquement) ce qui, à mon sens, est plutôt explicite et fonctionnel. Mais c’est un point de vue qui se défend, je serais curieux d’avoir votre propre position sur le sujet.

    Quant à « paradigme », il n’offre malheureusement qu’un score de 15 au scrabble (sans bonus)…

  3. @Laurent,

    Il serait de bon ton de prendre ce type d’article de manière informative, et surtout comme une invitation à la veille. Il n’est pas question ici de faire l’apologie d’une techno en faveur d’une autre, mais d’effectuer une veille informative et ouverte.

    Si vous êtes développeur, ou plus généralement dans les métiers de l’informatique, j’espère que vous avez une capacité de recul et de remise en question suffisante pour vous intéresser à tous les satellites qui gravitent autour des nouvelles technologies.

    Un professeur de philosophie me disait souvent : « l’agressivité et souvent montre d’une ignorance équivalente ». Je pense qu’il vaut mieux être assertif dans ce cas de figure, allez, un mot de vocabulaire en plus !

    @Matthias, merci pour cet article intéressant, la prochaine fois que je jouerai au Scrabble… :-)

    A bon entendeur…

    Alex

  4. Thomas Lemaitre

    Merci pour cet article. Depuis, Alloy a bien évolué et on peut l’utiliser en production. La développement des projets, la gestion des ressources et de la mémoire s’en trouve grandement amélioré grâce à Alloy, permettant ainsi de se concentrer réellement sur le développement de l’application.

    De manière générale, Titanium Mobile évolue vite et enrichi de plus en plus son SDK. Il supporte également de plus en plus de plateforme avec l’arrivée de Tizen et de BlackBerry !

    N’hésitez pas à rejoindre le groupe Titanium Mobile Français et à partager votre avis : https://www.facebook.com/groups/1381667905402526/

Les commentaires sont désormais fermés.