Ned wrote a wonderful essay titled “Own your data: ad-hoc representations“.

I have to totally agree with Ned. I have been involved in a number of projects that applied what we called at the time the Highlander Principle (there shall only be one) to prevent NIH and take advantage of reuse. The end result looked like the standard but not really. This ultimately required a developer using the system to always translate semantics back and forth to figure out what was going on.

The other myth with adopting a related standard is that you get free features. In reality you end up adding new work to address use cases specific to the standard that are not core or valuable to the application. That creates unnecessary complexity and work.

My view is that standards should be used for their purposes. If the semantics of an application are core, then expressing things in the simplest possible representation does more good for the application. If integration is needed with a standard that should be a feature that tests the extensibility of the architecture.