start reading

starbreaker.org button


IndieWeb Carnival 2024: Accessibility on the Personal Web

Is it just about disability accommodation and WCAG/Section 508 compliance?


The round-up post for the March 2024 IndieWeb Carnival is up. You should check out everybody else’s posts.

By way of introduction, I think I should mention that accessibility is part of my day job. For my sins, I work at a large consulting firm that takes a bunch of state and Federal government contracts. The web apps I help build must accommodate everybody. That means they must:

Being a professional [1] developer, I am obliged to do initial accessibility testing and handle the most egregious issues before they get to QA. Since I also make my own websites, this concern for accessibility does not remain compartmentalized; it’s not something I can leave at the office when I get in the car and become a human being again instead of human capital.

One could reasonably expect at this point that I’d regret that this isn’t the case. That would be a mistake. I like having my own website, and I want it to work well and be accessible to as many people as possible.

This was the case even before I started working on web applications instead of desktop applications. Unlike with commercial/government applications, I didn’t have to do much on my own web pages to make them accessible, since I wasn’t using a lot of custom controls, manipulating the browser’s standard behavior with JavaScript, or using JavaScript to implement functionality I’d get for free with standard HTML. I was able to get most of the way there in terms of disability-oriented thinking about web accessibility by adherence to a few basic principles [2]:

  1. If it doesn’t work in Lynx, it doesn’t work at all.
  2. If it doesn’t work on 56K dialup, it doesn’t work at all.
  3. JavaScript should only be used as a last resort for implementing functionality not provided by HTML and CSS, or to provide non-essential enhancements. [3]

As Orchids noted in his summary my preferred approach may smack of extremism, especially to web developers who don’t remember what a dial-up modem sounds like when connecting. It has nevertheless served me well over the past 30 years, at least for my own websites, to assume that everybody is doing their computing on a 486 running Windows 95 with a 28.8Kbps modem that gets 14.4Kbps when the patron demons of the internet are in a particularly good mood. ¯\_(ツ)_/¯

Even in the late 1990s when I first started building my own websites, this approach to design enforced a certain minimalism, perhaps even a certain brutalism, and set me apart from the animated and colorful web design that came to characterize the personal and non-commercial Web.

Nevertheless, I’m not into minimalism for its own sake. Minimalism is a means to an end rather than an end in itself. One can create a completely empty and completely useless web page.

1|  <!DOCTYPE html>
2|  <html lang="en">
3|  <title>!</title>
The smallest valid (with no warnings) HTML5 page.

The empty web page above is minimalistic and would probably download and render quickly even in the original WorldWideWeb/Nexus program, but to what end? There is nothing in there for a human being to read. That should tell you something about what I think websites are for.

For many people, a personal website is an art project, a means of self-expression via a graphical melange of hypertextual collage. There’s absolutely nothing wrong with this; it’s valid as fuck.

But it’s not my style. I’m a writer, not a visual artist. I think in plain text (and I dream in infrared). So, for me, a personal website is a self-publishing platform. I want people to be able to read what I write, if they want to.

Thus we come back to my insistence that any personal website I build work in Lynx on a 56K dialup connection. As Terence Eden pointed out in 2020, Lynx does nothing but HTML. It doesn’t do JavaScript or CSS. So, if my website doesn’t work in Lynx then it’s fundamentally broken and I fucked up.

Of course, using Lynx alone isn’t enough. A lot of websites, Twitter and Facebook among them, flatly refuse to serve anything to Lynx but an “unsupported browser” page. But this is where we approach the necessity of distinguishing between web sites and web applications. The latter, as Dan Luu explains in a magisterial post on the harm web bloat does to people using low-power devices, are often barely usable on a ‘broadband’ connection? Forget about using them on 56K dialup.

I hear somebody in the back asking why this is relevant to accessibility on the personal web. Probably the same person who called William Atherton’s character “dickless” in the new Ghostbusters movie [4]. The point toward which I’ve been writing is that there might be more to accessibility than just making sure your site works with assistive technology like screen readers.

I think there’s more to accessibility than implementing WCAG AA or AAA guidelines, or complying with Section 508 if you operate in the USA so that you don’t get sued. It’s important that my website be inclusive to people with disabilities, if only because I might need such accommodations myself someday, but I think the emphasis on accommodating disability ultimately limits our thinking of what accessibility is and what it’s for.

Consider, for example, a personal website that is explicitly designed to be viewed on a desktop or laptop. Its operator has every right to decide that supporting mobile devices, especially smartphones, isn’t worth their time and effort. It’s their website, after all. But in a world where most people access the Web via smartphones, is such a website truly accessible?

Likewise a website implemented as a single page application (SPA) like Devastatia Del Gato’s website. Because of her dependence on JavaScript her site doesn’t really work in Lynx. In her position I’d have a noscript element at the top of the page advising people that JavaScript is required for the site to work properly. Not necessarily because she gets a lot of traffic from people who use browsers like Lynx, but because JavaScript isn’t always available and as Adam Silver points out in this post, it isn’t always the visitor’s fault.

I am not highlighting Devastatia Del Gato to criticize her. It’s her website and she can do it her way. And, in fairness to her, it’s not even close to being the most egregious example of a JS-dependent website; I didn’t realize she was doing stuff like overriding the back button with JavaScript until she told me she was doing it. She does it this way because she loves programming, and she particularly likes JavaScript and PHP. It makes sense that her website isn’t necessarily my idea of accessible; I think she would acknowledge that she’s an acquired taste, and so is her website.

Nor is her site the most egregious example, but merely the first to come to mind on the personal web. Far worse are sites like Twitter, Facebook, and LinkedIn. These won’t work at all without JavaScript enabled, and with JS enabled they will often download at 2MB of JS to accompany one of Elon Musk’s 280 character shitposts. Likewise just about every major news site. Even Mastodon requires JavaScript, and a single post on that platform also pulls down at least 1MB of Javascript for a 500 character post. But these are not the personal web. They are the corporate web, or attempts to create free/open source imitations of corporate platforms.

Besides, I am hardly a paragon of accessibility despite my efforts. There are visitors who might be put off by a page that’s full of text with no images. Is my website accessible to people who aren’t used to reading a lot of text at once? After all, this article’s over 1,500 words. I am most likely making my website less accessible to people who don’t read for pleasure by my very prolixity.

But if you’ve put up with me this long, you deserve a reward. Have a big fluffy kitty with soft white paws and little pink toe beans. He purrs when I hug him.

I am, however, going to take up a bit more of your time because I want to talk about how web browsers themselves make it harder to create truly accessible websites.

Let’s consider Dan Luu’s website as an example. I believe I’ve already mentioned his post on web bloat and small devices. That post includes an interesting appendix concerning opinionated visitors who don’t like the way Dan Luu styles his website, which I will reproduce in full below. [5]

“Appendix: this site vs. sites that don’t work on slow devices or slow connections” by Dan Luu

Just as an aside, something I’ve found funny for a long time is that I get quite a bit of hate mail about the styling on this page (and a similar volume of appreciation mail). By hate mail, I don’t mean polite suggestions to change things, I mean the equivalent of road rage, but for web browsing; web rage. I know people who run sites that are complex enough that they’re unusable by a significant fraction of people in the world. How come people are so incensed about the styling of this site and, proportionally, basically don’t care at all that the web is unusable for so many people?

Another funny thing here is that the people who appreciate the styling generally appreciate that the site doesn’t override any kind of default styling, letting you make the width exactly what you want (by setting your window size how you want it) and it also doesn’t override any kind of default styling you apply to sites. The people who are really insistent about this want everyone to have some width limit they prefer, some font they prefer, etc., but it’s always framed in a way as if they don’t want it, it’s really for the benefit of people at large even though accommodating the preferences of the web ragers would directly oppose the preferences of people who prefer (just for example) to be able to adjust the text width by adjusting their window width.

Until I pointed this out tens of times, this iteration would usually start with web ragers telling me that "studies show" that narrower text width is objectively better, but on reading every study that exists on the topic that I could find, I didn’t find this to be the case. Moreover, on asking for citations, it’s clear that people saying this generally hadn’t read any studies on this at all and would sometimes hastily send me a study that they did not seem to have read. When I’d point this out, people would then change their argument to how studies can’t really describe the issue (odd that they’d cite studies in the first place), although one person cited a book to me (which I read and they, apparently, had not since it also didn’t support their argument) and then move to how this is what everyone wants, even though that’s clearly not the case, both from the comments I’ve gotten as well as the data I have from when I made the change.

Web ragers who have this line of reasoning generally can’t seem to absorb the information that their preferences are not universal and will insist that they regardless of what people say they like, which I find fairly interesting. On the data, when I switched from Octopress styling (at the time, the most popular styling for programming bloggers) to the current styling, I got what appeared to be a causal increase in traffic and engagement, so it appears that not only do people who write me appreciation mail about the styling like the styling, the overall feeling of people who don’t write to me appears to be that the site is fine and apparently more appealing than standard programmer blog styling. When I’ve noted this, people tend to become become further invested in the idea that their preferences are universal and that people who think they have other preferences are wrong and reply with total nonsense.

For me, two questions I’m curious about are why do people feel the need to fabricate evidence on this topic (referring to studies when they haven’t read any, googling for studies and then linking to one that says the opposite of what they claim it says, presumably because they didn’t really read it, etc.) in order to claim that there are "objective" reasons their preferences are universal or correct, and why are people so much more incensed by this than by the global accessibility problems caused by typical web design? On the latter, I suspect if you polled people with an abstract survey, they would rate global accessibility to be a larger problem, but by revealed preference both in terms of what people create as well as what irritates them enough to send hate mail, we can see that having fully-adjustable line width and not capping line width at their preferred length is important to do something about whereas global accessibility is not. As noted above, people who run sites that aren’t accessible due to performance problems generally get little to no hate mail about this. And when I use a default Octopress install, I got zero hate mail about this. Fewer people read my site at the time, but my traffic volume hasn’t increased by a huge amount since then and the amount of hate mail I get about my site design has gone from zero to a fair amount, an infinitely higher ratio than the increase in traffic.

To be clear, I certainly wouldn’t claim that the design on this site is optimal. I just removed the CSS from the most popular blogging platform for programmers at the time because that CSS seemed objetively bad for people with low-end connections and, as a side effect, got more traffic and engagement overall, not just from locations where people tend to have lower end connections and devices. No doubt a designer who cares about users on low-end connections and devices could do better, but there’s something quite odd about both the untruthfulness and the vitriol of comments on this.

Now, when I had checked out the Hacker News commentary on this post [6] I had seen several people complaining that Luu doesn’t use CSS and that this makes his post ‘impossible’ to read. First, the assertion that Luu doesn’t use CSS is arrant bullshit. He just doesn’t use a lot of CSS. He certainly uses less than I do. Here’s what he uses.

1|  <style>
2|      img{max-width:100%;height:auto;}
3|      pre{max-width:100%;height:auto;white-space:pre-wrap}
4|      .np{display:flex;flex-flow:row wrap;justify-content:space-between;padding-bottom:.5em;font-style:italic;}
5|  </style>

There isn’t a lot of CSS at all, and what little there is doesn’t seem to override browsers’ default styles. Unfortunately, default styles tend to have terrible typography and probably haven’t been updated since 2001. This places website operators in an unpleasant position where creating a stylesheet is necessary if one wants their website to not look like completely Oedipal. Furthermore, every default you override with CSS is something else that can turn out to be unusable or inaccessible.

However, server-imposed stylesheets (as well as server-imposed JavaScript) could be seen as both intrusive and paternalistic. The abuse of both is almost enough to make some people (like Bradley Taunt) wish they inhabited a reality where neither exist.

I think the solution is user style sheets as well as user JavaScript. Get this: browsers used to let you specify your own stylesheet, which it would apply to every website you accessed. You could make every page readable for you, and override design elements that didn’t work for you.

User-defined JavaScript generally requires extensions. Greasy Fork lists extensions for common browsers and provides scripts as well.

While it is possible to use your own CSS and JavaScript, browser developers could make this easier. Likewise, they could make it easier to find and subscribe to RSS/Atom/JSON feeds. They probably won’t without massive and sustained public pressure applied either directly or via a sufficiently powerful regulatory authority.

It bears mentioning that even making it easier to use a custom stylesheet or custom scripts to personalize the Web is not a panacea or universally accessible. Both require a degree of computer literacy that most people do not possess and quite rightly have little interest in acquiring because they have more pressing concerns.

I don’t have a practical solution that can be universally applied. Nor is providing such a solution for the personal web my concern. My own website is my concern, just as your website is your concern.

It is not my place to tell you how to make your website more accessible. I can in good conscience, however, show you how I do things on mine.



There’s also the matter of interaction with visitors. For years I’ve been of the opinion that if people wanted to say something about something I’ve written, then email is enough. But what if it isn’t? Not everybody uses email for social purposes. They might only use it for interacting with corporations. They might prefer to leave a comment on my website instead. Should I accommodate them?



I could be overthinking all of this. It’s one of my many and least pleasurable vices. You are certainly not obligated to consider accessibility on your personal website. The fact that I do so is a preference, not a prescription. Otherwise, what’s the point of a personal web?

update for 2024-04-01

It would appear that I am to Devastatia Del Gato the representative of web design minimalists in her post about browsers becoming virtual machines for web apps. Rather flattering, really, since I’m probably one of the few of that ilk she can stand for more than five minutes at a time. She has the following to say.

Most Web design pundits belong to one of two camps. On one side, you have the minimalists who advise you to use no JavaScript, little or no CSS, and strictly semantic markup, design for "mobile first," and what-not. Then you have the "do what you want" camp consisting of hard-headed fools like me who break those rules every chance we get. The point is, we’ve heard both sides of that argument time and again. Let’s hear Something Else™.

First, a bit of clarification: the fact that I choose to abide by certain design principles when designing and building my website is a matter of preference that you are not to mistake for a prescription. It’s your website and you can do as you damned well please.

Second, I don’t worry much about “mobile first” anything. By starting with HTML and CSS, not using frameworks like React or Bootstrap, and only using standards-compliant vanilla JavaScript when necessary (aka progressive enhancement) I avoid a lot of problems many web developers face when trying to support both mobile devices and “real computers”. I get the rest of what I need with a couple of little tweaks:

  1. I add a single meta tag to every page: <meta name="viewport" content="width=device-width, initial-scale=1.0">
  2. In my stylesheet I set max-width: 100%; and height: auto; for <img> and <video>. This keeps images and video from overflowing the container while preserving aspect ratios.

Devastatia Del Gato is also quoting from a post by Digital Cheese about lackluster websites. While I agree with some of their [8] opinions, they seem to me the sort to mistake their preferences for prescriptions. As I’ve mentioned elsewhere, Devastatia Del Gato isn’t content to have the sort of static website I run; she wants her website to be a single-page application. As such her use of JavaScript, even if it would “unnecessary” on my website, is necessary for her to make her website what she wants it to be.

You should be making your website what you want it to be: rules, design principles, and accessibility be damned. My concerns are not yours unless you choose to make them so.


notes

  1. I’m mainly professional in the sense that I get paid to do this. It’s not like programmers have anything like the bar association, let alone a trade union.
  2. Please bear in mind that these are preferences, not prescriptions. If you have a personal website, you can do as you please.
  3. I’m basically talking about progressive enhancement here, and I was doing it in the 1990s.
  4. Ghostbusters: Frozen Empire was a solid movie, mainly because of McKenna Grace’s performance as Phoebe Spengler, Egon’s equally weird (and probably autistic) but much feistier (by necessity given her age and gender) granddaughter and her interactions with the rest of her family. Unfortunately, the roles of the OGs (Bill Murray as Peter Venkman, Dan Ackroyd as Ray Stantz, Ernie Hudson as Winston Zeddemore, and Annie Potts as Janine Melnitz) often feel like gratuitous fan service; it’s a minor miracle they didn’t get Rick Moranis involved to put in an appearance as Louis Tully, but maybe Janine Melnitz has him at home as her househusband given how she took the lead in Ghostbusters 2. Don’t pay full price to see it; it’s worth catching on a matinee showing if you’ve got nothing better to do, but otherwise this is a rental.
  5. I don’t have Luu’s permission, but since I am quoting to comment I think I’m covered by “fair use” provisions in US copyright law. I would ask permission, but I am not willing to create a social media account just to do so because he doesn’t provide an email address. If he objects, he is welcome to email me.
  6. Never, ever do this. You should avoid reading the comments in general. But you should expecially avoid reading HN comments unless you need further justification for a real-life Butlerian Jihad.
  7. My site settings are based on a reference implementation by Sarah L. Fossheim, but if they don’t work for you please take it up with me.
  8. I am using the singular they here because I don’t know or care about this person’s gender. If they want me to use different pronouns, they can ask me to do so by email.