The Ash framework fieldnotes
The Ash Framework represents an interesting emerging element of the Elixir ecosystem for peace of mind from prototype to production.
I'm a big fan of the Elixir language and ecosystem.
I don't think this is a secret. Given my writing and speaking, as well as that of organizations I run.
Between Phoenix (for productive, maintainable web app development), LiveView (for rich interactive web apps), Broadway (for data processing pipelines), and Nx/Axon I think it's got a lot of great things going on.
(Not to mention things like LiveView Native, but I'm not acquainted enough with the space to talk about it.)
For a long time the Ash Framework has been on my radar as something I should check out in the ecosystem, but haven't been able to make time for. I even met Zach (the creator) and the Alembic folks at ElixirConf, where we talked about it, but it still didn't quite click.
It wasn't until I saw Luke Galea's talk on Rapid Development Using the Ash Framework at the Elixir Toronto Meetup group that it finally clicked, and I thought:
Okay, I finally understand why this is worth checking out.
The pitch is that Ash gives you a combination of declarative interfaces that allow you to do interesting things based on that interface, a set of standards for implementation, and a powerful and easily accessible escape hatch into totally normal Elixir.
Similar to what folks are doing with using Open API specs to derive generated code, I think there is power in being able to do that kind of thing here with Ash for more of your codebase.
Zach has called it:
the lowest level no-code tooling that you can find
and I like that.
It's not exactly right, but it's closest to the spirit of it that you can capture in an elevator pitch. For bonus points you don't get trapped in the no-code hell environment when you need to extend it. You can pop right out to vanilla Elixir.
With that in mind, I want to dive in and document my journey experimenting with Ash, giving you a point in time snapshot of the great points and rough edges of using the framework, as well as my thoughts, based on the point in time when I published each post.
You can follow my journey through this series at the Ash tag here, or by subscribing.
If you'd like to join in the discussion you can reach me at firstname.lastname@example.org or you can join the discussion in the Ash Discord.