
\documentclass[12pt]{article}
\usepackage[T2A,OT1]{fontenc}
\usepackage[default]{cantarell}
\usepackage[a4paper, top=20mm, bottom=20mm, left=20mm, right=20mm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[russian, english]{babel}
\usepackage{tabu}
\usepackage{hyperref}
\usepackage{parskip}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{float}
\floatstyle{boxed}
\restylefloat{figure}
\usepackage{setspace}
\onehalfspacing
\author{Artyom Bologov}
\date{\today}
\title{Gemtext Is Not Accessible}
\makeatletter
\def\endenv{\expandafter\end\expandafter{\@currenvir}}
\makeatother
\begin{document}
\maketitle

Gemini and Gemtext are powerful ideas.
If not as the actual implementation/praxis, then at least as a source of inspiration.
How cool could it be to have a markup/hypertext language that doesn't allow any inline decorations?
Only blocks and lines.
The thought flows unhindered through the paragraphs and quotes.
Minimalist writing.
By design.

But Gemtext minimalism is both a blessing and a curse.
And the curse is that it's actually inaccessible.
Many pages (including mine) break the advertized accessibility by using the elements in the wrong way.
And the language/markup itself doesn't make it easier.

Disclaimer: I'm not as much pointing out flaws in Gemtext
(although the accessibility situation is sympthomatic of systemic flaws in it)
as showing that the current practice of Gemtext use is inaccessible.
It's the actual use of markup language that's broken, no matter what the core language claims.

\section*{Preformatted Blocks and Alt Text} \label{pre}

The biggest thing that's broken about Gemtext is preformatted text blocks.
\href{https://gitlab.com/gemini-specification/gemini-text/-/issues/12}{And I am not the first person to notice that}.
Protocol spec lists screen reader accessibility as use-case for block alt text.
But there's no way to guess what one would write in there.
And the current frequent practice is either

\begin{itemize}\item Leaving alt text blank.
\item  Or putting programming language tag (akin to Github-Flavored Markdown ones) there.
\end{itemize}

Neither of these helps the screen reader to guess whether to read the block or not.
Which means it is not accessible at all.
We're back to the age of HTML1 here.
Especially with the omnipresent ASCII art used for page decoration.
At least it's not GIFs, I guess?

There are multiple ways to change the status quo:

\begin{itemize}\item Suggest to always make alt text a language/content code, like "javascript" or "ascii art".
\item  Add more structure to alt text, like (unofficial yet ubiquitous) \verb|lang=javascript| and \verb|<figcaption>| in HTML.
\item  Clarify in which way the alt text is intended to be processed by screen readers.
\item  Or even introduce a separate "caption" line/block to attach to preformatted blocks.
\end{itemize}

Notice that all of these are suggestion for the spec, and not for the users.
I'm not sure what to recommend to users.
Caption your preformatted blocks?
At least with something?

\section*{Lists Abuse} \label{lists}

Lists are probably the second most decorative and misused type of lines after preformatted ones.
They are (mis)used to

\begin{itemize}\item Indent the content.
\item  Add "captions" to pre-s and quotes
\href{index.gmi}{(see the index.gmi page on my blog for an example.)}
\item  Or to make heading-like paragraph breaks
\href{projects.gmi}{(see project.gmi)}
\end{itemize}

All of these go beyond what lists semantically are.
Yet all of these are present in many Gemtext documents.
We need to do better.

One solution that could work is the one already suggested above:
Add a "caption" line to cover the list-after-blockquote use-case.
Other use-cases are not really fixable:
Indentation is a matter of writer wanting a weird display and going against Gemini philosopy ("styling is on user");
And heading-like use will benefit from real headings instead.

\section*{Paragraphs as Auxiliary Information} \label{aux}

Paragraphs are often used to expand on the lines preceding them.
As longer explanation for list bullet points, for example.
I'm misusing them this way, at least.

Having caption/aux line could fix that too?

\section*{Is That It?} \label{is-that-it}

These are the biggest pieces of Gemtext praxis that I've seen that are inaccessible.
And semantically broken too.
Not that many breakages, but all too frequent on real pages.

The definitive suggestion that could cover most of these cases is adding one more line.
"Aux" or "caption" line.
Basically what \verb|<figcaption>| does to HTML5.
Something like:
\begin{figure}[h!]\begin{verbatim}
> A blockquote
? Author of the quote, year XXXX
\end{verbatim}\caption{Caption line example use}\end{figure}

But I realize that
\href{https://gitlab.com/gemini-specification/gemini-text/-/issues/}{Gemtext is not really changeable at this point.}
So we're stuck with inaccessible and semantically broken content?

\par\noindent\rule{\textwidth}{0.4pt}
Copyright 2022-2025 Artyom Bologov (aartaka).
Any and all opinions listed here are my own and not representative of my employers; future, past and present.

\end{document}
