"Standards" by Randall Munroe is licensed under CC BY-NC 2.5

This article is a work in progress. It contains principles and patterns that I have learned over the years for developing pragmatic, extensible, interoperable data formats.

Introduction

Interoperability (n) -
The ability of independent systems to exchange and make use of information.

The mechanics of interoperable systems take place in all layers of a system[1] including both hardware (physical and network) and software (transport and application). For this article, we will focus on data interoperability using the following definition;

Data Interoperability (n) -
The ability of independent applications to exchange and make use of information.

Notes:

  • Industries driving interoperability best practices include health care, emergency management, finance, and more recently IoT.
  • Formats in common use XML and JSON
  • Standards, standards, standards

Principles

  • Encapsulation
  • Domain Separation
  • Transport Agnosticism or "That's a wrap!"

Patterns

  • Namespace-Key-Value Statements
  • Interrogatives or "What?"
  • Digest / Summary
  • Payload / Content
  • Extensions or "In Defense of Namespaces"

The Bigger Picture

  • Governance or "I am not a committee!"
  • Registries
  • Compliance

References


  1. OSI Model ↩︎