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.
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.
Feature complete? iOS window manager proof of concept. Just a UIWindow subclass pic.twitter.com/fT0oFahOSM
— Steve T-S (@stroughtonsmith) December 23, 2015
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.
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.
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.
So… spent a night hacking with @b3ll (& @saurik!) - we got UIKit (& SceneKit) apps running on Apple Watch (video) pic.twitter.com/khcpHgVsZo
— Steve T-S (@stroughtonsmith) June 12, 2015
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.
- Lire aussi : Apple met de l'eau dans son NDA
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.
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.
- Lire aussi : Panic n’a pas su créer des apps iOS pertinentes
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.