Avec l'arrivée de Mac OS X 10.5, nous avons interrogé plusieurs développeurs (*) qui utilisent ce système depuis maintenant plusieurs mois : en quoi va-t-il transformer leurs applications et quels en seront les bénéfices ou les contraintes pour l'utilisateur ? Raphaël Sebbe, développeur chez les belges de eX-cinder (logiciels de trucages vidéo, morphing…) relate son expérience et offre son point de vue, avec un accent mis sur les nouveaux outils de développement.
(*) Interview précédentes : Tri-Edre - Rogue Amoeba - app4mac - Objective Decision - Elgato - Delicious Monster
Morph Age Pro 4.0 pour Leopard, en développement jusqu'au début 2008. Beaucoup de nouveautés prévue dont la principale est le morphing de films QuickTime.
Au vu du type d'applications que vous réalisez, en quoi Leopard apporte-t-il un changement ?
RS : Le langage Objective-C 2.0 et son garbage collector ("ramasse-miettes" en traduction littérale). L'Objective-C c'est le langage de programmation de prédilection sur Mac OS X/Cocoa. Le 2.0 est une évolution importante. Il rend le développement plus rapide et plus propre, par l'ajout de propriétés, énumération rapide, etc. Et il garde ses atouts principaux : très grande souplesse (langage faiblement typé) et intégration immédiate avec le C.
Le garbage collector permet lui de développer des applications sans se préoccuper de la gestion de la mémoire. En temps normal, à chaque fois qu'on alloue un objet en mémoire, on doit également le désallouer lorsqu'on ne s'en sert plus. Si on ne le fait pas, on gaspille de la mémoire vive mais si on le désalloue trop tôt, on risque le crash de l'application. Avec le garbage collector on n'a plus à s'en soucier, il détermine lui-même si un objet est encore utilisé ou pas et il agit en conséquence. Mais c'est au prix d'un scan permanent de la mémoire. Ce surcoût dans le temps d'exécution peut être parfois compensé en fonction des applications.
L'utilisation d'un garbage collector est un choix assez radical pour le développeur car il est difficile ensuite de faire machine arrière. Nous avons fait le choix de porter certaines applications vers ce mécanisme pour nous faire la main. Après des débuts laborieux (séances de prières collectives pour que les ingénieurs d'Apple corrigent un problème important avant la sortie…), ça semble maintenant sous contrôle.
Au bout du compte, nous observons un gain appréciable en temps de développement, et l'application ne semble pas ralentir. Les architectures multi-core (tous les Macs maintenant sont au minimum bi-processeurs) ne sont exploitées que par la programmation multi-thread, elle-même compliquant la gestion de la mémoire. Le garbage collector simplifie fortement ce cas de figure. Et moins de temps passé à faire la chasse aux bugs c'est plus de temps passé sur les nouvelles fonctions des applications.
Dans le nouvel Xcode, l'outil de développement d'Apple, la complétion automatique est plus performante qu'avant, cela permet d'éviter de se plonger trop souvent dans la documentation quand on a le nom d'une fonction sur le bout de la langue. Le refactoring, un outil qui permet de faire des changements importants dans un projet en tenant compte de la sémantique, est également très intéressant. On peut par exemple changer le nom d'une méthode sans changer d'autres attributs qui auraient le même nom (rechercher/remplacer lui ne ferait pas la distinction et remplacerait tout). Snapshot est aussi pratique. Il permet de sauvegarder l'état du projet avant de s'embarquer dans des gros changements et d'y revenir en cas de problème (ça n'est pas nouveau dans le principe mais la mise en eouvre est très simple).
On citera aussi les outils de déboguage comme Xray basé sur DTrace de Sun, permettant d'analyser une application à tout point de vue (allocations mémoire, utilisation CPU, resources systèmes) sous forme de timeline à la GarageBand. Un point tout particulièrement intéressant est de pouvoir réaliser des enregistrements de séquences d'événements sur l'interface graphique et les reproduire ultérieurement pour comparaisons.
Comment ces changements vont-ils se traduire côté utilisateur ?
RS : Le garbage collector impliquera moins de crash et de gaspillage de la mémoire. Mais les développeurs ne sont pas obligés de l'utiliser, donc ce sera au cas par cas. Pour Core Animation, il y a des possibilités. Nous évaluons où cela peut-être opportun, et la difficulté consiste à ne pas abuser de ces effets visuels pour ne pas fatiguer l'utilisateur avec ces interfaces qui bougent dans tous les sens.
Est-ce que vous avez des regrets vis à vis de ce qui a été fait dans Leopard ?
RS : La vitesse. Je n'ai pas encore eu accès à la golden master au moment de cette interview, mais il y a un certain délai dans les réponses de l'interface. Il est probable que les optimisations seront meilleures dans la version finale. Il reste des bugs importants dans Interface Builder, notamment au niveau de l'utilisation de views Core Animation (cela n'aura probablement pas de conséquences dans la version finale). Mais peut-être est-ce dû à la machine utilisée (MacBook et son GPU Intel GMA950) ?
Nous n'avons pas encore fait migrer toutes nos machines et donc nous n'avons pas pu évaluer ce problème ailleurs. Interface Builder ayant été réécrit de zéro, on peut lui pardonner ces erreurs de jeunesse, surtout en considérant tout ce qu'il apporte de nouveau. Sinon, je dois aussi dire que Leopard est une plateforme de développement solide et agréable à laquelle on s'habitue vite, tous les automatismes se mettant en place rapidement. Difficile de faire machine arrière après...
Cette version 10.5 est pour vous plus importante que les précédentes ?
RS : Il est vrai qu'on sent une certaine maturité s'installer dans les versions successives de Mac OS X. Chaque nouvelle version a apporté son lot de nouveautés. Les plus importantes pour nous ont été les Bindings, Core Image, Quartz Composer. Pour Léopard en particulier, on remarque que les modifications du langage visent clairement a simplifier la vie du développeur, et même à abaisser la barre d'entrée (les langages garbage-collectés sont plus accessibles, cf. Java, C#, python...) et permettent ainsi d'agrandir la communauté. D'autre part, Core Animation, et la mise à jour de Quartz Composer / Core Image / OpenGL permettent d'aller toujours plus loin dans les effets visuels, ce qui prend de plus en plus d'importance dans les applications grand public notamment.
Certains développeurs ont déjà prévenu que leur prochaines applications ne fonctionneraient que sur Leopard. Qu'en est-il chez vous ?
RS : Nous continuerons le support des versions actuelles sous Tiger, mais en effet, nous nous concentrons sur les développements Leopard maintenant. C'est un peu l'esprit de la plate-forme de vouloir avancer le plus rapidement possible, sans s'encombrer de lourds héritages (les ports séries et autres lecteurs de disquette 3.5'). C'est sans doute un effort pour l'utilisateur et pour le développeur mais c'est probablement le prix à payer pour suivre l'innovation.
Cette fois en tant qu'utilisateur vous-même de Leopard, qu'est-ce qui vous plaît le plus dans ce nouvel OS ?
RS : La nouvelle icône des préférences. Non, c'est pour rire... Quick Look (qui permet de regarder le contenu d'un fichier sans l'ouvrir) et les répertoires intelligents sont sympas. Spotlight a l'air beaucoup plus performant aussi. Mais Leopard reste surtout une base de travail pour les applications tierces, et le meilleur reste à venir il me semble...
(*) Interview précédentes : Tri-Edre - Rogue Amoeba - app4mac - Objective Decision - Elgato - Delicious Monster
Morph Age Pro 4.0 pour Leopard, en développement jusqu'au début 2008. Beaucoup de nouveautés prévue dont la principale est le morphing de films QuickTime.
Au vu du type d'applications que vous réalisez, en quoi Leopard apporte-t-il un changement ?
RS : Le langage Objective-C 2.0 et son garbage collector ("ramasse-miettes" en traduction littérale). L'Objective-C c'est le langage de programmation de prédilection sur Mac OS X/Cocoa. Le 2.0 est une évolution importante. Il rend le développement plus rapide et plus propre, par l'ajout de propriétés, énumération rapide, etc. Et il garde ses atouts principaux : très grande souplesse (langage faiblement typé) et intégration immédiate avec le C.
Le garbage collector permet lui de développer des applications sans se préoccuper de la gestion de la mémoire. En temps normal, à chaque fois qu'on alloue un objet en mémoire, on doit également le désallouer lorsqu'on ne s'en sert plus. Si on ne le fait pas, on gaspille de la mémoire vive mais si on le désalloue trop tôt, on risque le crash de l'application. Avec le garbage collector on n'a plus à s'en soucier, il détermine lui-même si un objet est encore utilisé ou pas et il agit en conséquence. Mais c'est au prix d'un scan permanent de la mémoire. Ce surcoût dans le temps d'exécution peut être parfois compensé en fonction des applications.
L'utilisation d'un garbage collector est un choix assez radical pour le développeur car il est difficile ensuite de faire machine arrière. Nous avons fait le choix de porter certaines applications vers ce mécanisme pour nous faire la main. Après des débuts laborieux (séances de prières collectives pour que les ingénieurs d'Apple corrigent un problème important avant la sortie…), ça semble maintenant sous contrôle.
Au bout du compte, nous observons un gain appréciable en temps de développement, et l'application ne semble pas ralentir. Les architectures multi-core (tous les Macs maintenant sont au minimum bi-processeurs) ne sont exploitées que par la programmation multi-thread, elle-même compliquant la gestion de la mémoire. Le garbage collector simplifie fortement ce cas de figure. Et moins de temps passé à faire la chasse aux bugs c'est plus de temps passé sur les nouvelles fonctions des applications.
Dans le nouvel Xcode, l'outil de développement d'Apple, la complétion automatique est plus performante qu'avant, cela permet d'éviter de se plonger trop souvent dans la documentation quand on a le nom d'une fonction sur le bout de la langue. Le refactoring, un outil qui permet de faire des changements importants dans un projet en tenant compte de la sémantique, est également très intéressant. On peut par exemple changer le nom d'une méthode sans changer d'autres attributs qui auraient le même nom (rechercher/remplacer lui ne ferait pas la distinction et remplacerait tout). Snapshot est aussi pratique. Il permet de sauvegarder l'état du projet avant de s'embarquer dans des gros changements et d'y revenir en cas de problème (ça n'est pas nouveau dans le principe mais la mise en eouvre est très simple).
On citera aussi les outils de déboguage comme Xray basé sur DTrace de Sun, permettant d'analyser une application à tout point de vue (allocations mémoire, utilisation CPU, resources systèmes) sous forme de timeline à la GarageBand. Un point tout particulièrement intéressant est de pouvoir réaliser des enregistrements de séquences d'événements sur l'interface graphique et les reproduire ultérieurement pour comparaisons.
Comment ces changements vont-ils se traduire côté utilisateur ?
RS : Le garbage collector impliquera moins de crash et de gaspillage de la mémoire. Mais les développeurs ne sont pas obligés de l'utiliser, donc ce sera au cas par cas. Pour Core Animation, il y a des possibilités. Nous évaluons où cela peut-être opportun, et la difficulté consiste à ne pas abuser de ces effets visuels pour ne pas fatiguer l'utilisateur avec ces interfaces qui bougent dans tous les sens.
Est-ce que vous avez des regrets vis à vis de ce qui a été fait dans Leopard ?
RS : La vitesse. Je n'ai pas encore eu accès à la golden master au moment de cette interview, mais il y a un certain délai dans les réponses de l'interface. Il est probable que les optimisations seront meilleures dans la version finale. Il reste des bugs importants dans Interface Builder, notamment au niveau de l'utilisation de views Core Animation (cela n'aura probablement pas de conséquences dans la version finale). Mais peut-être est-ce dû à la machine utilisée (MacBook et son GPU Intel GMA950) ?
Nous n'avons pas encore fait migrer toutes nos machines et donc nous n'avons pas pu évaluer ce problème ailleurs. Interface Builder ayant été réécrit de zéro, on peut lui pardonner ces erreurs de jeunesse, surtout en considérant tout ce qu'il apporte de nouveau. Sinon, je dois aussi dire que Leopard est une plateforme de développement solide et agréable à laquelle on s'habitue vite, tous les automatismes se mettant en place rapidement. Difficile de faire machine arrière après...
Cette version 10.5 est pour vous plus importante que les précédentes ?
RS : Il est vrai qu'on sent une certaine maturité s'installer dans les versions successives de Mac OS X. Chaque nouvelle version a apporté son lot de nouveautés. Les plus importantes pour nous ont été les Bindings, Core Image, Quartz Composer. Pour Léopard en particulier, on remarque que les modifications du langage visent clairement a simplifier la vie du développeur, et même à abaisser la barre d'entrée (les langages garbage-collectés sont plus accessibles, cf. Java, C#, python...) et permettent ainsi d'agrandir la communauté. D'autre part, Core Animation, et la mise à jour de Quartz Composer / Core Image / OpenGL permettent d'aller toujours plus loin dans les effets visuels, ce qui prend de plus en plus d'importance dans les applications grand public notamment.
Certains développeurs ont déjà prévenu que leur prochaines applications ne fonctionneraient que sur Leopard. Qu'en est-il chez vous ?
RS : Nous continuerons le support des versions actuelles sous Tiger, mais en effet, nous nous concentrons sur les développements Leopard maintenant. C'est un peu l'esprit de la plate-forme de vouloir avancer le plus rapidement possible, sans s'encombrer de lourds héritages (les ports séries et autres lecteurs de disquette 3.5'). C'est sans doute un effort pour l'utilisateur et pour le développeur mais c'est probablement le prix à payer pour suivre l'innovation.
Cette fois en tant qu'utilisateur vous-même de Leopard, qu'est-ce qui vous plaît le plus dans ce nouvel OS ?
RS : La nouvelle icône des préférences. Non, c'est pour rire... Quick Look (qui permet de regarder le contenu d'un fichier sans l'ouvrir) et les répertoires intelligents sont sympas. Spotlight a l'air beaucoup plus performant aussi. Mais Leopard reste surtout une base de travail pour les applications tierces, et le meilleur reste à venir il me semble...