I probably should have been clearer earlier, but I never said they are only about validation.
From the official docs:
Changesets allow filtering, type casting, validation, and constraints when manipulating structs,
For the last 5+ years, I’ve been using changesets to enforce a baseline of correctness in what is, frankly, a pretty YOLO typing environment. If I have the proper tools, I would be doing that at the edge only (I tried that, I tried the discipline route, it didn’t work, and I refuse to blame the hard working talented people I work with)
The main reason I never built a separate package is simple: I didn’t want to add more fragmentation or cognitive load to the ecosystem or to teams. People already know Ecto. That’s good enough, for now.
It has served me well. After 9 years working with Ecto and Phoenix and building production systems in Elixir, I’m comfortable saying I understand when Ecto is appropriate and how to use it responsibly.
Personally, I’m pragmatic about this. I don’t feel strongly either way. At this point, I care more about what works well for teams than about ideological purity.
Anyway, I am moving on from the Ecto discussion.






















