I am lead of the Elixir developer team.
First thing to realize is, the Erlang æternity implementation, is the reference implementation of the æternity protocol for now. It leads in terms of features, security and stability. Also it will be the implementation to be used for mainnet release. It was choosen as we did have a great team for Erlang.
æternity will provide an alternative implementation of the protocol in Elixir. This is done for 3 main reasons:
- The Elixir implementation will focus on easy to read and understand code. Elixir tends to be a simpler language to understand in terms of syntax and structure, for developers not yet familiar with the Erlang/OTP ecosystem. So it will be better approachable by new developers interested in the æternity protocol.
- The Elixir developer team is more junior, compared to the Erlang one, we wanted them to get æternity protocol experts, by implementing it themselves, not just translating Erlang, to some other language.
- An alternative protocol implementation is a good thing to have in the blockchain space. We can use the Elixir implementation, to check if the network of Erlang nodes complies to the protocol. Once both nodes are released for mainnet, it will provide more stability and safety, in case one of them has performance problems or other vulnerabilities. E.g. one node crashed while validating some malicious block, the other implementation probably won’t have the same issue.
Thank you @rvirding for the great general answer to the Elixir/Erlang design and ecosystem.