Miser sur HTML
(catskull.net)- Avec la diffusion de l’IA fondée sur les grands modèles de langage, la valeur du HTML sémantique lisible par les machines augmente autant que celle des écrans vus par les humains
- Les jardins clos des grands réseaux sociaux empêchent la portabilité des données et l’interopérabilité, tandis que les tentatives décentralisées comme le fediverse, Threads ou Bluesky offrent peu de motivation pour attirer les utilisateurs ordinaires
- Le HTML moderne dispose déjà d’une bonne partie des éléments d’interface de base nécessaires aux applications web, comme
<details>,<dialog>et divers<input> - En exploitant les styles par défaut du navigateur et le mode lecture, on peut réduire la dépendance à un excès de CSS et de JavaScript ; les bonnes balises améliorent la lisibilité machine et l’expérience de saisie sur mobile
- Dans un contexte où RSS reste bien vivant et où les interfaces de type ChatGPT émergent comme mode d’accès aux données, le HTML structuré peut devenir une base plus pratique que les interfaces centrées sur la publicité
HTML comme interface de données fondamentale du web
- L’émergence de l’IA fondée sur les grands modèles de langage remet en avant l’importance du HTML sémantique
- Le cœur d’Internet est de transmettre les données nécessaires aux humains pour interagir avec le monde, mais la liberté offerte par HTML/CSS/JavaScript a aussi pour revers de limiter l’accès aux données
- Les réseaux sociaux des grandes entreprises technologiques enferment les utilisateurs dans des plateformes fermées plutôt que de proposer des formats de données et des API ouverts et accessibles
- L’interopérabilité entre plateformes est devenue difficile en pratique
- Le problème se complique encore parce que les entreprises rechignent à faciliter la portabilité des données
- L’instabilité récente des réseaux sociaux ravive l’intérêt pour les plateformes décentralisées comme le fediverse
- Threads de Meta et Bluesky, créé par Jack Dorsey, mettent en avant leur interopérabilité avec le fediverse au sens large
- Mais les utilisateurs ordinaires ne choisissent souvent pas un nouveau réseau social pour cette seule raison
- Il faut réexaminer HTML comme une solution déjà éprouvée
- Par le passé, il fallait beaucoup de CSS pour éviter que le contenu HTML ne soit laid dans le navigateur
- Aujourd’hui, de nombreux éléments HTML modernes ont été ajoutés et fournissent la plupart des composants d’interface nécessaires aux applications web contemporaines
- Le mode lecture peut rendre inutiles les efforts consacrés au style, et cela peut être vu positivement
- Les bonnes balises fournissent un format facile à lire par les machines
- C’est une raison plus forte d’adopter le HTML moderne que le simple gain de temps sur le design
- RSS est toujours vivant
- Les interfaces comme ChatGPT pourraient devenir une future manière pour les humains d’accéder aux données
Éléments HTML utiles ou à redécouvrir
- La liste complète des éléments HTML sur MDN vaut le détour
- Les exemples ci-dessous n’utilisent que les styles par défaut du navigateur, sans style supplémentaire
- Selon le navigateur, leur rendu peut être très différent, voire ne pas être pris en charge du tout
<abbr>: élément qui encadre une abréviation- On peut lui appliquer un style pour la mettre en évidence
- Il est surtout utile pour la lecture par les machines
<datalist>: élément fournissant une liste de suggestions de saisie- Il permet de créer une interface qui ressemble à de l’autocomplétion
- Il ne semble pas y avoir de validation intégrée
- Dans Safari, il faut fermer la balise
option; sinon, cela ne fonctionne pas
<details>: élément de divulgation dépliable/repliable- Il peut servir de petit menu déroulant
- On peut aussi lui appliquer un style de manière poussée
<dialog>: élément de boîte de dialogue- C’est un élément intégré que l’on peut ouvrir et fermer avec des boutons, des formulaires, des attributs et JavaScript
- Ce n’est pas exactement la même chose qu’une modale, mais c’est une bonne base si l’on veut en créer une
- Il semble être rendu au-dessus de l’élément suivant
<i>et<em>- Il faut connaître la différence entre les deux éléments
<iframe>- Inclus dans la liste d’exemples, mais traité sur le ton de la plaisanterie
<input>: élément de saisie de formulaire- Les champs de saisie doivent utiliser des libellés et des types appropriés
- Sur mobile, le système d’exploitation ouvre des claviers différents selon le contexte, d’où l’importance de préciser le type de saisie
- Les nombreuses saisies liées au temps peuvent réduire le besoin d’un date picker JavaScript séparé
- Les exemples cités sont les champs
color,rangeetdatetime-local
<mark>: élément de surlignage de texte- Par défaut, Safari l’affiche avec un surlignage jaune
<meter>: élément d’affichage d’une mesure- Dans Safari, il s’affiche en rouge, jaune ou vert selon les paramètres définis
- On peut définir une valeur
optimum - Il peut être utile pour une démo de visualisation musicale à 60 fps
<progress>: élément d’affichage de progression- C’est une barre de progression HTML native, pouvant recevoir une valeur fixe ou un état indéterminé
- Dans Safari, elle apparaît en bleu lorsque la fenêtre est active et en gris lorsqu’elle est inactive
- Par défaut, elle suit la couleur d’accentuation du système et peut être configurée avec la propriété CSS
accent-color
1 commentaires
Avis sur Hacker News
Il est étrange de dire que HTML serait la solution à la dépendance aux écosystèmes fermés. Ces services fermés utilisent déjà HTML, ainsi que certains des éléments sémantiques mentionnés et des attributs sémantiques ARIA plus sophistiqués.
Quant à l’idée que des interfaces comme ChatGPT représentent l’avenir de l’accès humain aux données, le point essentiel des systèmes d’intelligence artificielle est justement qu’ils n’ont pas besoin d’annotations spéciales « lisibles par la machine » pour traiter les entrées. ChatGPT et ses successeurs peuvent parcourir des sites web ordinaires comme le ferait une personne, et comprendre qu’un groupe de paragraphes est une « liste » même sans balisage explicite
Ce que décrit l’auteur ressemble au fond à une API passant par des éléments sémantiques HTML. Mais s’il existe une API, il n’y a pas besoin d’un grand modèle de langage pour l’accès automatisé aux données : un simple script Python utilisant Beautiful Soup suffit, avec l’avantage de s’exécuter uniquement en local
Au bout du compte, ce qui distingue le bon du mauvais, c’est la complexité de mise en œuvre. N’importe quel outil peut être bien ou mal utilisé, et un débutant peut provoquer un gros accident avec une scie circulaire et une batterie chargée. Un artisan peut aussi choisir de ne pas utiliser l’outil du tout et de taper à côté, autrement dit d’aller à l’encontre des besoins métier.
Les sites web que j’ai créés récemment sont les plus compatibles que j’aie jamais faits. Je n’utilise plus de websockets et je ne dépends plus d’un JavaScript qui dialogue par petits morceaux avec le serveur. Même avec JavaScript complètement désactivé, environ 80 % du produit reste utilisable. Je ne vois pas en quoi de tels choix d’ingénierie ne seraient pas une solution à la dépendance aux écosystèmes fermés.
Les grands modèles de langage sont entraînés sur du texte, du code source, etc., mais sans véritable mécanisme qu’on pourrait appeler moteur de raisonnement, peuvent-ils vraiment regarder un arbre DOM et savoir ce que c’est et ce qu’il fait ? Le DOM n’est pas du texte, et il est difficile de le considérer comme du code source bien structuré, puisqu’il résulte du bundling et de la componentisation. Cela ressemble presque à dire qu’un « grand modèle de langage peut regarder un .exe arbitraire et l’intégrer immédiatement ».
J’ai un intérêt similaire, mais pour le crawling et les nouveaux moteurs de recherche. Si chaque page doit être exécutée dans un navigateur headless avant d’être indexée, la barrière à l’entrée pour un nouveau moteur de recherche devient beaucoup plus élevée.
La première phrase de l’article est : « avec l’arrivée de l’intelligence artificielle fondée sur les grands modèles de langage, le HTML sémantique est devenu plus important que jamais ». À mon avis, la phrase inverse, « avec l’arrivée de l’intelligence artificielle fondée sur les grands modèles de langage, le HTML sémantique est devenu moins important que jamais », est bien plus défendable.
Le web sémantique a échoué, et Google l’a remplacé en dépensant des sommes énormes dans toutes sortes d’heuristiques adossées à ce qui était alors l’état de l’art de l’intelligence artificielle. Plus l’intelligence artificielle s’améliore, plus elle devient capable d’extraire de l’information à partir de n’importe quel fatras construit n’importe comment ; et si ce fatras suffit, l’effort que les gens fourniront s’arrêtera là. En principe, au bout du compte, le web sémantique comme les tas d’heuristiques seront remplacés par l’intelligence artificielle.
Le fait que l’article écrive LLM au début puis passe ensuite au terme général AI est aussi important. Les grands modèles de langage ne sont pas toute l’intelligence artificielle : ils ne sont qu’une branche actuellement très en vue, et pas la dernière. Il n’est pas bon de faire des projections sur les décennies à venir en supposant que les grands modèles de langage sont la réponse finale à l’intelligence artificielle.
Si l’objectif était que les parties pertinentes du contenu soient suffisamment bien indexées pour être classées, on peut dire que l’incitation à adopter complètement le HTML sémantique était insuffisante.
Si l’objectif passe de « être bien classé » à « permettre aux grands modèles de langage d’extraire autant que possible les nuances et la texture du contenu », l’incitation à mieux utiliser certains éléments pourrait augmenter. Les sites qui le font pourraient avoir une plus grande influence sur les sorties des grands modèles de langage.
Cela me fait penser à la différence entre parler assez fort pour être entendu et parler assez clairement pour être compris.
J’ai entendu parler de l’annonce de la nouvelle page de résultats avec Bard, mais je ne crois pas l’avoir vue — peut-être à cause de mon habitude d’ignorer les publicités, ou parce qu’elle n’est pas encore disponible dans ma région — donc il faudra que je vérifie.
Intellectuellement, j’étais plutôt du côté du web sémantique, mais si les machines peuvent comprendre plus ou moins ce fatras, alors l’argument selon lequel il n’y a pas vraiment de raison de se donner cette peine se tient.
Certains projets affirment que les graphes de connaissances ou d’autres actifs de données peuvent aider l’intelligence artificielle à rechercher des connaissances « vraies ». Personnellement, je pense qu’il vaut mieux développer des méthodes permettant à l’intelligence artificielle de créer ses propres actifs de données. Les poids d’un réseau neuronal font partie de ces actifs.
La question de la vérité reste très difficile. Comment indiquer à une intelligence artificielle qu’un savoir est plus fiable qu’un autre ? Bien sûr, les humains ont le même problème.
Je n’avais presque jamais entendu parler de la plupart de ces éléments HTML, et c’est assez regrettable. Parce que ce genre de choses pourrait beaucoup aider à mettre fin à l’écosystème où « tout a besoin de JavaScript »
À tout le moins, cela pourrait remettre JavaScript à une place plus proche de son intention initiale : un moyen d’ajouter un peu d’ornement ou d’interaction. Il n’a pas besoin d’être un substitut à tout le balisage ni le gestionnaire complet du DOM
Le navigateur dont je rêve ressemblerait peut-être à visurf https://sr.ht/~sircmpwn/visurf/, avec le moteur Netsurf interne mis à jour pour prendre en charge du HTML+CSS moderne incluant ces éléments. Avec un tel navigateur, on pourrait construire un petit Web presque sans JavaScript. L’accessibilité serait meilleure, en cassant moins les lecteurs d’écran, les thèmes système, les raccourcis clavier, etc. ; cela utiliserait beaucoup moins de ressources que les lourds dispositifs JavaScript remplaçables ; et la plupart de ce qu’on attend aujourd’hui d’une application Web de niveau intermédiaire semblerait possible. Pour des choses comme WebGL, il suffirait de lancer Firefox, mais par exemple un client Matrix pourrait n’avoir besoin que d’un peu de JavaScript pour les WebSockets et le chiffrement de bout en bout
Ils sont aussi très peu extensibles, donc dès qu’il faut faire quelque chose d’un peu complexe, on finit par les abandonner et recommencer en JavaScript. Dans ce cas, autant partir en JavaScript dès le début : ça marche bien, ça donne un contrôle total et ça se comporte de la même façon sur tous les systèmes
Au final, ces composants supplémentaires restent du gonflement que tous les navigateurs doivent implémenter, mais que personne n’utilise
datalistpour la première fois, je me suis dit : « waouh, c’est un game changer ». Le comportement est le même d’un navigateur à l’autre, mais l’apparence dépend entièrement du navigateur et on ne peut pas la styliser en CSSParfois, seul le texte de la donnée est affiché ; parfois, le texte et l’attribut
valuesont affichés ensemble. Du coup, au lieu de sélectionner « Atlanta », on sélectionne « 234290780 Atlanta », c’est-à-dire l’ID et la valeur ensembleMême au clic, on ne peut pas obtenir directement l’ID : il faut récupérer l’ensemble et parser l’ID. Ça donne vraiment l’impression d’un élément abandonné
L’article renvoie vers MDN, et MDN est probablement la référence courte la plus utile. Bien sûr, il y a aussi la spécification HTML du WHATWG, et si elle est trop volumineuse, il existe des grammaires au format SGML DTD pour les snapshots WHATWG HTML 2021 et 2023, ainsi que les anciennes grammaires de la série HTML 5.x
[1]: https://sgmljs.net/docs/html200129.html
J’aimerais croire au Web sémantique, et croire que les navigateurs pourraient fournir de bons modules par défaut avec des styles par défaut corrects, mais il faut bien accepter que ce n’est pas le cas aujourd’hui
Rien que pour associer un libellé à un
input, il faut déjà se demander pourquoi ce n’est pas un attribut, puis on ne sait pas vraiment s’il faut l’utiliser comme wrapper ou le placer comme élément frère avec un attributfor=. Et ce n’est que la partie émergée de l’iceberg. Pour chaque balise, il faut apprendre toute son histoire de développement et rechercher à nouveau quelle est la bonne façon de faire aujourd’huiOn aurait pu avoir quelque chose de bien, mais il est peut-être temps de se calmer et de lâcher prise
Il y a évidemment des bizarreries et des angles rugueux, mais si tous les développeurs Web savaient tirer le meilleur parti du HTML sémantique, il y aurait beaucoup moins de JavaScript dans les navigateurs, moins de bugs d’accessibilité, et probablement davantage de regards sur la spécification lorsqu’il faudrait corriger ou remplacer ces étrangetés
Un attribut
labeldésignerait sans doute du contenu en texte brut, ce qui paraît trop restrictifHTML a, comme on peut s’y attendre après des décennies d’usage, une histoire complexe et plusieurs couches. Cela dit, il n’a pas beaucoup changé récemment, et grâce à MDN, il est assez facile d’apprendre ce que permet HTML5 et d’approfondir quand c’est nécessaire
labelaprès la baliseinput. Cela permet, avec les pseudo-classes CSS, de sélectionner et styliser le libellé en fonction de l’état de l’entréeBien sûr, pour utiliser efficacement n’importe quel système de publication — en fait, n’importe quel système — il faut apprendre à utiliser les éléments de base qu’il fournit. Ce n’est donc pas un problème propre au Web sémantique
J’utilise beaucoup
detailspour déboguer des templates HTML en GoEn mettant les données en mode développement avec
{{if .DevMode}}, quand c’est replié, ça ne casse pas trop la page et reste discret ; quand on en a besoin, on déplie et on peut voir tout le contenudetailsdès que possible. C’est très propre, je ne comprends pas pourquoi il n’est pas plus utiliséIl fonctionne aussi dans GitHub Markdown, et certaines personnes l’utilisent pour des exemples ou des explications inline
Les lectures et les démos interactives étaient très bonnes
Après avoir touché à Flutter pendant quelques années, j’en suis revenu à la même conclusion. Il faut miser sur HTML
Le combo Astro / Tailwind / Daisy UI / Alpine.js est bien adapté pour créer des sites HTML qui utilisent beaucoup de rendu côté serveur simple et saupoudrent un peu de réactivité côté client
Le résultat, ce sont de simples fichiers HTML tout à fait corrects, agréables à consulter et qui fonctionnent bien dans les navigateurs web desktop comme dans les WebView mobiles encapsulées. Mon appli est pratiquement statique, donc elle est mise en cache sur un CDN, fonctionne hors ligne, et l’affichage du source facilite le débogage
Le mieux, c’est que je peux être sûr qu’un nouveau développeur, qu’il vienne de React, Angular, PHP ou Python, comprendra le fichier de build de 100 lignes en environ 3 minutes. C’est vraiment simple, et c’est très bien
Je pense que le problème du web sémantique, c’est que, même si cela devient très facile, les développeurs refusent de l’utiliser correctement. Mon extension de navigateur utilise la balise
main, donc je l’observe attentivement ; la documentation MDN est très claire sur ce qu’il faut faire, et elle montre elle-même de bons exemples d’utilisation. Pourtant, très peu de sites l’emploient correctementMême des sites professionnels très soignés enveloppent souvent tout le contenu de la page dans la balise
main, y compris la navigation, le footer, etc. Cette balise ne devrait servir qu’au contenu principal de la pageSi l’on n’arrive même pas à utiliser correctement un élément aussi simple, je n’attends pas grand-chose des autres éléments
Il ne faut pas faire semblant que ce sont des contrats
ppour un paragraphe l’ont fait correctement. Ce n’est pas commeclass="card"Je ne comprends pas que tant de gens très compétents techniquement se lamentent autant sur l’inutilité ou l’échec du web sémantique. On dirait quelqu’un qui dirait : « J’aimerais que l’automobile réussisse, ça rendrait les longs trajets plus faciles »
Mais cette époque a existé. C’était globalement le cas avant HTML4, et c’était encore pire
Donc il vaudrait peut-être mieux que les outils de développement affichent des avertissements ou des erreurs en cas de mauvais usage
Je trouve intéressant que beaucoup de commentaires ici voient cet article comme un texte anti-JavaScript. Pour moi, au contraire, ce sont des outils qui pourraient être extrêmement utiles avec les frameworks centrés sur TypeScript que nous utilisons dans les frontends d’applications d’entreprise modernes. Comme ce sont des outils natifs à HTML, ils ne demandent pas grand-chose
Par exemple, la balise
meterva probablement remplacer tous les modules de chargement que nous utilisons dans React dès que j’arriverai au travail aujourd’hui, parce qu’elle est bien meilleure que ce que nous utilisons actuellementIl se peut que j’aie mal compris les gens ou mal lu l’article, mais même lorsque tout le frontend est presque entièrement en TypeScript, comme dans les grosses applications d’aujourd’hui, c’est très intéressant
De nouvelles applications peuvent désormais être créées avec beaucoup moins de JavaScript qu’avant. Dans les applications TypeScript d’entreprise existantes, cela pourra peut-être être une mise à niveau sur place, mais l’espoir est que, pour le développement de nouvelles applications, on puisse éviter ces frameworks d’entreprise eux-mêmes. On peut toujours rêver, non ?
Je ne veux pas dénigrer complètement le développement web, mais c’est vraiment atroce. J’en ai fait pendant des années, du HTML brut aux langages de script et aux frameworks, et le temps qu’il faut pour faire des choses toutes simples me semble être un immense gaspillage de cerveau
Quand je suis parti en vacances, je voulais juste trouver des endroits où manger et boire, ou des lieux où passer une journée, mais la plupart des sites étaient en vrac, vieux ou pas à jour. Il y a encore beaucoup de sites créés une fois puis oubliés. Probablement parce que les budgets sont serrés et qu’ils n’ont pas les moyens de les mettre à jour, ou parce que les mettre à jour est techniquement trop difficile
La complexité des sites entraîne une paralysie. Ce qui devrait être quelques pages de texte simple et d’images est inutilement surconçu et brûle énormément de cycles CPU. Il y a aussi de fortes chances que ce soit bricolé à partir d’un CMS tout fait qui nécessite des mises à jour de sécurité
Récemment, je regardais le site d’un cinéma, et il était presque impossible de parcourir ne serait-ce que les quelques films projetés cette semaine-là. Je me suis dit que ce serait plus lisible dans un tableur, et quand j’ai effectivement récupéré le JSON depuis l’API, c’était plus facile à lire
La plupart du temps, ce n’est qu’un habillage fatigant, comme du rouge à lèvres sur un cochon. L’une des raisons du succès de Facebook, c’est la facilité d’onboarding, et une autre, la facilité de partager des photos. Même chose pour WhatsApp et Instagram. Publier devrait être facile. Le simple FTP est facile aussi, mais pour les gens ordinaires, il y a une rupture bizarre dans le parcours d’utilisation. Les gens veulent du glisser-déposer, téléverser, poser puis oublier, et modifier facilement. Ceux qui veulent consommer des données veulent au final l’essentiel. Les données, tout simplement
Ce que les gens veulent, ce sont des pages web bien stylées et utilisables. Le problème, c’est qu’il n’y a pas assez de designers d’expérience utilisateur efficaces et talentueux, et que les parties prenantes des entreprises manquent elles aussi d’un sens correct de l’UX
Du coup, fournir seulement les données brutes devient meilleur pour l’utilisateur moyen que l’UX médiocre qu’une entreprise moyenne peut se permettre. Même si ce n’est pas ce qu’il préférerait, c’est mieux
{mauvaise UX} << {données brutes} < {bonne UX}Le contournement trouvé par WordPress a été de créer des styles et des thèmes professionnels, puis de permettre aux utilisateurs de les acheter et de les appliquer. Mais cela ne résout pas le mauvais goût des parties prenantes
Je pense que Facebook a réussi parce qu’il a imposé une UX professionnelle et standardisée.
{données des gens} + {UX professionnelle et standardisée} = {victoire}. On peut détester l’UX des débuts de Facebook, mais il est difficile de dire que c’était du travail d’amateur. La perception générale de MySpace, Geocities, etc., était l’inverseSi je veux trouver quelque chose comme du grillage, je commence par demander dans les groupes WhatsApp dont je fais partie, famille, quartier, anciens camarades de lycée. En général, j’obtiens quelques numéros, puis je contacte les prestataires sur WhatsApp pour avoir les informations à jour
Ces prestataires n’ont pas les moyens d’avoir un site web à jour. WhatsApp propose aussi une fonction permettant de mettre un catalogue dans le profil, et c’est destiné aux comptes Business gratuits
Ce que j’aimerais voir, c’est quelque chose comme des « Wix Widgets » : des widgets connectés aux données, avec juste assez de personnalisation pour relier des appels à des services REST et mapper des points de données vers l’affichage du widget. Cela aiderait pas mal à traiter les besoins en sites web internes que toutes les entreprises ont aujourd’hui
Pour 90 à 95 % des pages web, une solution simple est vraiment nécessaire
Je me demande si ce n’est pas simplement la nature même des GUI. Il faut donner chaque instruction une par une, cela consomme beaucoup de cycles, et sinon la structure ne fonctionne pas en multiplateforme
articleetsectionBien sûr, le code HTML brut n’a sans doute jamais été conçu pour être lu par quelqu’un d’autre que des développeurs, donc il y a aussi cet aspect
J’étais vraiment enthousiaste en apprenant l’arrivée des modales en pur HTML, puis déçu en découvrant qu’il n’y avait aucun moyen de les déclencher sans JavaScript. En pur HTML, on peut seulement les fermer, pas les ouvrir
https://github.com/whatwg/html/issues/3567
L’élément
dialogest un excellent ajout et je suis content qu’il soit implémenté, mais une partie de ses fonctionnalités essentielles dépend de JavaScript. Pour ouvrir undialog, il faut définir l’attributopenen JavaScriptCe serait bien qu’un élément
buttonouapuisse ouvrir une boîte de dialogue. Il existe déjà des précédents d’interactions de page intégrées à HTML. Par exemple, les liens peuvent faire défiler la page, et l’élémentdetailspeut masquer des éléments derrière une interaction ; il semblerait donc naturel qu’un autre élément de la page puisse ouvrir undialogPar exemple, cliquez sur le
?en haut à droite ici : https://aavi.xyz/proj/colors/onclick