Note: These opinions will likely change over time. I just wrote this down quickly, because writing is a great way reflect on new learnings and formulate thoughts clearly.
- Batteries included: So much is included by default here - ORM and migration management, JS/CSS bundler, gettext integration, it's even opinionated about using Tailwind. This is basically Rails/Django for Elixir. I love the live reloading.
- Batteries optional: Dropping Ecto was easy. If most other dependencies are just as optional then I could see it be easy to hit the ground running with exactly the tools you need.
- LiveView: Very interesting, appears to provide some sort of built-in htmx. I think this has potential to change a lot about how you build stateful interactivity on the client. I definitely need to play more around with this.
- Language vs framework: I'm reminded of my first experience with Rails, starting out learning a new language by using it in a highly opinionated framework. Initially, the lines between language features and framework features can be a bit blurred. I think I should sit down and learn the ins and outs of Elixir without Phoenix.
- Ecosystem resources: There's a Python library for just about anything. I wonder how easy it is to find resources for Elixir. QR code generator? Decent date library? Linter & formatter?
- Docker integration: It's a bit strange that the tooling wants to generate its own Dockerfile with
mix phx.gen.release --docker. It produces a well optimized image following best practices and I suppose it fits the theme of an opinionated framework, but I think it would be better placed as documentation, and the tooling and framework itself should be agnostic of whether it's running in a container or not.