{"id":1134,"date":"2024-06-05T10:20:24","date_gmt":"2024-06-05T10:20:24","guid":{"rendered":"https:\/\/html5accessibility.com\/stuff\/?p=1134"},"modified":"2024-06-05T15:43:09","modified_gmt":"2024-06-05T15:43:09","slug":"doing-my-heading-in","status":"publish","type":"post","link":"https:\/\/html5accessibility.com\/stuff\/2024\/06\/05\/doing-my-heading-in\/","title":{"rendered":"Doing my heading in"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1136 size-full\" src=\"https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/IMG_0921.jpg\" alt=\"Beganyito visits Jonny's farm and is thoroughly lambasted by all and sundry a rural scene unfolds with a small, white shed adorned with a Canadian flag standing beside a larger garage. In front of these structures, two individuals (Patrick and Steve) stand talking, while another person (David) relaxes in a hanging chair. Nearby, two more people are seen, one by the house (Jonny) and the other closer to the shed (Beganyito). The house, with green siding and a metal roof, is surrounded by construction materials, indicating ongoing renovation work. Two vehicles are parked in front of the house, and the entire setting is enveloped by lush, wooded greenery, creating a serene backdrop for this casual gathering.\" width=\"1438\" height=\"349\" srcset=\"https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/IMG_0921.jpg 1438w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/IMG_0921-300x73.jpg 300w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/IMG_0921-1024x249.jpg 1024w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/IMG_0921-768x186.jpg 768w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/IMG_0921-1200x291.jpg 1200w\" sizes=\"auto, (max-width: 1438px) 100vw, 1438px\" \/><\/p>\n<h2>Interviewed by Mat Marquis<\/h2>\n<p>Earlier in 2024 I was approached by <a href=\"https:\/\/mastodon.social\/@Wilto@front-end.social\">Mat Marquis<\/a> to answer some questions on HTML headings. At the time I was only vaguely aware that the interview would become part of <a href=\"https:\/\/multipage.gumroad.com\/l\/1?_gl=1*1s20jt9*_ga*OTgyMzY0NTQuMTcxNzA4Mjg2NQ..*_ga_6LJN6D94N6*MTcxNzU4MDUxMy4yLjAuMTcxNzU4MDUxMy4wLjAuMA..\">a printed Zine<\/a> (pleasant surprise face), published by Mat with profits going to support <a href=\"https:\/\/translifeline.org\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Trans Lifeline<\/a>.<\/p>\n<p class=\"note\"><strong>So waste no time<\/strong> and <a href=\"https:\/\/multipage.gumroad.com\/l\/1?_gl=1*1s20jt9*_ga*OTgyMzY0NTQuMTcxNzA4Mjg2NQ..*_ga_6LJN6D94N6*MTcxNzU4MDUxMy4yLjAuMTcxNzU4MDUxMy4wLjAuMA..\">buy a copy<\/a> and get to read all the great stuff Mat has gathered and edited, by others including <a href=\"https:\/\/ericwbailey.design\/\">Eric Bailey<\/a> and <a href=\"https:\/\/mastodon.social\/@heydon@front-end.social\">Heydon Pickering<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1142 size-large\" src=\"https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/yrrgdmftt3w2oby4s0t578y6ece6-672x1024.webp\" alt=\"Multipage version Issue 1, summer 2024 Zine cover page: WE FUCKED UP HEADINGS\" width=\"580\" height=\"884\" srcset=\"https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/yrrgdmftt3w2oby4s0t578y6ece6-672x1024.webp 672w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/yrrgdmftt3w2oby4s0t578y6ece6-197x300.webp 197w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/yrrgdmftt3w2oby4s0t578y6ece6-768x1170.webp 768w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/yrrgdmftt3w2oby4s0t578y6ece6.webp 840w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<h3>Q: (Question) Who are you, what\u2019s your whole deal, etc.<\/h3>\n<p>I consider myself to be a <i>Wanker<\/i> (<a href=\"#wanker\">Whatareya? (You&#8217;re A Yob or You&#8217;re A Wanker<\/a>) I am also a <a href=\"https:\/\/cdpn.io\/stevef\/debug\/dyGeywr\">Web Accessibility Worker<\/a>, have been so for too long (20 odd years). I have also been a Web Standards worker (at W3C) since 2006. I am also now one of 4 directors\/partners in <a href=\"https:\/\/tetralogical.com\/\">TetraLogical<\/a>, an accessibility consultancy based in the UK, where I have lived for 18 years, although I still identify as an Australian. Outside of my main job I do Web Standards consulting for Vispero\u2122, working with some old chums from Freedom Scientific\u2122, the makers of JAWS\u2122 to <a href=\"https:\/\/github.com\/FreedomScientific\/standards-support\/issues\">help improve<\/a> <a href=\"https:\/\/freedomscientific.github.io\/standards-support\/html.html\">JAWS support for HTML<\/a>\/ARIA. In my spare time <a href=\"https:\/\/html5accessibility.com\/stuff\/\">I write stuff<\/a> and I design and sell <a href=\"https:\/\/www.etsy.com\/uk\/shop\/HTMLZ\">Web Standards Leisurewear<\/a>.<\/p>\n<h3>Q: Pretend for a moment that I\u2019m a different, worse guy: what do headings have to do with accessibility?<\/h3>\n<p>Many HTML elements and attributes are <a href=\"https:\/\/www.w3.org\/TR\/html-aam-1.0\/\">mapped to accessibility semantics<\/a> in the browser. For example, <code>&lt;h1&gt;<\/code> has a <code>role=heading<\/code> and a property <code>level=1<\/code>. This information is used by assistive technology (AT), such as screen readers, to convey meaning to users <a href=\"https:\/\/www.tpgi.com\/thus-spoke-html\/\">aurally<\/a>, just as text size and placement conveys meaning to users who consume the UI visually. AT users <a href=\"https:\/\/webaim.org\/projects\/screenreadersurvey10\/#heading\">find the information useful<\/a> by being able to understand which content is acting as a heading, being able to access the UI structure and navigate by headings.<\/p>\n<h3>Q: So, what happened? How did headings end up so busted in the first place?<\/h3>\n<p>I think the genesis of the HTML headings fiasco started with the choice of the original <i>standardistas<\/i> to opt for a hard coded level based definition for <a href=\"https:\/\/www.w3.org\/MarkUp\/html-spec\/html-spec_5.html#SEC5.4\">headings in HTML<\/a>. This worked ok for a while, but as the web developed and HTML started to be used for more complex User Interfaces (UI) and UIs became more dynamic and componentized, the hard coded structural nature of <code>H1-H6<\/code> became a brittle semantic, that caused issues for the new kids. Not that it wasn&#8217;t fragile to start with:<\/p>\n<blockquote><p>documents <a href=\"https:\/\/www.w3.org\/MarkUp\/html-spec\/html-spec_2.html#GLOSS29\">should<\/a> not skip levels (for example, from <code>H1<\/code> to <code>H3<\/code>), as converting such documents to other representations is often problematic.<\/p><\/blockquote>\n<p><strong>Source:<\/strong> HTML 2 &#8211;\u00a0 <a href=\"https:\/\/www.w3.org\/MarkUp\/html-spec\/html-spec_5.html#SEC5.4\">https:\/\/www.w3.org\/MarkUp\/html-spec\/html-spec_5.html#SEC5.4<\/a><\/p>\n<p>It is also the case that developers don&#8217;t understand the fundamentals of HTML semantics or don&#8217;t care much about conveying an accurate document structure non visually. So even when HTML headings are used, oftentimes, the heading element used does not match their implied semantics.<\/p>\n<h3>Q: Then HTML5 set out to fix it?<\/h3>\n<p>I first encountered the HTML outline algorithm at a W3C meeting in 2008. It was in a <i>breakout<\/i> session at <a href=\"https:\/\/www.w3.org\/2008\/10\/TPAC\/\">TPAC<\/a>. It was being <em>spruiked<\/em> by 2 of the movers and shakers of the burgeoning WHAT WG. In essence the Outline algorithm moved the semantics of a heading level from being derived from a headings name <code>h1-h6<\/code>, to being derived from the nesting level of a heading within <a href=\"https:\/\/html.spec.whatwg.org\/multipage\/dom.html#sectioning-content-2\">sectioning content<\/a>. The obvious issue with this method is that it was never implemented in browsers. Yes the CSS styling was implemented, but the actual exposing of the headings with the level they theoretically represented was not. Thus the W3C HTML5 spec included <a href=\"https:\/\/www.w3.org\/TR\/2016\/CR-html51-20160621\/sections.html#creating-an-outline\">a warning<\/a> I added to make it clear to developers that the outline algorithm was a fiction.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1137 size-full\" src=\"https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-05-101417.png\" alt=\"Warning! There are currently no known native implementations of the outline algorithm in graphical browsers or assistive technology user agents, although the algorithm is implemented in other software such as conformance checkers and browser extensions. Therefore the outline algorithm cannot be relied upon to convey document structure to users. Authors should use heading rank (h1-h6) to convey document structure.\" width=\"817\" height=\"173\" srcset=\"https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-05-101417.png 817w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-05-101417-300x64.png 300w, https:\/\/html5accessibility.com\/stuff\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-05-101417-768x163.png 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/p>\n<p>As at the time there were 2 versions of HTML I also filed <a href=\"https:\/\/github.com\/whatwg\/html\/issues\/83\">an issue<\/a>, in 2015, on the WHATWG HTML spec to add a warning.<\/p>\n<h3>Q: [Seems sensible enough.] What went wrong?<\/h3>\n<p>I <a href=\"https:\/\/codepen.io\/stevef\/post\/a-decade-of-heading-backwards\">waited<\/a>, <a href=\"https:\/\/html5accessibility.com\/stuff\/2021\/03\/21\/a-decade-a-year-of-heading-backwards\/\">and waited<\/a>, and <a href=\"https:\/\/html5accessibility.com\/stuff\/2022\/04\/05\/12-years-beyond-a-html-joke\/\">waited some more<\/a>, until 2022 when I realised that unless someone <em>other<\/em> than the editors did the work the WHATWG HTML spec would continue to have a decade old theoretical fiction masquerading as HTML truth. Note by this time the <em>spec wars<\/em> were long over and the only maintained specification was WHATWG HTML. There had been lots of discussion and hand wringing by various <em>Web Standards Celebrities<\/em>, but no actual changes in the spec or implementations of the outline algorithm in user agents. So I decided to do it myself with a Pull Request (PR): <a href=\"https:\/\/github.com\/whatwg\/html\/pull\/7829\">replace current outline algorithm with one based on heading levels<\/a>.<\/p>\n<p>My thinking at the time was that at least if the <a href=\"https:\/\/html.spec.whatwg.org\/multipage\/\">HTML spec<\/a> reflected some sort of reality, after a decade of misdirection, developers would no longer be misled into thinking that the nesting of headings in sectioning elements actually did anything.<\/p>\n<p class=\"note\">Note the process of updating the spec was positively facilitated by the WHATWG editing gang at the time.<\/p>\n<h3>Q: Speaking of HTML5, what was wrong with <code>hgroup<\/code> \u2014 it makes sense on paper, yeah? \u201cMade?\u201d<\/h3>\n<p>During my time as an editor of the HTML5 spec (at W3C) I ended up removing <code>&lt;hgroup&gt;<\/code> as what it <a href=\"https:\/\/html.spec.whatwg.org\/multipage\/dom.html#represents\">represented<\/a> was meaningless as it derived its semantics from a fiction and in reality was nothing more than a styling hook (think <code>&lt;div&gt;<\/code>) that lead developers to use <code>h1-h6<\/code> elements as subheadings, when they did not work as such. I did try to work with the editors of the WHATWG HTML spec at the time, to make <code>&lt;hgroup&gt;<\/code> more meaningful, to no avail. It remained in the WHATWG HTML so when I came to do the PR to update the outline algorithm, rather than re-litigate the uselessness of <code>&lt;hgroup&gt;<\/code> I decided to <a href=\"https:\/\/html.spec.whatwg.org\/multipage\/sections.html#the-hgroup-element\">recast <code>hgroup<\/code><\/a> in a form that mitigated its negative effects.<\/p>\n<h3>Q: Where do you land on this proposed <code>headingstart<\/code> attribute?<\/h3>\n<p>To be honest I have pretty much tuned out of the discussion, I find my attention span is fairly limited for this particular rabbit hole and prefer to work on the myriad other web standards opportunities that present themselves. Having read through <a href=\"https:\/\/github.com\/whatwg\/html\/issues\/5033\">the issue<\/a> it seems reasonable and the right heads are involved in the discussion. If it gets implemented <i>interoperably<\/i>, bravo!!<\/p>\n<h3>Q: While we wait to see how that plays out, what should we be doing right now?<\/h3>\n<p>Use <code>h1-h6<\/code> <a href=\"https:\/\/html.spec.whatwg.org\/multipage\/sections.html#headings-and-outlines\">as described<\/a> in the HTML spec. Also have a read of <a href=\"https:\/\/www.tpgi.com\/subheadings-subtitles-alternative-titles-and-taglines-in-html\/\">Subheadings, subtitles, alternative titles and taglines in HTML<\/a><\/p>\n<p><iframe loading=\"lazy\" id=\"wanker\" title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/GiHdpAVIHgo?si=TktVSEezukqlnvZV\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<details>\n<summary>Lyrics &#8211; <a href=\"#wanker\">Whatareya? (You&#8217;re A Yob or You&#8217;re A Wanker)<\/a><\/summary>\n<pre>You're a yob or you're a wanker\r\nTake your fucking choice\r\nSo who is your favourite genius\r\nJames Hird or James Joyce?\r\nYou ever seen a live performance?\r\nJoin the wanker club\r\nYou thought I meant table top dancing?\r\nYou're a yobbo, bub\r\nWhat are ya? Yob or wanker?\r\nWankers once used mobile phones\r\nBut now that's sorta changing\r\nAnd yobs once lived in cottage homes\r\nAin't social change amazing?\r\nIf a yob and wanker want a girl\r\nThe wanker guy will get her\r\nBoth of them are equally ugly\r\nBut the wanker hides it better\r\nWhat are ya? Yob or wanker?\r\nA wanker fights inequality\r\nAnd for people's rights;\r\nA wanker fights class prejudice\r\nA yobbo just fights\r\nYob or wanker, wanker or yob\r\nPass me the brush to tar ya\r\nMake your choice then live your life\r\nCome on pal, what are ya?<\/pre>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>Interviewed by Mat Marquis Earlier in 2024 I was approached by Mat Marquis to answer some questions on HTML headings. At the time I was only vaguely aware that the interview would become part of a printed Zine (pleasant surprise face), published by Mat with profits going to support Trans Lifeline. So waste no time [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1134","post","type-post","status-publish","format-standard","hentry","category-htmlaccessibility"],"_links":{"self":[{"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/posts\/1134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/comments?post=1134"}],"version-history":[{"count":12,"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/posts\/1134\/revisions"}],"predecessor-version":[{"id":1150,"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/posts\/1134\/revisions\/1150"}],"wp:attachment":[{"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/media?parent=1134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/categories?post=1134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/html5accessibility.com\/stuff\/wp-json\/wp\/v2\/tags?post=1134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}