Brought to you by my subconscious, apparently this was important enough that I spent all night dreaming about it.
A lot of 'modern' web pages devolve into 'div soup', where instead of using semantic HTML they only or primarily use <div> and <span> element, and put all the data presentation attributes in CSS classes. Web frameworks also encourage heavy nesting of the <div>s, which leads to web pages that are almost unintelligible from the raw HTML.
One justification for this might be that the HTML elements don't define exactly the element that the author needs, and so rather than slightly misrepresent the meaning of something, they choose to represent nothing except some styling options.
Except this is no longer a justification! I learned yesterday that the HTML spec permits custom elements, as long as they are all lower-case, start with an alphabetic character, and contain at least one '-' character.
That is, instead of doing something like:
<style>
.user-comment { font-style: italic; }
</style>
...
<div class="user-comment">Some text</div>
You can instead do:
<style>
user-comment { font-style: italic; display: block; }
</style>
...
<user-comment>Some text</user-comment>
(Custom elements default to inline)
And now your HTML is much clearer when reading the raw markup, without needing to see whatever presentation to understand. This probably won't stop software from producing names like <user-2044>, but at least we have options if you do care about it!