Skip to main content

Managing Lock-In Risks

Let's look at two ways in which we can manage Lock-In Risk: bridges and standards.

Bridges

Sometimes, technology comes along that allows us to cross boundaries, like a bridge or a road. This has the effect of making it easy to to go from one self-contained ecosystem to another. Going back to WordPress, a simple example might be the Analytics Dashboard which provides Google Analytics functionality inside WordPress.

I find, a lot of code I write is of this nature: trying to write the glue code to join together two different ecosystems.

As shown in the above diagram, mitigating Lock-In Risk involves taking on complexity. The more Complexity there is on either side of the two ecosystems, the more complex the bridge will necessarily be. The below table shows some examples of this.

Communication Risk From ACommunication Risk From BResulting Bridge ComplexityExample
LowLowSimpleChanging from one date format to another.
HighLowModerateStatus Dashboard.
HighHighComplexObject-Relational Mapping (ORM) Tools.

From examining the risk at each end of the bridge you are creating, you can get a rough idea of how complex the endeavour will be:

  • If it's low-risk at both ends, you're probably going to be able to knock it out easily. Like translating a date, or converting one file format to another.
  • Where one of the protocols is evolving, you're definitely going to need to keep releasing new versions.

Standards

Standards mitigate Lock-In Risk in one of two ways:

  1. Abstract over the ecosystems. Provide a standard protocol (a lingua franca) which can be converted down into the protocol of any of a number of competing ecosystems.
  • The C programming language provided a way to get the same programs compiled against different CPU instruction sets, therefore providing some portability to code.

  • Java took what C did and went one step further, providing interoperability at the library level. Java code could run anywhere where Java was installed.

  1. Force adoption. All of the ecosystems start using the standard for fear of being left out in the cold. Sometimes, a standards body is involved, but other times a "de facto" standard emerges that everyone adopts.
  • ASCII: fixed the different-character-sets Lock-In Risk by being a standard that others could adopt. Before everyone agreed on ASCII, copying data from one computer system to another was a massive pain, and would involve some kind of translation. Unicode continues this work.

  • Internet Protocol. As we saw in Communication Risk, the Internet Protocol (IP) is the lingua franca of the modern Internet. However, at one period of time, there were many competing standards. IP was the ecosystem that "won", and was subsequently standardised by the IETF. This is actually an example of both approaches: as we saw in Communication Risk, Internet Protocol is also an abstraction over lower-level protocols.