Safari, comme tous les autres navigateurs web, peut accueillir des extensions. Ces petits bouts de code apportent des fonctionnalités supplémentaires liées à des services web ; on y trouve par exemple une extension pour 1Password, pour Evernote, ou encore Pinterest. Ces extensions sont regroupées sur une page web éditée par Apple.

Depuis macOS Sierra (et Safari 10 sous El Capitan), les développeurs peuvent proposer avec leurs applications des extensions compagnon pour Safari. Ces App Extensions offrent des possibilités supplémentaires au navigateur : elles sont en mesure de personnaliser les pages web et d’ajouter des items dans les menus contextuels de ces mêmes pages, elles savent bloquer le chargement de contenus ou d’éléments spécifiques, ajouter des boutons dans la barre de menus du logiciel, et afficher des popovers.
Ces App Extensions étant livrées avec l’application pour macOS, elles peuvent donc être mises à jour automatiquement dans la foulée du logiciel hôte. L’utilisateur n’a pas à s’embêter à télécharger et installer le compagnon pour Safari. Pour le développeur, l’intérêt d’en passer par ce système — qui nécessite de concevoir l’extension avec Xcode plutôt que les outils web standard — est de pouvoir vendre une extension Safari, puisqu’il bénéficie de l’infrastructure de paiement du Mac App Store. Les extensions précédentes, proposées dans la galerie, sont toutes gratuites.

Alors, tout le monde est content ? En fait, pas vraiment. Les applications macOS embarquant des compagnons pour Safari se comptent sur les doigts des deux mains : elles ne sont pas mises en avant par Apple (aucune catégorie dédiée n’est proposée), et pour les débusquer, il faut vraiment le vouloir. Avec la requête « Safari extension », le moteur de recherche du Mac App Store retourne moins d’une dizaine de résultats :

D’autres applications non listées embarquent leur propre extension, surtout des bloqueurs de contenus payants comme 1Blocker ou Roadblock. Il est vrai que les possibilités offertes par ces App Extensions en font des atouts de premier choix pour ce genre de logiciels, et une présence sur le Mac App Store permet à leurs développeurs de gagner un peu d’argent.

D’autres développeurs ont montré un certain intérêt pour les App Extensions, à l’instar d’AgileBits pour 1Password. Mais jusqu’à présent, l’éditeur du gestionnaire de mots de passe bien connu en reste à son extension web classique.
Tempête dans un verre d’eau
Steve Sobel, le développeur de Reddit Enhancement Suite (RES), une suite d’outils destinés à améliorer la consultation de Reddit, témoigne de sa galère dans un billet Medium au vitriol. Une de ses principales récriminations tient au fait qu’il lui est nécessaire de régler les 99 $ que coûte l’adhésion annuelle au programme Développeur d’Apple.
C’est effectivement une nécessité, ne serait-ce que pour pouvoir signer une application (et s’éviter une manipulation supplémentaire pour l’installer sur Sierra) et pouvoir ensuite la proposer sur le Mac App Store. Autre contrepartie, on accède à toute la palette d’outils de développement et au support Apple pour toutes les plateformes logicielles du constructeur.

Être présent dans la boutique d’Apple ou dans la galerie des extensions nécessite d’en passer par le processus de soumission du constructeur. Une étape indispensable qui peut rapidement tourner au parcours du combattant, comme cela a été le cas pour Steve Sobel : il lui a fallu attendre des semaines pour voir son extension apparaitre finalement dans la galerie.
Les vérificateurs d’Apple ont réclamé à plusieurs reprises des documents (une licence pour utiliser le nom “Reddit”) que le développeur n’a cessé de fournir. Et puis sans prévenir, RES a obtenu son feu vert, on peut le trouver à cette adresse. La communication d’Apple avec ses développeurs est souvent difficile, et ce problème de soumission rappelera chez beaucoup d’entre eux des galères similaires.

Sobel se plaint également d’une galerie qui n’est pas spécialement bien fichue, elle ne présente aucune capture écran et les informations proposées sont réduites à la portion congrue, contrairement à ce que l’on peut trouver sur Chrome, Firefox ou encore Opera qui ressemblent à de vraies boutiques.
Le concepteur de RES jette ensuite le bébé avec l’eau du bain. Il explique ainsi que la mise à jour automatique des extensions n’est pas possible en dehors de la galerie (ou du Mac App Store), mais Apple autorise cette possibilité en passant par le serveur web du développeur.
Autre grief : Chrome, Firefox, Opera et Edge partagent un système d’extensions commun, WebExtensions, qui facilite la vie des développeurs. Ces derniers peuvent ainsi adapter plus aisément leurs extensions à tous les navigateurs (lire : Firefox, extension du domaine de Chrome). Safari se tient effectivement à l’écart de WebExtensions, ce que Sober interprète comme une obligation faite par Apple d’en passer par l’adhésion à 99 $, Xcode et un Mac.
Mais tout cela n’est indispensable que si l’on souhaite développer une App Extension qui sera distribuée sur le Mac App Store dans le même « paquet » que l’application macOS. Pour une extension standard, pas besoin de Xcode, les outils web traditionnels sont suffisants. De plus, rien ne dit qu’Apple veut forcer la main des développeurs web, les deux méthodes restant d’actualité. Et au vu de l’absence totale de communication autour des App Extensions, on peut se demander si Apple veut vraiment pousser ce type d’applications compagnon.
Cette tempête dans un verre d’eau a cependant une vertu, celle de montrer qu’Apple communique toujours bien mal avec ses développeurs web (malgré une plus grande ouverture via le lancement des Technical Preview de Safari) — aussi bien en termes de choix technique pour les aider dans leurs développements, que pour le suivi des nouveautés de Safari (les App Extensions mériteraient un peu plus de considération).