Stop using Behaviour to define interfaces!
I think Elixir developers (me included) often misuse Behaviour to define common interfaces.
In this post, I’d propose to use Protocol more for defining common interfaces and use Behaviour more for sharing common logic.
https://yiming.dev/blog/2021/07/18/stop-using-behaviour-to-define-interfaces-use-protocol/
And you may see why I made Promox and Objext to fill the gaps I find in the current Elixir community.
Read next Background processes synchronization with GenServer and DynamicSupervisor