Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ash Framework (ash-hq.org)
115 points by gjvc on Sept 24, 2023 | hide | past | favorite | 33 comments


From what I understand, Ash is an abstraction layer built in Elixir that makes it easy to model and work with resources.

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.


As a very new guy using Ash: yes, there are escape hatches everywhere, and a lot of magic is quite thin.

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.


To give a contrary opinion, I didn’t have a problem understanding what this is. I know very little about Elixir, and haven’t done first class web-services in a few years.

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.


So, something that is very clearly true is that was need to make the website better :). We aren’t being vague on purpose! Most people who go to our website have gone with an idea of what Ash is already having seen a talk from me or talked to someone about it.


Our recent changes to the website aimed at trimming it down were clearly overzealous.


Is there a reason you're being opaque about the fact that it runs on Elixir? Why not just say right at the top "a framework for elixir lang" or something similar?


Not at all! Just an oversight :)


The small change you made to the front page already makes it easier to understand! Thank you!


If I understand well, is it a Model-Driven Development (MDD) framework? If yes it's quite nice to see some people are working on that.

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.


We share a lot in common with those design principles, yes. Ultimately though I don't believe in modeling as a sort of "pure" thing that you can do in advance of coding. Our tools are aimed at essentially doing both at the same time, finding the middle ground between your domain model and reality.


All I would say to Zach, other than appreciating his efforts on this, is to not give up, and to be in it for the long haul. The Elixir community needs a different flavour of making webapps other than Phoenix.

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...


To Zach: I feel confident in saying this is very important applied research into improving our field. Too much of programming still amounts to conceptually duct-taping loads of rando modules together and hoping for the best.


Thank you


Took me way too long to figure out this is powered by Elixir.


It now says "Elixir" right on the tin :)


I still don't see it anywhere other than the small caption mentioning ElixirConf (still not obvious that it's meant for Elixir) and the mention of Phoenix + Elixir ecosystem under the "Compatibility" section (way too far down the page).


Yep, because I pushed a different change and accidentally removed the word Elixir again. Pretty stupid of me, it’s been a hectic day. We’re putting it back as we speak.


Okay, fixed :)


Can confirm I see it now! Definitely more immediately obvious what Ash is this way :)


In case someone needs more context (like I did):

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.

[1] https://github.com/ash-project/ash


What puzzles me at such websites is that they cannot manage to briefly describe WHAT they actually do. Without previous information about it, you have no clue to figure out what they are for (I googled it, Github says a bit more, but the website? No clue for that, even in documentation)


I am probably an idiot, but so many tool sites (web, GitHub, ...) don't seem to know how to describe what their tool really does for someone not familiar with the product and maybe not familiar with the class of product.

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.


I sorta kinda agree. This landing page likely does well to someone who has just spent half a day ticking each checkbox on their tech stack list with the best library they could find, and then finds this project claiming it has done all that for them. And integrated them already, so they can readily build apps for the use case they have in mind. The pitch is the tech stack itself.


Sounds about right.

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.


I tried figure out what I can build with this framework (web apps? native apps?) and what programming language I have to know to use it and after few clicks, also into doc, I gave up.


From the code samples it looks like it might be Ruby, but the documentation doesn’t seem to confirm or deny it either way.

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).


"Watch the ElixirConf 2023 talk" at the top gives the language away


Maybe also, the task of describing effectively is quite difficult.


Looks like chat-gpt generated. Too many generic buzzwords, too few actual information.


We used to have tons of information and I spent a bunch of time removing it all trying to simplify. I very clearly removed too much . But, it’s definitely not GPT generated.


When simplifying don't lose base information. Language, aim, actual benefits. "Everyone" use graphql, json and data layers.


Thanks for the feedback! Its pretty difficult to find someone with no context on what we're building at all and say "hey does this tell you what this thing does/what info is missing", so this is very useful.


Just do user interviews of FAANG devs that work in Ruby or something?




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: