From Randall Munroe’s XKCD comic: https://xkcd.com/927/ Recently, I have been working on a project where I had to deal with a bunch of agencies that use a standard format of XML called REAXML. You can see the ‘standards’ . Let’s talk about what’s good about this. For one, almost every real estate agent in Australia uses this format to send their property data to a bunch of websites (including theirs), and this is great. That means everyone uses the same format, and everyone’s data is compatible with each other, right? here Wrong. You see, REAXML has a very lenient standard. It accepts a wide possibility of inputs and values — so much that it hurts. Here’s an example: a property can have multiple ‘features’ in it like a fire place, pool, air conditioning, etc. If you do want to show that a property has those, it is as easy as adding it to a node like so: features <features><airConditioning>1</airConditioning><openFirePlace>yes</openFireplace><pool>2</pool></features> Eas — wait, what? Yes. All three examples basically mean “it has ____”. If you don’t believe me, ! have a look A whole number greater than or equal to zero is accepted as valid. Any value greater than 1 is considered to be 1. Alternatively, yes or true are accepted, while no or false are counted as not present. An empty value is considered as there being no air conditioning present within the property. Okay. So to say that you have a property that has air conditioning, you can either give the node a value of , , , or any other positive whole number. . 1 yes true WOW I know most of these were done by a whole team of very intelligent people, most likely smarter than me. I do understand that some agencies will probably want the option to say “This property has 2 pools and 3 fire places”, but since this is an XML file anyway, why not just add it as an attribute and keep the value as a boolean? And by boolean, I mean ONE OR THE OTHER: or . Not 1 or 0. Or or . I mean that just creates a whole lot of complexity in everyone else’s code / interpreters! TRUE FALSE yes no Here they are, having almost a monopoly on all the agents and basically forcing them to use REAXML, but why are we being lenient? For me, a standard is a set of hard rules. A quick google shows us the definition of “standard” From the result of a quick Google, we see the first two definitions of “standard”: and . Quality. Norm. Both these words scream “strict” to me. If you have a standard, ! Everyone is following you anyway, so why not just force it down their throats? “Hey everyone, since you’re all beautiful and smart people, !” a level of quality or attainment something used as a measure, norm, or model in comparative evaluations BE STRICT ABOUT IT FOLLOW THE RULES This actually triggered a bunch of flashbacks from my early days of being a front end developer: the . Who remembers IE6? W3C Standards So the problem is, even if we had W3C to set the standards, the browsers all had their different opinions and implementations! Take a look at the . How can it be a standard if everyone is using a different version of it anyway? box model before Without a consensus, everyone loses. Everyone will now have to cover other cases that were not in the format they were using. I remember back in the — was quite a new property and not all browsers supported it. They then all had the brilliant idea of just implementing their own, so had a vendor prefix of and the ( and ) both had . x early days of CSS3 border-radius Mozilla (Firefox) -moz Webkit browsers Chrome Safari -webkit So much for standards! Solutions? To be honest, the XKCD strip above summarizes it best. The usual solution is to create YET another standard. But is that really the solution? I think the solution is to just follow the standard. If there is confusion to something, then fix it. It means that the standard might be too vague or it has too many options (like the boolean option in REAXML above). Just be strict, enforce it, and follow it. Spread the word and the knowledge. If you find yourself using a standard and another person or organisation is using it but with different interpretations, then it is a sign to start a conversation — because you might both be doing it wrong.