At this point, it might seem like you have all you need to create process-oriented projects with Elixir. You know how to create useful functions, can work with recursion, know the data structures Elixir offers, and, probably most important, know how to create and manage processes. What more could you need?
Process-oriented programming is great, but the details matter. The basic Elixir tools are powerful but can also lead you into frustrating mazes debugging race conditions that happen only once in a while. Mixing different programming styles can lead to incompatible expectations, and code that worked well in one environment may prove harder to integrate in another.
Ericsson encountered these problems early when developing Erlang (remember, Elixir runs on Erlang’s virtual machine), and created a set of libraries that ease them. OTP, the Open Telecom Platform, is useful for pretty much any large-scale project you want to do with Elixir and Erlang, not just telecom work. It’s included with Erlang, and though it isn’t precisely part of the language, it is definitely part of Erlang culture. The boundaries of where Elixir and Erlang end and OTP begins aren’t always clear, but the entry point is definitely behaviors. You’ll combine processes built with behaviors and managed by supervisors into an OTP application.
So far, the lifecycle of the processes we’ve seen has been pretty simple. If needed, they set up other resources or processes to get started. ...