I really like these changes, as it really makes it more explicit what is going on.
I do have a question: How can we properly migrate to this new way of doing things, while for the time being keeping our code backwards-compatible with older Elixir versions?
Use @optional_callbacks
but also write defoverridable
for backwards compatibility? Or is there a way to switch between these statements at compile-time based on the Elixir version, to make it very explicit that part of it is legacy-support that might be removed in the future?