I’ve been pondering this question for quite some time. Ever since I saw that this piece of code:
document.createElement('myelement');
resulted in this:

I’ve just been wondering if it’s a flaw or if you can really make these up. I know that I can see the made-up element right there but how would I use it? How do I give it semantic meaning in HTML?
It’s not a flaw exactly. It’s a very useful feature of browsers that they permit the construction of elements and attributes that are not valid to any existing specification. It means that when new additions are made to those specifications, all the existing browsers will automatically support them.
Just get everyone else to agree as to what it means. If you invent a
<nsfw>element and I agree as to what that element means, then it has acquired semantic meaning. The more people who agree with the meaning, the more useful it becomes. The classical way to get everyone to agree is to write a specification, publish it, and advocate it.This is what WHATWG did. While as a group of browser manufacturers they were in control of what new elements did in their browsers, their only right to define the semantics was to convince everybody that their definitions were the best ones. For that reason, it’s perfectly reasonable for people like Jeremy Keith to argue that they haven’t always got it right.