Michał Muskała

Elixir Core Team member, Hammer Corp

Ecto - the Past, the Present, the Future

With nearly 3000 commits and 200 contributors Ecto is one of the biggest and oldest Elixir repositories. Not only that - it's one of the most popular Elixir projects. And yet there's a lot happening all the time, especially now with the 2.0 release. Looking at the commit history of Ecto one can discover a journey most of Elixir developers take - first trying to force object-oriented habits into functional frame, later sprinkling some functional goodness here-and-there to finally entirely accept and embrace it and fully leverage OTP. The talk will take us through this journey focusing though on the more recent changes. Audience will discover how changes in the language affected the library and, in reverse, how the development of Ecto affected Elixir itself. For a short time, the talk will focus on the NoSQL integration, what it means and why it was possible to integrate, rather SQL oriented Ecto, with NoSQL databases that easily. We'll see exactly what architectural choices in Ecto and what features of Elixir allow for creating such a versatile software. Briefly, other database libraries (in Elixir and not only) will be looked into in search for the inspiration of some of the Ecto's features. We'll see how those ideas were incorporated, modified and expanded upon. The bulk part of the talk will centre on the recent changes, exploring and explaining them in depth. It will focus especially on changes affecting application's architecture and promoting functional style of programs: migration from Model to Schema, deprecation of callbacks and introduction of Ecto.Multi. With that last change, we'll discuss a new way of building application's service layer for database interaction that Multi makes possible and easy to build. Finally, together, we'll look into the future and wish how Ecto and it's ecosystem can be further developed and expanded.

Talk objectives

* Gaining a better understanding of what functional programming means through analysis of real code and looking into it's evolution.

* Exploring how Elixir can be used for building flexible and clean software.

Software engineer, open-source developer, speaker and trainer. Michał is an Elixir Core Team member focusing on virtual machine, compiler and performance. As a developer and contractor in Elixir and Erlang he has faced many interesting issues. He's also a co-maintainer of Ecto and some other Elixir open source projects. When not programming, he enjoys reading, travelling, and sailing - no matter if it's sunny, rainy or stormy. It's even better if all of those are combined!