A short talk on Elixir adoption in RabbitMQ, a multi-protocol open source messaging broker: the motivation, how it compares to Erlang for our needs, and what we've learnt about 1 year into it.
12. What's the Project?
• RabbitMQ
• Started in 2006, before Elixir (Rebar, Lager,
Cowboy, Ranch, dinosaurs, …) existed
13. What's the Project?
• RabbitMQ
• Started in 2006, before Elixir (Rebar, Lager,
Cowboy, Ranch, dinosaurs, …) existed
• Lots of wheels invented, some are not very round
14. What's the Project?
• RabbitMQ
• Started in 2006, before Elixir (Rebar, Lager,
Cowboy, Ranch, dinosaurs, …) existed
• Lots of wheels invented, some are not very round
• New team with a new perspective on things in
the last ~ 2 years
15. What's the Project?
• 7 engineers + ~ 3 active contributors, all kinds of
backgrounds (Erlang, Java, C#/F#, C, …)
16. What's the Project?
• 7 engineers + ~ 3 active contributors, all kinds of
backgrounds (Erlang, Java, C#/F#, C, …)
• Includes several client libraries we maintain, lots
of plugins
17. What's the Project?
• 7 engineers + ~ 3 active contributors, all kinds of
backgrounds (Erlang, Java, C#/F#, C, …)
• Includes several client libraries we maintain, lots
of plugins
• There are projects at Pivotal that depend on what
we do
20. How do we use Elixir?
• All core CLI tools as of 3.7.0
21. How do we use Elixir?
• All core CLI tools as of 3.7.0
• Experimental plugins
22. How do we use Elixir?
• All core CLI tools as of 3.7.0
• Experimental plugins
• Future tools and plugins
23. How do we use Elixir?
• All core CLI tools as of 3.7.0
• Experimental plugins
• Future tools and plugins
• Recruitment honey pot (discovered accidentally)
😂
31. Why Elixir?
• Elixir's OptionParser seems to be inspired by
Ruby & Python ones
• Associative data structures in Elixir are a solid
improvement over Erlang's
32. Why Elixir?
• Elixir's OptionParser seems to be inspired by
Ruby & Python ones
• Associative data structures in Elixir are a solid
improvement over Erlang's
• Interoperability with Erlang makes it very easy to
try
33. Why Elixir?
• Elixir's OptionParser seems to be inspired by Ruby
& Python ones
• Associative data structures in Elixir are a solid
improvement over Erlang's
• Interoperability with Erlang makes it very easy to
try
• We had over 50 repos already, one more wouldn't
hurt
39. How did it go?
• Next feature release will include the new CLI
tools in Elixir
40. How did it go?
• Next feature release will include the new CLI
tools in Elixir
• Close to 70 commands, ~ 750 tests, ~ 8K lines of
code
41. How did it go?
• Next feature release will include the new CLI
tools in Elixir
• Close to 70 commands, ~ 750 tests, ~ 8K lines of
code
• New features: extensibility from plugins, result
set streaming for listing commands, much better
argument validation, …
42. How did it go?
• Next feature release will include the new CLI tools
in Elixir
• Close to 70 commands, ~ 750 tests, ~ 8K lines of
code
• New features: extensibility from plugins, result set
streaming for listing commands, much better
argument validation, …
• Well received by other teams at Pivotal 👍
44. How did it go?
• Quickly adopted by folks without prior Elixir and
virtually no Erlang experience 👍
45. How did it go?
• Quickly adopted by folks without prior Elixir and
virtually no Erlang experience 👍
• Very decent standard library 👍
46. How did it go?
• Quickly adopted by folks without prior Elixir and
virtually no Erlang experience 👍
• Very decent standard library 👍
• ExUnit is up there with Spock, RSpec 👍
47. How did it go?
• Quickly adopted by folks without prior Elixir and
virtually no Erlang experience 👍
• Very decent standard library 👍
• ExUnit is up there with Spock, RSpec 👍
• Error messages in Elixir are more sensible 👍
48. How did it go?
• Tooling and dependency management from this
century 👍
49. How did it go?
• Tooling and dependency management from this
century 👍
• Upgrading between Elixir versions was very easy
😍
50. How did it go?
• Tooling and dependency management from this
century 👍
• Upgrading between Elixir versions was very easy
😍
• Some Elixir libraries are better than their Erlang
alternatives 🐼
54. How did it go?
• Integration with erlang.mk 😣
• Confusing to those spending too much time with
Erlang 😕
55. How did it go?
• Integration with erlang.mk 😣
• Confusing to those spending too much time with
Erlang 😕
• Elixir/Erlang data type mismatches 😣
56. How did it go?
• Integration with erlang.mk 😣
• Confusing to those spending too much time with
Erlang 😕
• Elixir/Erlang data type mismatches 😣
• Some Elixir libraries are a one man show 🤞
57. How did it go?
• Integration with erlang.mk 😣
• Confusing to those spending too much time with
Erlang 😕
• Elixir/Erlang data type mismatches 😣
• Some Elixir libraries are a one man show 🤞
• Elixir skeptics in the community 🤞