In a famous quote, David Wheeler states:
All problems in computer science can be solved by another level of indirection; this is often deliberately mis-quoted with “abstraction” substituted for “indirection”.
David Wheeler is the first person to ever have a Ph.D. in computer science.
An abstraction layer is a thin layer of software that “abstracts” underlying software or hardware. The purpose of the abstraction is twofold:
For example, the identity selector is an abstraction layer. Simplicity and consistency are provided to those involved with both sides of the abstraction.
The person using the identity selector is abstracted from the complexity of the details of an identity system.
The programmer connecting to the identity selector is provided a consistent mechanism of use and access that is also simplified for a programmer.
And finally, the developer creating access to a specific identity protocol uses the simplicity and consistency of the provider mechanism to make things work.