This is a great summary. I think it could be improved even further by mentioning one important aspect - naming things.
In particular the naming conventions around packages that build on top of other packages, e.g. ecto extensions, some reusable plugs, etc. It's tempting to put your library under the
Ecto.Whatever namespace, but that's a bad idea. The
Ecto namespace is already owned by the Ecto package itself and it's easy to see what problems it might cause if it decides to add a module called
Ecto.Whatever itself. It's usually a much better idea to make the main namespace
EctoWhatever - something unique to the new package.