Apple avait gardé le meilleur pour la fin de son traditionnel keynote d’ouverture de la WWDC : le framework UIKit, qui permet de construire des applications iOS et tvOS, sera bientôt disponible sur macOS. Les développeurs iOS pourront plus facilement porter leurs applications vers macOS, comme le montre d’ailleurs Apple elle-même, qui a porté plusieurs de ses applications d’une plateforme à l’autre.
La firme de Cupertino espère ainsi redynamiser l’écosystème logiciel du Mac, en berne depuis le lancement de l’App Store… et du Mac App Store. Pour le moment toutefois, Apple se réserve encore la primeur d’UIKit sur Mac, et se donne jusqu’à 2019 pour l’améliorer, avant de le confier aux développeurs. Un délai qui ne fait qu’accroître les interrogations, auxquelles nous vous proposons d’apporter quelques (pistes de) réponses.
« UIKit sur Mac », c’est le projet Marzipan ?
Apple n’a pas prononcé le mot « marzipan » pendant la WWDC. Cela étant dit, il ne fait aucun doute que « UIKit sur Mac » concrétise du projet Marzipan décrit par la rumeur, d’autant que l’on trouve des références à Marzipan dans le code de macOS Mojave. Apple n’a probablement aucun intérêt à désigner ce système sous un nom de code ou une marque commerciale : les développeurs connaissent UIKit, et comprennent parfaitement l’appellation descriptive « UIKit sur Mac ».
Mais au fait, c’est quoi AppKit et UIKit ?
AppKit et UIKit sont des frameworks applicatifs, autrement dit des infrastructures permettant de concevoir des applications. Ces frameworks forment la couche la plus haute du système, qui gère la manière dont les applications réagissent aux demandes du système et de l’utilisateur, qui permet — pour résumer de manière très grossière — de créer une interface dynamique.
Il s’agit donc, du point de vue du développeur tiers, de la brique la plus visible du système. AppKit est le framework applicatif de macOS, dont les racines remontent à NeXTSTEP, alors que UIKit est le framework applicatif d’iOS et ses dérivés, mis au point pour l’iPhone. C’est la principale différence entre les deux plateformes, qui possèdent sinon des bases communes.
macOS et iOS ont vraiment les mêmes bases ?
Oui… et non. Si l’on regarde le schéma fonctionnel des deux systèmes de loin, on voit apparaître les mêmes couches :
- la couche de base : le noyau XNU combinant des éléments de BSD et Mach, le framework I/O Kit de création de pilotes, la couche réseau, les pilotes de systèmes de fichiers ;
- puis Core OS : qui possède de nombreux composants permettant d’accéder aux ressources matérielles et de communiquer avec le réseau et les périphériques ;
- puis Core Services : qui regroupe des services fondamentaux pour la création d’applications comme Foundation et Core Foundation, les différents systèmes de sécurité, le carnet d’adresses et les services de recherche, ou encore WebKit ;
- puis la couche Media : qui contient toutes les API liées au multimédia, comme AV Foundation et Core Audio pour l’audio, Core Image pour les images, Core Animation pour les animations 2D et 3D, Core Text pour l’affichage du texte, et bien d’autres composants ;
- et enfin la couche applicative : AppKit sur macOS, UIKit sur iOS, avec tous les systèmes associés, comme Spotlight et le Centre de notifications, les fonctions d’accessibilité, ou encore AppleScript.
En y regardant d’un peu plus près, on voit toutefois apparaître des différences sensibles, macOS et iOS ayant « dérivé » au fil du temps. Le projet Marzipan n’est que l’un des projets d’un énorme chantier entamé depuis quelques années, qui consiste à rapprocher progressivement les deux plateformes, pour revenir à un véritable coreOS commun.
La présentation d’UIKit pour Mac intervient à un moment clef : il n’a jamais été aussi facile de prendre une brique d’un système et de l’insérer dans la maçonnerie d’une autre, mais ce n’est pas encore simple. Nous sommes au beau milieu d’une transformation majeure des plateformes d’Apple, permise par la réorganisation des équipes de développement dirigées par Craig Federighi.
Est-ce que UIKit va remplacer AppKit ?
Les ingénieurs d’Apple l’ont dit haut et fort pendant les sessions de la WWDC : AppKit reste le framework par défaut de macOS. UIKit est une brique supplémentaire à disposition des développeurs, comme Metal pour les jeux ou WebKit pour le web, en somme. Le projet Marzipan vise à permettre aux développeurs iOS de porter rapidement leurs applications vers macOS, explique Apple, pas à remplacer AppKit. Du moins… pas à court terme.
Car les chiffres sont ce qu’ils sont : le Mac App Store compte moins de 30 000 applications, alors que l’App Store en compte plus d’un million. Pire : certaines des applications les plus populaires ne sont même pas des applications « natives », c’est-à-dire des applications utilisant AppKit, mais des applications web encapsulées avec Electron. Quelques-uns des développeurs les plus talentueux utilisent AppKit, mais on pourrait presque les compter sur les doigts d’une main.
Des applications macOS qui utilisent aujourd’hui Electron pourraient demain disparaître au profit de l’application iOS équivalente utilisant UIKit. Des applications iOS sans équivalent pourraient demain débarquer sur Mac (pensez à Netflix, qui pourrait sortir du navigateur, ou à Twitter, qui pourrait revenir par la fenêtre). Aujourd’hui, Apple ne veut probablement pas remplacer AppKit ; demain, les développeurs le remplaceront peut-être de facto.
Est-ce que les développeurs peuvent utiliser UIKit sur Mac dès aujourd’hui ?
Les développeurs ne peuvent pas encore utiliser UIKit sur Mac. Apple a déjà beaucoup travaillé sur UIKit, qui prend désormais en charge le pointeur, le redimensionnement des fenêtres en temps réel, les barres de défilement, les fenêtres de préférences, le copier-coller, le glisser-déposer, et d’autres éléments spécifiques à macOS. Mais elle doit encore beaucoup travailler : on ne peut pas redimensionner en temps réel la fenêtre de News, des éléments d’interface d’iOS qui n’ont aucun sens sur macOS apparaissent dans Bourse ou Dictaphone, et l’application Maison peine à afficher trois ampoules sur un écran 27 pouces.
Apple se réserve donc UIKit sur Mac jusqu’à l’an prochain, le temps de le tester à grande échelle avec macOS Mojave, et d’ajuster sa roadmap en fonction des retours des utilisateurs. Quelques bidouilleurs ont toutefois trouvé comment faire sauter les restrictions empêchant d’exploiter UIKit, et les développeurs les plus aventureux peuvent se faire la main en suivant les instructions que l’on peut trouver ici ou là. Ils devront toutefois accepter de « sacrifier » une machine, puisque UIKit exige l’accélération graphique, que les machines virtuelles ne prennent pas en charge.
Est-ce qu’un développeur macOS a intérêt à adopter UIKit ?
C’est une bonne question, que nous avons d’ailleurs posée à plusieurs développeurs. Ont-ils intérêt à abandonner une base de code qu’ils connaissent par cœur et bichonnent depuis des décennies parfois ? Probablement pas. AppKit est un framework robuste, solide, éprouvé, et continuera de l’être. UIKit est déjà très prometteur, mais il a clairement été conçu pour porter des applications iOS, pas pour créer des applications macOS. Dans quelques années et après quelques révisions, toutefois…
Est-ce qu’un développeur macOS et iOS a intérêt à laisser tomber AppKit ?
C’est une autre bonne question, que nous avons aussi posée à plusieurs développeurs. Une société comme l’Omni Group s’est fait une spécialité de concevoir des applications tirant pleinement partie des capacités de l’iPhone et pleinement partie des capacités du Mac. OmniFocus pour iPad n’est pas plus ou moins pratique ou flexible qu’OmniFocus pour macOS, il est… différent. Omni préférera peut-être continuer à développer OmniFocus pour macOS, mais une société moins investie dans macOS, ou un développeur individuel, préféreront sans doute simplifier leur vie et remplacer leur application Mac par une application iPad.
À quoi bon acheter une app macOS en 2018 ?
À résoudre un problème qui se pose en 2018, pardi ! Si vous achetez des applications pour la beauté du geste, vous devriez probablement mettre le holà jusqu’à l’an prochain, ce qui ne devrait pas être d’une difficulté insurmontable. Mais si vous avez vraiment besoin d’une application, ne vous laissez pas distraire par l’existence du projet Marzipan. Apple n’abandonne pas AppKit, vos applications continueront à tourner pendant de nombreuses années, et ne seront peut-être jamais remplacées par des applications UIKit.
Cette question doit plutôt être renversée et adressée aux développeurs : faut-il se lancer, en 2018, dans la création d’une application AppKit ? Un développeur iOS sera probablement tenté de laisser passer quelques mois et attendre UIKit, un développeur macOS expérimenté préférera peut-être coder maintenant plutôt qu’apprendre UIKit pour plus tard. La situation ne se décantera pas avant l’année prochaine et l’annonce détaillée des capacités et des limites d’UIKit sur Mac.
Est-ce que UIKit sur Mac préfigure l’adoption des processeurs ARM ?
Beaucoup de commentateurs lient directement le projet Marzipan et les rumeurs autour de l’abandon des processeurs Intel au profit de processeurs ARM. Ces axes de développement ne sont pas complètement indépendants, mais l’un n’entraîne pas automatiquement l’autre. Disons-le clairement, pour lever les doutes qui pourraient subsister : un Mac à processeur ARM n’est pas nécessairement un Mac sous iOS, un Mac à processeur ARM n’est pas nécessairement un Mac avec un écran tactile, un Mac à processeur ARM n’est rien d’autre… qu’un Mac à processeur ARM.
Est-ce que ce n’est pas une fusion de facto d’iOS et de macOS ?
« Non », dit Apple. Partons du principe que les déclarations d’Apple sont cohérentes et sincères : on peut tout à fait imaginer que les plateformes se rapprochent sans fusionner. Dans quelques années, l’App Store sera peut-être la boutique commune à tous les appareils frappés d’une pomme, et l’on pourra peut-être utiliser l’iPad avec une souris. Une couche supplémentaire des systèmes sera partagée, la couche applicative, mais les systèmes eux-mêmes resteront différents.
Car Apple a toujours été très claire : différents usages appellent différents matériels utilisant différentes interfaces. L’unification passe par les services — tous les appareils communiquent de manière transparente, partagent les mêmes fichiers et les mêmes données, s’enrichissent les uns les autres plutôt qu’ils ne s’opposent.
Avec UIKit et demain un processeur ARM, un Mac ne sera rien d’autre qu’un iPhone sous une autre forme. L’interface des applications s’adaptera aux conditions d’usage, du petit écran de l’Apple Watch au poignet au grand écran de l’iMac Pro sur le bureau, en passant par l’iPhone dans la poche. Et vous savez quoi ? Apple sera très heureuse de vous vendre un iPhone pour tel usage et un Mac pour tel autre, plutôt qu’un tout-en-un prétendument adapté à tous les usages.