Expertise · Applications de bureau
Applications qui s’installent sur l’ordinateur. Sur macOS, nous en avons construit deux ; pour Windows et Linux, cette page est une offre, pas un historique.
Nous construisons des applications natives pour macOS, avec le noyau logique séparé de l’écran, afin que la même logique fonctionne aussi sur le téléphone. Pour Windows et Linux/Ubuntu, nous n’avons encore rien livré et nous l’écrivons tel quel, avec les conditions dans lesquelles nous accepterions le travail. La première question reste de savoir si vous avez vraiment besoin d’une application installée.
Offre, avec conditionsLa règle est mécanique et je l’applique mécaniquement. Sur macOS, nous avons deux implémentations propres, construites et exécutables : une application de barre de menu avec 25 fichiers Swift, qui réutilise 15 fichiers du noyau d’un projet d’iPhone, et une deuxième application, plus simple, qui est une enveloppe WebKit au-dessus d’une application web. Les deux ont un binaire compilé sur cette machine. Mais le service, tel qu’il est nommé, couvre trois familles de systèmes, et pour deux d’entre elles — Windows et Linux/Ubuntu — nous avons cherché sérieusement et trouvé zéro : aucun projet .NET ou Qt propre, aucun `tauri.conf.json`, aucun Electron écrit par nous, aucun `.desktop`, aucun paquet deb, rpm ou AppImage. En plus, aucune des deux applications macOS n’a jamais été empaquetée dans un installateur distribuable. Avec seulement une des trois plateformes couverte et zéro distributions, la page s’écrit comme une offre avec conditions. Quand nous livrerons la première application Windows ou Linux, la valeur changera, pas le texte.
La première question que nous vous posons n’est pas pour quel système, mais si vous avez réellement besoin d’une application installée. Elle mérite d’être installée lorsqu’elle a besoin de quelque chose que le navigateur ne lui donne pas : accès direct aux capteurs ou aux périphériques, présence permanente dans la barre système, travail sans internet, accès aux fichiers du disque sans que la personne les charge à chaque fois, ou exécution en arrière-plan quand la fenêtre est fermée. Si rien de tout cela n’est requis, un site qui s’ouvre depuis un lien est moins coûteux à construire, à mettre à jour et à maintenir — et nous vous le disons, même si le travail devient plus petit.
Sur macOS, nous avons deux applications construites. La première est une application de barre de menu : 25 fichiers Swift propres, plus 15 fichiers de noyau repris directement du projet iPhone du même produit — les mêmes fichiers, pas une copie. Elle se construit avec un script qui appelle directement le compilateur Swift, cible `arm64-apple-macosx14`, en liant onze frameworks système, parmi lesquels SwiftUI, AppKit, CoreMotion, Vision et UserNotifications. Le binaire obtenu a 6.516.128 octets. La seconde est beaucoup plus simple et il est honnête de dire combien : trois fichiers Swift, un habillage WebKit au-dessus d’une application web, avec sandbox et runtime renforcé activés, compilé universellement pour processeurs Intel et Apple. Ce sont deux choses différentes et nous les nommons différemment.
Ce que nous n’avons pas, dit clairement. Windows : zéro. Nous avons recherché des projets .NET, WPF, WinForms, WinUI, des fichiers `.xaml`, `.appxmanifest`, `.msi`, `.wxs` — tout ce que nous avons trouvé sur le disque appartient à une bibliothèque C tierce, vendorisée dans un autre projet, que nous n’avons pas écrite. Linux desktop : zéro — aucun fichier `.desktop`, aucun paquet deb ou AppImage construit ici. Electron ou Tauri écrits par nous : zéro. Et, tout aussi important : aucune des deux applications macOS n’a jamais été empaquetée dans un installateur. Elles existent comme paquets `.app` construits localement, signés ad hoc, sans identifiant d’équipe.
Ce que l’expérience acquise transfère malgré tout, et c’est la partie qui compte pour un nouveau projet : la discipline de garder le noyau de logique séparé de l’interface. Dans le projet macOS, les fichiers de calcul et de politiques n’importent pas l’interface, donc ils se compilent et s’exécutent sur Mac comme programme ordinaire, sans simulateur ; leur suite de logique s’exécute en quelques secondes. La même séparation fait que le portage sur un autre système est un problème d’habillage, pas de réécriture. C’est sur cela que nous nous appuyons quand nous disons que nous pourrions faire Windows ou Linux — pas sur une expérience que nous n’avons pas.