End-to-end principle

Revision as of 17:43, 16 December 2020 by Amwelladmin (talk | contribs)
In which the curmudgeonly old sod puts the world to rights.
Index — Click ᐅ to expand:
Tell me more
Sign up for our newsletter — or just get in touch: for ½ a weekly 🍺 you get to consult JC. Ask about it here.


“I once got all the way to Glasgow from Edinburgh without a ticket. I walked.”

— Sid Snot, The Kenny Everett Video Show.[1]

“There are more network use-cases in heav’n and earth, Horatio, than are dream’t of in your philosophy.”

— Shakespeare, Spamlet, I: v

The end-to-end principle is a design framework for networks and complex systems. It says this:

Keep the network as simple as possible. Put all the complications/intelligence/complexity at the edges of the network. Allow people to build whatever structures they like on their own turf, but keep the common spaces clear and simple.

Lawrence Lessig lays out the concept very well in his magnificent Code: Version 2.0.[2].

Network layers

You can see any network as a series of layers, with only the most basic, bottom most layer connecting every item in the network. Each successive layer is more complex, but its use is suitable for a more limited number of “clients” with specific applications. That bottom layer must be as simple and universal as possible — universal in a literal sense, since every client of the network must be able to operate on it. Complications in the lower level of a network have costs for all higher-layer clients, even if those clients do not need the features. So the basic idea is to put complicating features in the highest possible layers such that every client operating at that layer (or higher) needs that feature.

Conceptual example: transport network

Say we are organising transport around an area of uncultivated, flat land.[3]

  • Most basic level: The whole area, as it is, At its most basic level the network is maximally simple and flexible. You can access the “network” from anywhere (i.e., wherever you happen to be is an "entry-point" to the network) but you have to put in all the effort if you want to get anywhere. See Sid Snot quote above.
  • Second layer: You can overlay a second layer suitable for people with a certain mode of transport. It will be necessarily less comprehensive than the basic layer, and will not suit all people, and will therefore have with a more limited set of entry-points. For example, a road system on the land optimizes the land for vehicular traffic, but some cost to those wanting travel some other way (and certainly to those wanting to use land for non-transport purposes) — so you don’t pave over the whole area, but built an road network, optimised for automobiles. People wanting to use the road the network need a car; people with other needs don’t use the road network at all. Once you have a car you can go anywhere on the road network; to go elsewhere in the area, you need to ditch your car and walk.
  • Third layer: Say someone then operates a bus service on the road network. This is a third layer excellent for those who want to go whether the bus is going on the road network, but no good if you want to go somewhere else on the road network, let alone if you want to go elsewhere on the land.

The classic example is of course the internet itself. At its most basic layer, it is a series of connected notes using the TCI/IP protocol and packet switching to which takes any type of data (text, video, audio etc) breaks it into tiny homogenous “packets” and sends them off across the network with an address, and the client at the receiving end reassembles them. There are all kinds of additional layers in it, be they walled gardens (Facebook etc) streaming services (Netflix), cloud servers and what not. Even as the fortunes of these services and gardens wax and wane (where are they now, AOL and MySpace) the un-owned internet grows ever stronger.

Consequences

This design principle has a number of advantages, especially in the digital commons where issues of physical property and the tragedy of real commons don’t apply:

  • It’s open source: no-one needs to sanction the creation of a new layer. You can innovate on the network — create your own new bus company — without bothering the network “owner” 9if there even is one — there isn’t, on the internet. This also avoids “strategic” behaviour by the network owner (rent-seeking, monopoly behaviour).
  • It’s permissive: no-one is forced to use a more complex layer — clients retain autonomy and flexibility to select optimal levels at which to engage with the network: you can decide to walk, take a bus, take a car etc).
  • It’s competitive: For the same reason, it incentives efficient and effective design: one can drop down to a more basic layer and instead implement an alternative, competing layer.
  • It’s agile: Thus as use cases develop, the network develops organically to accommodate the new uses through the entrepreneurial development of the network. So the internet has adapted from messaging to webpages, to VOIP and videostreaming etc etc etc.

This applies in the design of all other kinds of multi-use systems, such as — for rather good example — a digital execution hub. There are a number of things you should not do when designing a network:

  • Teach to fish, do not give a fish: Do not try to anticipate future uses. Acknowledge that the potential applications and use-cases

See also

(Code: Version 2.0

References

  1. I cannot prove that I didn’t imagine this, as I can’t find it anywhere on the internet.
  2. Page 126, analog freaks.
  3. You can do other things with this network, too — build on it, grow things on it, but let’s keep it transport, to keep it simple.