Ash Framework
ash-hq.org
ash-hq.org
Like say, in Elixir, normally you define database resources in a pretty granular way. You write the migrations manually and define the schema manually (although there are generators to handle a lot of the boilerplate). Then you write the functions to CRUD your new model, etc.
Whereas with Ash, I believe the ideas is that you define the resource using Ash's DSL (Elixir can get pretty liberal with the metaprogramming), and then it makes it easy to add functionality from there: auto-generating migrations, handling object-level permissions, generating OpenAPI schemas, and making it easy to do a lot of other stuff that is tedious to do by hand.
It seems to be very magic-heavy but claims to allow escape hatches. I've heard some good things about it, but also that it has a lot of magic involved.
It's written mostly by one guy and it's definitely a high-level abstraction, but I'm quite certain it's not just buzzword salad. It certainly has a huge scope though and I wonder if it tries to do too much, but I am quite intrigued by the siren song of this project.
There was recently an Elixir conference (ElixirConf) and Zach's (the main developer) talk was posted on YouTube just the other day, so that's probably why this is getting posted here now.
I find that often if I don't understand the magic, I just drop directly into Elixir and/or Ecto (Ash resources are Ecto schemas).
In his talk at the recent Elixir conference Zach Daniels said that the goal for the next version of Ash is improved DX: error messages, debuggability, tools etc. So a lot of magic will be stripped away.
Even so, the domain driven design aspect of this framework was instantly recognizable. Additionally, the name “Ash” has a clear phoenix connotation and I immediately assumed Elixir.
It’s possible my naïveté made this easy to understand, as I haven’t done very much web work in recent years.
The only famous tool I heard about it was some MOF Plugin on Eclipse IDE. And at a different level but kind of the same philosophy, Jetbrain MPS (but more focus on the DSL part).
I am not sure yet if I adhere with MDD principles, but at least it's good to see a modern tool to try it out.
It was a bit dishearting to see drab[1] development stop once Phoenix Liveview took over the mindshare.
[1] - https://github.com/grych/drab
EDIT --
Sorry - adding in that drab's author suffered a major health issue - https://github.com/grych/drab/issues/205#issuecomment-795137...
Ash Framework is a declarative, resource-oriented application development framework for Elixir. A resource can model anything, like a database table, an external API, or even custom code. Ash provides a rich, and extensive set of tools for interacting with and building on top of these resources. By modeling your application as a set of resources, other tools know exactly how to use them, allowing extensions like AshGraphql and AshJsonApi to provide top tier APIs with minimal configuration. With filtering/sorting/pagination/calculations/aggregations, pub/sub, policy authorization, rich introspection, and much more built-in, and a comprehensive suite of tools to allow you to build your own extensions, the possibilities are endless.
For those familiar with Phoenix, you can think of Ash as a declarative application modeling layer designed to replace your Phoenix contexts.
It all sounds so general. And powerful. And flexible. And Plug and Play.
And I realize these are tools, GraphQL, Phoenix, Ecto that are probably helpful.
And of course, Resources, Authentication, Community, Authorization, Multitenancy, Data Layers, Admin, Extensions, Observability, and Compatibility are necessary features in all things.
And they have sponsors.
And quotes from people who like it.
And its obviously a very nice site, since it let's you opt-in for yummy "essential cookies".
But without using any of the related tools, generic qualities, and wonderful but also generic features, how would I know who would use this, why they would use it. And what is wrong with other tools in the class, that this solves.
Is it a complete win? Or does this tool provide a different tradeoff?
Other than being "better". (I get that "better" is the TLDR.)
Or, perhaps I am an idiot. It is hard to tell, I can't rule that out.
But all they need is a little paragraph giving clear context to technically literate people, of what they are looking at. A chance to educate is not to be thrown away lightly.
I actually want to know. My work takes me places. If I am on a page today, I might need what they have tomorrow.
I am sure they tried, but it is frustrating, and feels myopic, which probably isn't the TLDR/buzzword they are going for.
EDIT: I accidentally clicked on the ‘past submissions’ link on HN, and if the titles of its other submissions are to be believed, the language is actually Elixir.
EDIT2: Yes, it’s probably Elixir — the front page mentions it once or twice (though not prominently; I had to search for it).