OTP is the heart and soul of Elixir’s concurrency and reliability. It is based on 30 years of experience with the Erlang framework that provided the core reliability and availability of Erickson phone switches for many years. OTP gets its reliability by separating the concerns of reusable project lifecycle from project custom code.
Elixir developers use OTP by creating a generic service layer and then augmenting that template with their own custom code. Instead of starting their own application directly, they use a supervisor, a process server of sorts that knows how to stop, start, and detect failure in processes.
This slight separation may seem like a small thing, but it is the basis of extraordinary availability metrics for the Erlang language. You can leverage OTP to build your own services into your own Elixir applications, whether you’re using Phoenix, Nerves, or some other kind of service.
In 1988, Joe Armstrong, Robert Virding, and Michael Williams were working on making software more reliable at Ericsson. They built a library called the Open Telecom Protocol. That acronym was an exercise in marketing, but the acronym was eventually dropped.
The project was opensourced as part of the Erlang project, and the popularity of the programming framework began to pick up. In 2012, Elixir was created, expanding OTP’s footprint. Scala’s Akka framework extends OTP to the Java virtual machine.