6 ms·
I feel as though this website does a poor job of telling me what the framework actually does. There's the mostly-fluffy marketing lead text, followed by an over
by Philpax 1y ago
I feel as though this website does a poor job of telling me what the framework actually does. There's the mostly-fluffy marketing lead text, followed by an overly-complicated configurator to generate a project.
What can I actually do with this? What problems does it solve? Where is it located relative to other solutions in the same space? What is that space?
- borromakot 1y agoWe've always had trouble with this. The closest thing to Ash I've seen elsewhere is an ORM. It's not an ORM though. Ash is a declarative application framework. You define your application logic using Ash.Resource, which model things like state, but most importantly actions. Another analogy is that it's similar to GraphQL, but lowered down to the backend layer. It's a declarative, typed application description and implementation framework, that you can derive a GraphQL from (amongst many other things). Another way to think of it is a whole ecosystem of packages that standardize the vast majority of things you want to do when building an Elixir backend, instead of trying to kludge together a bunch of different tools. Pagination, sorting, filtering, authentication, authorization, all builtin and designed to work together.
- Philpax 1y agoThat's certainly more helpful, yeah! My biggest complaint is that that's really not particularly obvious from the home page; I didn't realise the highlighted words in the lead were links, and they're all to a diverse set of locations, which I'm unlikely to check out if I just want a ten-thousand-foot view of the framework. I'd suggest putting a description similar to your last paragraph on the home page, and including a brief example of what that translates to. Phoenix's website [0] does this beautifully: within the first page of scroll, I immediately know what it does and how it looks, and the following pages of scroll give me the detail I need to evaluate it properly. [0]: https://www.phoenixframework.org/ https://www.phoenixframework.org/
- borromakot 1y agoI will go in and add another section that expands a bit more on what Ash is after ElixirConf EU is over. Thanks for the feedback!
- ajx1001 1y agoYes, this is a good description. The way I explain it is that "Ash is a declarative, composable application framework." It is the middle layer between DB (Ecto) and Phoenix (with or without LiveView) -- where your actual application lives. The difference between a Resource and a Model (or ActiveRecord) is Models typically define attributes and relationships vs a Resource defines attributes, relationships, actions (read, write, destroy, custom...), behaviours (i.e. multi-tenancy, jobs) and what I call facets (i.e. JSON api, GraphQL). When you read the code for a Resource, you grok all of this in a nice, consistent way (we have 100* resources - all are consistent). This is because of the DSL. When compiled, it all boils down to a Struct that you can easily inspect. That Struct enables all kinds of stuff.
- joshprice 1y agoI've talked about this a few times and this is the shortest answer to this question. The first part of this talk may help explain concisely where Ash fits at a higher level. https://youtu.be/10VBTcN8gAo?feature=shared&t=133 https://youtu.be/10VBTcN8gAo?feature=shared&t=133 Ash Framework was created to solve a fundamental problem in (web) application development for business apps. When you build a new app, you want to focus on the valuable, innovative parts - what's visible above the waterline of the iceberg. However, modern web applications require an enormous amount of "below the waterline" functionality that's essential but not where you want to spend your time. Running a consultancy and building various client projects highlights this challenge. Everyone wants to focus on the core, valuable features, but must also deal with relatively boring, commodity problems that have been solved countless times before. This often means reinventing the wheel, which clients understandably see as low-value work. Authentication is a perfect example - most customers don't even specify login functionality as a feature. Similarly, admin interfaces are considered table stakes for modern applications. The list is extensive: admin UIs, observability, security, and more. All important, but time spent there can feel wasteful when you'd rather be innovating. Ash's primary goal is to keep you focused on the innovative work above the waterline while minimizing time spent below it. The framework accomplishes this by modelling your domain and deriving everything else.
- pydry 1y agoThis is not a new problem. It is exactly what a web application framework like, e.g. django has been handling for one and a half decades. What does it do that django doesn't? A lot of competitors to django have also fallen behind because they either railroad you too much (e.g. by making immutable assumptions about how you want authentication to work which often end up being faulty) or go too far in the other direction and require an excess of boilerplate. This is a very subtle and tricky trade off that most newcomers to the space fail badly at.
- joshprice 1y agoUnlike Django, Ash is not a web framework, it’s an *application* framework. One way to think of it is that it’s a flexible and extensible domain modelling language that also happens to derive an Elixir application which can be called from Phoenix web UI (or something else like an API, a terminal UI or even an MCP server.
- username3 1y agoThis repository from the Ash book gives you an example of what it can do. Model. https://github.com/sevenseacat/tunez/tree/end-of-chapter-10/lib/tunez/music https://github.com/sevenseacat/tunez/tree/end-of-chapter-10/... View. https://github.com/sevenseacat/tunez/tree/end-of-chapter-10/lib/tunez_web/live/artists https://github.com/sevenseacat/tunez/tree/end-of-chapter-10/...
- lta 1y agoI hear what you say. I personally blame the flurry of BS js "frameworks" that have more effort put in their Apple-wannabe front page than in actual practical engineering. I think they've setup a weird standard for framework front page that this one seems to follow. I don't blame the Ash guys, I blame the people who created the trend and those supported who it. I look at you, JS community. (Yeah... this is 100% a rant, sorry)
- deleted 1y ago[deleted]