PDFKit : lorsqu'Apple sème les bugs, les développeurs trinquent

Florian Innocente |

macOS 10.12.4, arrivé en version finale cette semaine après 8 bêtas, devrait apporter quelque soulagement aux utilisateurs et éditeurs d'applications PDF, confrontés à des dysfonctionnements laissés sans correction par Apple depuis des mois.

Il aura fallu quatre mises à jour successives de Sierra pour que ce problème soit clairement mis en avant par Apple. Les notes de version de la bêta de 10.12.4 demandaient de vérifier le bon fonctionnement des rouages du système dédié à l'utilisation de PDF : « Reading, writing and navigating PDFs using system-provided APIs ». Ça c'était pour les développeurs, côté utilisateurs la version finale promet du mieux avec les rendus et les annotations de PDF dans Aperçu.

Ces ennuis n'étaient pas nouveaux, dès la sortie de Sierra des bugs variés ont touché toute une collection d'utilitaires spécialisés dans la production et l'utilisation de documents PDF. Au départ, cela semblait provenir de ces logiciels puis leurs auteurs ont pointé du doigt "PDFKit", l'un des nombreux frameworks de macOS.

En novembre, Eric Bönisch-Volkmann, co-fondateur de l'éditeur DEVONtechnologies, se plaignant des bugs de Sierra avec les documents PDF

Un seul PDFKit pour macOS et iOS

En voulant réécrire la version macOS de PDFkit pour l'unifier avec celle d'iOS, Apple a cassé la compatibilité de cette boite à outils avec les applications qui piochaient dedans depuis quelques versions du système. Au début de l'année, Christian Grunenberg, développeur de Mindwrap, écrivait :

Apple veut utiliser une fondation commune pour iOS et macOS. Seulement, [PDFKit] a été lancé trop tôt, et pour la première fois (…) Apple a rendu obsolète plusieurs fonctions sans se soucier de leur compatibilité. Et pour corser les choses, beaucoup de ces anciennes fonctions sont maintenant cassées ou pas du tout intégrées, ce qui veut dire que nous devons mettre au point des solutions de contournement ou développer les nôtres.

Cette obligation de réinventer la roue est également l'option qu'a retenue le petit éditeur belge iSolid avec son application PDFZone [1.0 Gratuite en version d'essai Lite ou 25,99 €]. Cet outil, fraichement sorti, est spécialisé dans l'extraction automatique et par lot d'informations contenues à l'intérieur de PDF et leur export dans le format CSV prisé par les tableurs. Si par exemple vous devez récupérer tous les mois des données d'une facture à des fins comptables, il suffit de cibler une fois ces éléments dans un document type et la moulinette de PDFZone procèdera ensuite automatiquement pour tous les PDF de même nature.

Les développeurs laissés dans le noir

Comme DEVONthink, ScanSnap, DocumentSnap, ou encore Bookends, ce logiciel a pris de plein fouet les modifications réalisées à la hussarde par Apple. Malchance supplémentaire, iSolid lançait ici la toute première version de son application. Pour compliquer encore la vie de tout le monde, Apple n'avait pas documenté ces changements dans son framework. PDFKit figurait parmi les thèmes abordés dans l'une des sessions de la WWDC 2016, mais il faut croire que le message sur ses évolutions n'a pas été correctement transmis ou alors qu'il était superficiel.

Jonathan, l'un des deux développeurs chez iSolid, explique la situation qui prévalait il y a quelques mois pour les développeurs :

Le problème est surtout au niveau des fonctions qui d'apparence ne changent pas (la définition est la même), mais pour lesquelles Apple a changé leur implémentation (le code derrière). En théorie, ces changements devraient être invisibles puisque la fonction est censée faire la même chose ! En pratique, beaucoup d'entre elles étaient tout simplement cassées. Ça illustre vraiment le manque de tests faits par Apple.

PDFKIt contient des API toutes prêtes pour gérer le glisser déposer de documents PDF et les afficher, pour surligner des passages, ajouter des annotation ou bien isoler les images et le texte du fichier.

Des solutions maison pour éviter les bugs d'Apple

Dans le cas de PDFZone, son développement a démarré à l'époque d'El Capitan et tout fonctionnait correctement. C'est à partir de Sierra que les choses sont allées de mal en pis, malgré des signalements effectués par des développeurs alors que le système était encore en bêta. En août, octobre, novembre, décembre et les mois suivants, la litanie des plaintes à l'égard du nouveau PDFKit dans le forum développeurs d'Apple ne s'est pas interrompue. Ce qui a commencé à poser un sérieux problème pour iSolid :

N’étant pas la seule équipe de développement rencontrant des problèmes (exemple majeur: Fujitsu et leur ScanSnap dont les PDFs scannés devenaient tout blancs une fois ouverts avec Aperçu), nous nous sommes dits que macOS 10.12.1 règlerait rapidement le souci étant donné son ampleur. Hélas non… Même histoire pour macOS 10.12.2. Pendant ce temps, PDFZone ne pouvait toujours pas être mis en ligne sur le Mac App Store.

L'éditeur belge s'en émeut auprès de Craig Federighi. Le patron des équipes logiciels d'iOS et macOS accuse réception et demande plus d'informations, comme de lui préciser le ou les numéros de rapports de bugs que l'équipe a peut-être déjà soumis.

La mi-décembre arrive et la troisième mise à jour de Sierra sort en bêta, sans les correctifs attendus. Les notes de version n'indiquent que des banalités et la version finale fin janvier ne parlera que de la correction d'un bug avec la recherche dans les PDF.

On était encore loin du compte expliquent les développeurs d'iSolid qui ont décidé de ne plus attendre et éviter les bugs d'Apple en développant leurs propres fonctions internes chaque fois que possible, avec comme objectif de lancer enfin leur application :

  • Le glisser déposer de PDF sur la PDFView (la fenêtre d'affichage, ndlr) ne fonctionnait tout simplement plus, rien ne s’affichait. PDFZone ne pouvait dès lors plus être utilisé, car on ne pouvait plus définir un modèle d'extraction. Nous avons contourné le problème en créant une vue transparente au-dessus de la PDFView pour détecter le glisser déposer. À partir de là, l’application demande (d’une façon différente que le glisser déposer qui ne fonctionne plus) à la PDFView d’afficher le PDF.
  • Lorsque l’application demandait à la PDFView de ne plus rien afficher et qu’un PDF était affiché auparavant, un bug graphique apparaissait. Détail amusant, ce bug ne se produisait pas avec tous les PDFs, seulement certains. Pour ce problème, nous ne pouvions malheureusement rien faire (en tout cas pas dans un temps raisonnable), mais il n’affecte pas le bon fonctionnement du logiciel, seulement l’interface utilisateur.
L'illustration du bug ci-dessus

Ce ne sont là que deux exemples partagés par l'éditeur, bien d'autres problèmes pénalisaient le bon fonctionnement de PDFZone et de ses camarades. En définitive, le développement de ces solutions de contournement a porté ses fruits et rendu l'utilitaire fonctionnel sur Sierra. Même Apple semble avoir opté pour cette voie. Dans un article sur Tidbits, un développeur constatait qu'Aperçu dans Sierra n'était pas affligé des bugs constatés ailleurs, comme si ses auteurs chez Apple avaient eux-aussi créé des solutions de fortune en attendant que PDFKit soit corrigé.

Avec la bêta du 10.12.4, Apple a commencé à faire le ménage dans ses bugs, cependant iSolid préfère conserver ses propres solutions « pour assurer une compatibilité avec les anciennes versions de Sierra. Les futures mises à jours de PDFKit seront suivies de très près de notre côté ».

Il y a toutefois un mal pour un bien dans cette histoire, conclut l'éditeur « PDFZone sort finalement avec six mois de retard, mais ce temps n’était pas que perdu, nous en avons profité pour améliorer les algorithmes et le design de l’application. »

Ce malheureux épisode rappelle quelque peu celui de 2015 avec les services système Discoveryd et mDNSResponder. Le premier avait remplacé le second et généré toute une série de problèmes réseau dans OS X et iOS avant qu'Apple ne rebrousse chemin.

Dans le cas de PDFKit, il est désolant de constater qu'il aura fallu quatre mises à jour de Sierra pour que le problème soit pris à bras le corps. Qui plus est pour du PDF, un format de fichiers historiquement bien loti sur Mac.

avatar sveireman | 

Avec AutoCAD 2017 pour Mac, les PDF publiés avec la fonction Publication par lots sont bardés d'annotations indésirables. C’est très pénible.

avatar YARK | 

En tant que grand utilisateur de pdf, je fais bien de ne pas me presser de passer à Sierra....

Si Apple pouvait enlever le mot "pro" de toutes ses nouveautés ce serait quelque part plus honnête.

avatar mimot13 | 

@Yark : oui ! Pour l'utilisateur lambda Sierra ne pose pas trop de soucis, pour un utilisateur plus exigeant ou un Pro, il vaut mieux rester sous El Capitan (bien qu'il doit y avoir là aussi quelques bugs encore) en attendant que Sierra soit abouti. J'utilise les deux systèmes simultanément (betas aussi), Sierra est séduisant mais n'est pas encore fini..
NB : j'ai beaucoup aimé la possibilité dans la 10.12.4 finale de pouvoir interroger Siri sur les résultats des matchs de Cricket..! Vraiment drôle, au second degré seulement.

Les problèmes du PDF seront résolus bien sûr, un jour prochain, mais ce qui reste plus inquiétant c'est la nouvelle "direction" qu'à prise Apple récemment. Elle patauge grave à mon humble avis, dû à un chamboulement interne et un "vague à l'âme" de ses équipes R&D qui ne sont pas prêtes au changement radical qu'on leur a demandé, à savoir la convergence d'ios et de Mac OS. Ca parait anodin dit comme ça, mais dans une grosse entreprise ce genre de changement peut entraîner des dysfonctionnements gravissimes.

Mais bon, les $$$$ rentrent et de quoi se plaint-on ? Tim est heureux et les actionnaires aussi..?

avatar occam | 

Le merdier — il n'y a pas d'autre mot — PDFKit a rendu Sierra inutilisable pour tous les projets que je gère. Il a fallu revenir à 10.11 sur tous les Mac dont les titulaires avaient eu le malheur de faire l'upgrade.
Si je n'avais pas eu plus de 30 ans d'expérience sur Mac, => WinSwitch immédiat.

Ce n'est pas la première fois qu'Apple nous fait le coup, en voulant unifier des ressources iOS et OS X/macOS sans faire leur "homework" proprement. C'est ainsi qu'ils ont bousillé iWork pour Mac, qui ne s'en est toujours pas remis. Version après version, on cherche encore à recoller les pots cassés. Quel gaspillage de temps et d'énergie — surtout de *notre* temps et énergie — et quel manque de regard pour les utilisateurs du Mac.

Il fut une longue époque où l'on pouvait avoir l'impression que Windows ne servait qu'à embêter ses utilisateurs. Si Apple avait l'ambition de rejoindre puis surpasser Microsoft, eh bien, dans ce domaine aussi, c'est une réussite inespérée. On n'en méritait pas tant.

avatar byte_order | 

Et oui, devoir gérer à grande échelle la retro-compatibilité avec un historique important et une forte audience pour vos solutions, cela vous expose à plus de risque de couacs.

C'est pas tant un problème de MS vs Apple sur ce plan, mais de croissance de la complexité qu'engendre cet objectif.

avatar fte | 

@byte_order

L'argument "on a travaillé dur sur ce produit / cette API / ce bidule" m'a toujours laissé de marbre.

Qu'est-ce que j'en ai à faire qu'ils aient travaillé dur. Ou pas. En fait, ils travailleraient sans pentalon sous un parasol à siroter du rhum que je n'en aurais pas beaucoup plus à faire.

C'est le résultat entre mes mains qui m'importe. Qu'ils travaillent dur ou pas ne justifie pas de me livrer un produit défaillant. Ce qui compte c'est qu'ils travaillent bien. C'est leur job de gérer cette complexité. Une bourde arrive. Vite. Ne pas la corriger après des mois ? Ce n'est plus une bourde. C'est du mauvais boulot. Dur ou pas.

Ceux qui disent ça s'imaginent quoi d'ailleurs ? Qu'on bosse mou ? L'argument ne me laisse pas totalement de marbre à vrai dire, il m'inspire une réponse très directe en deux mots, le premier commençant par f et le deuxième par y.

avatar heero | 

En meme temps pour un pro c'est con mais tu utilises Adobe Acrobat Pro comme application par défaut.
Aucun problème avec lui (annotations, rendu, couleurs, etc...)

avatar r e m y | 

@heero

Le plus gros probleme n'est pas de remplacer Aperçu, mais de devoir se passer d'applications qui malheureusement s'appuient sur pdfkit (snapscan par exemple, mais il y en a plusieurs autres qui sont citées dans l'article)

Et concernant Aperçu, le drame c'est que même en ayant demandé l'ouverture de tous les pdf par le Reader d'Acrobat, il arrive qu'un pdf soit quand même ouvert par Apercu (que l'on ne peut pas virer purement et simplement). Et Aperçu (du moins jusqu'à 10.12.3, je n'ais pas encore tester à fond 10.12.4) détruit instantanément certains pdf et comme il enregistre en continu les modifications qu'il effectue (sans action aucune de l'utilisateur), ces modifications destructrices sont instantanément répercutées sur l'original qui est irrémédiablement endommagé.

Espérons que ces problèmes soient enfin réglés (mais il y a deja des messages dans les forums qui mettent en évidence de nouveaux bugs...)

avatar heero | 

par contre tjs eu Acrobat qui ouvre mes PDF si j'ai choisi de le mettre par défaut

après avoir demandé l'aide de Adobe pour le passage de Aperture a Lightroom, Apple ferait bien de demander un passage de Aperçu à Acrobat hahahah

avatar r e m y | 

@heero

En double-cliquant sur un pdf reçu en pièce jointe d'un eMail, depuis Mail, il n'est pas rare que ce soit Apercu qui soit lancé pour ouvrir le pdf, meme si on a demandé qu'ils soient ouverts par Reader...

avatar heero | 

han oki ;) j'utilise Spark et Outlook

avatar byte_order | 

> après avoir demandé l'aide de Adobe pour le passage de Aperture a Lightroom,
> Apple ferait bien de demander un passage de Aperçu à Acrobat hahahah

Si on en est là, autant demander un passage de macOS à iOS, cela sera plus simple et plus clair.

avatar thierry37 | 

Pareil pour moi. Après 10 ans de Preview dans MacOS (OS X), j'ai installe un Adobe Acrobat reader.
La honte ultime pour apple !!! 😊

J'avais des pdf remplis qui apparaissaient vide.

avatar softjo | 

Qu'Apple mette autant de temps pour régler des bugs très gênant pour une fonction aussi basique, importante et utilisées de la grande majorité des utilisateurs de manière régulière... c'est du n'importe quoi.

Donc pour les bugs un peu moins important on comprend pourquoi il leur faut 1 an, des fois 5 ou simplement ils les ignorent...

avatar byte_order | 

Des bugs qui n'impactent pas les utilisateurs de iOS, plateforme à la source de 70% de leurs revenus.

Faut pas chercher plus loin. Les développeurs macOS chez Apple n'ont plus l'oreille de la direction depuis longtemps déjà.

Et ce qui vaut pour l'OS, vaut aussi pour le hardware. Cf MacPro...

avatar fte | 

@byte_order

Yep. Il est l'heure passée de voter avec son argent.

avatar MisteriousGaga | 

"Pour la première fois Apple a rendu obsolète plusieurs fonctions [...] compatibilité" c'est pas la seule et unique fois moi j'vous dis 😂

avatar GoldenPomme | 

Ca coûte des sous de faire des tests et vu qu'apple est quasiment sur la paille, on comprend mieux du coup. ^^

avatar YARK | 

C'est pour ça que toutes leurs nouvelles bécanes sont toutes maigres...

avatar Filou53 | 

par contre, les émoticons,
comme il ne doit pas y avoir grand-chose à tester, ils en font des tonnes :-(

avatar YARK | 

Et puis faut bien comprendre le temps passé par des milliers d'ingénieurs à choisir la couleur d'un bracelet de breloque...

avatar jerome74 | 

Pour info, il reste encore des gros bugs PDF dans 10.12.4 (je parle bien de ceux introduits avec 10.12); par exemple tous les mots surlignés dans une même page sont surlignés avec la même couleur… Pfff!

avatar Moonwalker | 

Pas chez moi.

avatar vomi | 

Mal joué de la part d'Apple, la gestion des PDF était un gros point fort de macOS...

Sinon sympa cette app, PDFZone !

avatar Moonwalker | 

Balblabla.

4 mise à jour ! Oh! Mon Steve !

Article de pleureuse pour pleureuses.

Il fallait rester bien sagement sur El Capitan.

Au prochain macOS re-belotte. Les mêmes cornichons, les mêmes jérémiades, les mêmes articles.

Pages

CONNEXION UTILISATEUR