Entretien avec Steven Troughton-Smith, le développeur qui révèle les secrets d'iOS

Stéphane Moussie |

Saviez-vous qu'avec un peu d'huile de coude il est possible d'avoir un mode Picture in Picture sur Apple TV ? Saviez-vous qu'il est possible de fenêtrer des applications sur iOS comme on le ferait sur OS X avec seulement 500 lignes de code ?

Si vous suivez le compte Twitter de Steven Troughton-Smith, vous le savez. Depuis des années, ce développeur explore les entrailles d'iOS à la recherche de fonctionnalités encore gardées secrètes par Apple. Son compte est une vraie mine d'or remplie de découvertes et expérimentations en tout genre. Steven Troughton-Smith a accepté de se livrer pour MacGeneration.

Steven Troughton-Smith

MacGeneration : Peux-tu te présenter ?

Steven Troughton-Smith : Je suis un développeur indépendant basé en Irlande. Je crée des apps principalement pour iOS, comme Speed, un calculateur de vitesse, ou Grace, une application aidant les autistes à communiquer.

Pourquoi passes-tu iOS au peigne fin à la recherche de nouveautés ? Est-ce simplement par curiosité, pour le challenge ou les deux ?

Les deux en effet, mais en premier lieu pour comprendre comment les choses fonctionnent et pour repousser les limites de ce qui est théoriquement faisable. C'est également utile pour comprendre parfaitement ce qu'il se passe lorsqu'un problème surgit.

La curiosité aide à se préparer aux choses qu'Apple est en train de mettre en place mais qu'elle n'a pas encore annoncées. C'est le cas par exemple du multi-fenêtrage sur iPad. Si vous y prêtez très attentivement attention, vous remarquez que certains de ces gros changements sont télégraphiés plus d'un an à l'avance. Pour quelque chose qui demande autant de travail que rendre une application redimensionnable, c'est un tuyau important. Inspecter iOS aide aussi à vérifier les rumeurs. S'il y a une mention directe dans le code, il y a de grandes chances que la rumeur soit exacte et vous pouvez commencer à vous y préparer.

Le multi-fenêtrage est un excellent exemple en effet. Juste après la sortie d'iOS 8 en bêta, tu as déniché le code servant à mettre deux applications côte à côte sur iPad, une fonction qui n'a été proposée qu'un an plus tard avec iOS 9. Comment tu l'expliques et comment se fait-il qu'Apple, si secrète d'ordinaire, laisse de tels indices ?

Les ingénieurs d'Apple sont toujours en train de travailler sur des choses qui ne sont pas vraiment finalisées pour la prochaine version du système. Comme tellement de choses sont interdépendantes, on peut facilement imaginer que le code inusité a été laissé parce que quelque chose d'autre en dépend en partie. Et puis, bien sûr, les ingénieurs ne s'attendent pas à ce quelqu'un aille fouiller ou comprenne ce code dormant.

Démonstration du multi-fenêtrage sur iOS 8 en juin 2014

Quels outils utilises-tu pour tes recherches ?

Je travaille sur un iMac 27". Il est non Retina, mais je l'utilise dans une résolution Retina. J'utilise principalement Hopper, que j'adore, comme désassembleur (un outil de rétro-ingénierie permettant d'étudier le fonctionnement interne de logiciels, ndlr). J'utilise aussi à côté class-dump (un outil qui affiche toutes les déclarations de classes Objective-C, ndlr) et l'utilitaire nm/otool de Xcode.

SwitchResX à la rescousse pour changer la definition sur l'iMac non Retina — Cliquer pour agrandir

Quelle est ta méthode pour trouver de nouvelles choses dans iOS ? Est-ce que la chance joue un rôle ?

Pour les gros éléments, c'est facile avec class-dump de dissocier par exemple les classes contenues dans iOS 9.0 et iOS 9.1. On voit immédiatement ce qui est nouveau et ce qui a changé de manière notable. Faire ensuite appel à son intuition et observer attentivement le code pour savoir où chercher prend aussi une grande partie du temps. Cela vient avec la pratique et la compréhension des rouages de l'OS. Généralement la chance n'entre pas en compte.

Quelle est la découverte dont tu es le plus fier ?

Je ne saurais pas dire. Il y a toujours quelque chose de nouveau à découvrir ou à vérifier, et une fois que cette chose devient publique, ce n'est plus « excitant ». Je pense que la découverte la plus importante a été le multi-fenêtrage sur iPad, en cela que cette fonction a fondamentalement changé la plateforme — de manière positive — et a demandé aux développeurs une charge de travail significative pour la prendre en charge. Une année supplémentaire pour réfléchir à comment rendre son application redimensionnable est inestimable.

Le « hack » dont je suis le plus fier est d'avoir fait en sorte que watchOS fasse tourner des applications réalisées avec UIKit (le framework pour créer des applications iOS, alors que l'Apple Watch a normalement WatchKit, ndlr). Je n'étais pas sûr que ce soit réalisable.

Comment fais-tu avec l'engagement de confidentialité auquel sont tenus les développeurs ? As-tu déjà été contacté par Apple pour retirer quelque chose de ton compte Twitter ?

Non, on ne m'a jamais demandé de retirer quoi que ce soit de Twitter. En général, j'attends que les logiciels soient rendus publics pour les désassembler, mais comme le NDA d'Apple est devenu moins strict au fil du temps, cela importe de moins en moins. Les bêtas comme les sessions de la WWDC ne sont plus confidentielles, et Apple a mis en place un programme de bêta publique. S'il y avait le moindre problème avec ce que je raconte, un paquet de personnes chez Apple m'auraient prévenu.

Qu'est-ce que tu attends d'iOS 10 ?

Je n'ai pas de prédictions vérifiées pour l'instant ! Je m'attends à voir le système d'extensions (introduit dans iOS 8, ndlr) renforcer l'interconnexion des applications sur la plateforme. Je pense que l'iPad doit voir ses capacités augmentées pour se distancier d'iOS. iOS 9 a commencé à donner cette impulsion.

Je crois par ailleurs que watchOS doit se tourner vers les applications UIKit pour devenir une vraie plateforme applicative. WatchKit ne représente pas l'avenir à mon avis.

Concernant tvOS, beaucoup de fonctionnalités d'iOS, comme le multi-fenêtrage ou le mode image dans l'image, vont sans nul doute finir par être intégrées. C'est une évolution assez évidente.

Démonstration du mode Image dans l'image sur Apple TV en janvier 2016

Penses-tu comme d'autres développeurs qu'Apple va ou doit sortir un « padOS », c'est-à-dire un système d'exploitation exclusif à l'iPad ?

tvOS, iOS, watchOS... ce sont juste iOS sous des noms différents. Ils partagent tous le même code, avec simplement une application différente au-dessus servant d'écran d'accueil. Apple devrait absolument permettre à l'iPad de faire des choses impossibles pour l'iPhone. On commence à le voir avec le multitâche. En dessous, il faut que ça reste la même plateforme pour les développeurs, mais avec la possibilité de tirer partie des différents form factor.

Ce que j'aimerais voir le plus, c'est une plateforme d'applications partagée entre iOS et OS X, et la dépréciation d'AppKit. Ces deux plateformes devraient grandir ensemble, et non pas l'une aux dépens de l'autre. Apple considère clairement cela comme un problème, il n'y aurait pas UXKit sinon. Ce framework est là pour rendre l'utilisation d'AppKit plus proche de celle d'UIKit. Je pense que le moment est venu.

  • UXKit est une réplique d'UIKit (le framework pour créer des apps iOS) construite au-dessus d'AppKit (celui pour créer des apps Mac). UXKit a été utilisé par Apple pour l'application Photos sur Mac. Apple n'a pas encore permis son utilisation par les développeurs. Pour en savoir plus : UXKit, la surprise cachée de Photos

Donc si je comprends bien, tu aimerais pouvoir développer une application iOS et une application Mac avec UXKit ? Ça fait penser à l'approche de Microsoft avec Windows 10 et son Universal Windows Platform. On obtiendrait alors des applications vraiment « universelles ».

Oui, OS X est l'intrus actuellement. Il devrait y avoir beaucoup plus de code partagé entre lui et iOS. Les applications tvOS sont parfaitement adaptées aux téléviseurs, en dépit du fait qu'elles sont créées avec le même UIKit que nous utilisons pour les apps iOS. OS X devrait s'insérer dans cette plateforme. Les applications écrites pour iPad devraient pouvoir être portées facilement sur OS X, et vice versa. L'innovation pourrait circuler dans les deux sens. Ça ne devrait être qu'une seule et unique plateforme.

À l'instar de tvOS, ça ne signifierait pas qu'OS X aurait de simples applications iOS. Ça signifie au contraire que les développeurs pourraient concevoir et fabriquer des applications sans se soucier d'un second paradigme. C'est la même idée que l'Universal Windows Platform de Microsoft : il n'y a pas de version « desktop » ou « mobile », il y a juste une app qui évolue sur le bureau et le mobile en même temps. Je ne pense pas qu'UXKit soit la réponse définitive, c'est plutôt une solution intermédiaire, mais Apple explore clairement cette voie.

Est-il difficile de gagner sa vie en tant que développeur indépendant ?

Oui, je pense qu'il est difficile pour les indés de vivre des App Store. On a trop souvent vu des développeurs respectés retirer leur app du Mac App Store dernièrement. Dans le dernier billet de blog de Panic, Cabel (le cofondateur du studio, ndlr) écrit « Je commence de plus en plus à penser que nous avons tout simplement créé le mauvais type d’applications iOS — nous avons créé des outils professionnels qui ne sont pas vraiment recherchés sur cette plateforme — et que le prix n’est pas le problème, c’est leur pertinence. » C'est un reflet incroyablement triste de l'environnement dans lequel on essaie de gagner notre vie, je trouve. Si Panic n'y arrive pas, qui le peut ?

Cela étant dit, il n'y a pas de pénurie de travail sur iOS si vous êtes prêt à renoncer à contrôler votre destin. Vous pouvez réaliser des commandes d'applications ou rejoindre une entreprise de développement. Le reste des développeurs semble quitter le navire et travailler maintenant pour des plateformes comme Facebook.

Pour conclure, quelles sont tes applications Mac et iOS préférées ?

J'adore voir les applications iPad repousser les limites de la plateforme, comme Pythonista ou Workflow, ou proposer des expériences que l'on ne peut pas retrouver sur OS X, comme Adobe Illustrator Draw. À part ça, j'utilise Reeder, MindNode et le client Twitter officiel. Sur OS X, il y a dans mon Dock Twitterrific, Hopper, Hex Fiend, EyeTV et Photoshop.

avatar tigre2010 | 

J'ai pas compris un truc :
Il a un iMac non Retina et il utilise dessus une résolution Retina. Il fait comment pour quadruplé ses pixels? Ou y'a un truc que j'ai pas compris?

avatar macinoe | 

L'affichage sur l'écran n'est pas meilleur, mais ça permet de faire des captures en resolution retina et de tester le comportement des applications optimisées pour le retina. On peut aussi zoomer en gardant un meilleur rendu.

L'inconvénient, c'est que ça dégrade les performances d'affichage pour des avantages assez maigres.

Mais pour un developpeur, ça peut en effet être utile.

avatar françois bayrou | 

Ce que je retiens c'est qu'à ce rythme là, dans 10 ans on aura les apps fenetrées, redimensionnables et superposables, et dans 20 ans, un finder.
Et tous ceux qui aujourd'hui nous expliquent à quel point c'est facile et nécessaire de s'en passer, crieront au génie.

avatar macinoe | 

Si Apple veut sauver l'iPad, il y a plutôt intérêt à ce que ça se fasse plus vite que ça.

Entre les ventes qui baissent et les développeurs d'application de productivité qui ne parviennent pas à trouver un modèle économique viable, le déclin est déjà bien amorcé.

avatar marc_os | 

« Je pense que l'iPad doit voir ses capacités augmentées pour se distancier d'iOS. »

Ça veut dire quoi ?
Problème de traduction ?

avatar XiliX | 

@marc_os

Et non, il veut un quelque sorte un padOS... car de toute manière iOS sur iPad permet de faire certaines choses que ne le peut iOS sur iPhone. De la même manière que watchOS et tvOS, il serait donc logique d'avoir un padOS

avatar marc_os | 

@ XiliX
Non, ce n'est pas ce qu'il dit, au contraire :
« Les applications écrites pour iPad devraient pouvoir être portées facilement sur OS X, et vice versa. L'innovation pourrait circuler dans les deux sens. Ça ne devrait être qu'une seule et unique plateforme »

avatar patrick86 | 

A mon avis, le challenge pour Apple avec UXKit, c'est de faciliter la portage d'apps entre OS X et iOS (et le partage de code entre les 2 versions), tout en évitant d'inciter les dev à se contenter de balancer une app iPad sur OS X, sans lui faire tirer parti des possibilités du paradigme écran-clavier-souris — sinon autant utiliser un iPad — et sans permettre de balancer sur iPad des apps OS X non adaptées au tactile.

C'est le problème de Windows 10 : un PC et une "tablette" peuvent exécuter très facilement les apps de l'autres. Résultat, on a sur PC des interfaces trop simplistes et sur "tablettes" des interfaces trop complexes.

avatar XiliX | 

@patrick86

Exact... un partage de certains codes (le moteur par exemple) et garder les spécificités de chaque plateforme (interface)

avatar Glop | 

@patrick86, @XiliX
Absolument ..

avatar BeePotato | 

@ patrick86 : « A mon avis, le challenge pour Apple avec UXKit, c'est de faciliter la portage d'apps entre OS X et iOS (et le partage de code entre les 2 versions), tout en évitant d'inciter les dev à se contenter de balancer une app iPad sur OS X, sans lui faire tirer parti des possibilités du paradigme écran-clavier-souris — sinon autant utiliser un iPad — et sans permettre de balancer sur iPad des apps OS X non adaptées au tactile. »

Tout à fait.
C’est le problème classique des frameworks uniques. Mais je ne crois pas qu’il soit possible d’utiliser une approche purement technique pour empêcher ça.

Tout ce qu’Apple pourrait faire, c’est renforcer le rôles des équipes de validation de ses App Stores, histoire de limiter autant que possible l’usage de cette approche. Le souci, c’est qu’il serait bien possible d’empêcher ainsi les applications Mac de débarquer sur iOS, mais il ne serait pas possible de bloquer complètement le mouvement inverse, la distribution sur Mac pouvant se faire hors store. Or, vu le nombre de développeurs des deux plateformes, il est probable que c’est surtout dans ce sens-là que se poserait le problème.

Et encore, je ne parle là que des applications complètement inadaptées à la plateforme sur laquelle elles auront été « portées » à l’arrache. Mais quid des cas moins tranchés ? Les applications adaptées a minima, juste assez pour qu’on ne puisse pas les bouler facilement. On a déjà eu l’occasion d’en voir sur Mac, même sans UXKit.
Bon, après, on peut toujours se dire que c’est aux acheteurs de faire le tri. Mais le problème est qu’une multitude de mauvais portages de ce genre serait susceptible de nuire aux bons développeurs, ceux qui font des efforts mais dont l’offre se retrouverait noyée au milieu d’un océan de médiocrité.

Pas étonnant qu’Apple n’ait pas encore livré de framework unifié (et puis franchement, ce n’est quand même pas un boulot énorme de passer d’un framework à l’autre).

avatar patrick86 | 

@BeePotato :

C'est comme l'idée de permettre l'utilisation d'une souris sur iPad… Si ça n'incite pas des dev à faire des interface trop compliquées, ou si iOS ne le permet pas, why not.

"Bon, après, on peut toujours se dire que c’est aux acheteurs de faire le tri."

Pas toujours évident, quand c'est THE app qui fond ce qu'on cherche à faire. :-/

avatar NikLoy | 

Merci pour cet article :)

avatar XiliX | 

Merci MacGé pour l'interview :ThumbUp:

avatar Patrick75 | 

Super intéressante l'interview même si je ne suis qu'un amateur éclairé ! Merci

Super réactions aussi dans les commentaires !

Juste un gros désaccord avec ce développeur. Il donne son point de vue sur l'AppStore avec laquelle il a du mal. Ne perdons pas de vue que du côté utilisateurs / clients l'Appstore et top et qu'on a pas nécessairement envie d'aller sur chaque site des développeurs....

avatar macinoe | 

L'idéal serait que l'un n'empêche pas l'autre.

Entre tout interdire et tout autoriser, il y a des tas de nuances.

avatar joneskind | 

@macinoe

À ce sujet, je trouve que l'approche d'Apple qui a été de laisser n'importe quel utilisateur compiler du code Open Source sur son iBidule va dans le bon sens. La prochaine étape pourrait être une app GitHub permettant d'installer ses apps sans passer par Xcode.

Pages

CONNEXION UTILISATEUR