Django vs Phoenix

Maybe torch:


Torch looks awesome, nice interface and self generating admin what more do you need!

Is it Christmas!

Thanks very much for sharing @mythicalprogrammer

1 Like

I’ve used Django a lot, largely because of the tight coupling between the ORM, validation, and frontend rendering.

How would you all recommend someone new to Phoenix and Elixir get a similar feel and productivity level? I’m willing to write code, but I’d rather not write all the code. In reading it and going through a small workshop of Phoenix and LiveView, there are really cool pieces. However, I also feel like I’ll need to write a lot of features/pieces that the tight build the ORM and Django give me out of the box. Any libs and recommendations on how to accomplish the same sort of flow?

Welcome :023:

I’m not too familiar with the current state of Django (when I looked at it when I was deciding between it and Ruby/Rails its main advantage in my view was its built in admin panel) however with regards to the ORM we have Ecto, which is pretty fantastic :003:

I wrote some of my thoughts about Ecto in my review of the Programming Ecto (Pragprog) book (it might also give you a glimpse into some of the other benefits of Elixir).

With regards to ACP tools we have some too - though of course not as highly coupled as what you may find in Django:*


I think this solution is just fine. ^^

1 Like

There is a new one called Mandarin, though it appears to be relatively early in development.

Use Django instead of Phoenix. Try to do a project in both and you will realize it’s faster and easier to develop in Django.

Phoenix has potential but needs to mature more.

Nobody is disputing that Rails and Django might be quicker to make a minimum viable product on. But both have scaling problems and you have to start throwing dollars at your hosting much earlier than you’d do with Phoenix. Additionally, especially with Rails, organising code when your projects grows big becomes really hard.

Please clarify?

1 Like


Don’t get me wrong I support Phoenix that is why I am here. But scaling is a little overrated, Facebook still uses PHP, Instagram still uses Django. And for those with less traffic they will be fine managing scalability. Phoenix has to mature more in terms of the size of community, available batteries, and learning resources. This forum however is one the best in helping Phoenix grow.

Instagram is also owned by Facebook – and Facebook can afford to literally shovel dollars in a furnace in order to avoid hiring programmers that work with other languages and not PHP.

Many people aspire for their companies to grow to the scale of a FAANG corporation (Facebook / Amazon / Apple / Netflix / Google) but the truth is that the problems they have are vastly different compared to the problems of the other 99.9% of companies in the world.

FAANG’s methods should not be emulated unless you grow as big as them. So count me strongly not impressed by their gross resource inefficiency management.

Spend enough time around here and you’ll see this is a divisive topic. Elixir’s creator is literally a former Rails contributor and he also helped a lot with Devise (Rails’ authentication framework). Many people working with Phoenix do not want it to become too bloated and coming by default with a lot of batteries included.

I get the sentiment; sometimes I wish Phoenix came with an authentication generator out of the box with a bunch of options – like do you require re-sign-in after you change the email of your account or not? – and sometimes I do get grumpy that I have to do a lot of stuff manually. But then I remember that this way I am in control; not only of the features and possible bugs introduced by the extra batteries, but also of the performance.

Phoenix’s scalability and lean resource usage are actually far down my list of its favourite traits. They are something that sweetens the deal to a degree but it’s not what I love about it. The fact that it steps on Erlang’s OTP and thus it is extremely predictable under load has to be in the top 3 though. Many other frameworks very quickly buckle under pressure, and non-FAANG companies cannot afford to just spend hundreds or thousands bucks extra in monthly hosting bills to dodge the effort needed to fix the scalability and lag problems.


I hear you @dimitarvp. Your points are noted. Thanks.

1 Like

So you think everybody should switch to Phoenix?

Definitely not, such absolutism leads directly to nowhere. :slight_smile: There are a lot of projects out there that have a ton of developers in them, the company is bound by enterprise contracts to use certain hosting and/or technology, etc. etc. – the real world has a lot of political constraints that we the programmers find boring and don’t take into account.

But if you have the choice and the blessing of the higher-ups, definitely go with Phoenix. I was frustrated while doing several projects with Phoenix but in the end I found out that the degree of control I have gives me everything I need to solve every problem in the project. And that’s not the case with other frameworks.

And, as mentioned earlier, the smaller hosting bills are a very nice bonus.

Finally, Elixir’s resilience and predictable multicore performance are something that a lot of other languages and frameworks are just now starting to try to emulate. Erlang/Elixir are miles ahead – in the purely technical sense – of pretty much 99% of everybody else.


Building things quickly is overrated


I agree Phoenix has its strength. It’s just hard to justify a Phoenix project to clients when even Wordpress will do. For my own projects I’m using Phoenix though.

Eh, but WordPress solves entirely different problems.

WordPress => shovel websites, get paid by the kilogram. :slightly_smiling_face:
Phoenix => handcraft serious web applications.

They are not comparable at all. It’s like comparing a static website generator – like Hugo or Gatsby – with Phoenix.


Pretty unfair to claim I’m an elitist.

@dimitarvp I’m not saying your Elitist, I’m just saying you should not belittle other frameworks because it turns away those wanting to join the Phoenix community. Btw it’s pretty unfair to say Wordpress developers does not create serious web applications.

Thanks for the clarification but you are still very unfair.

There are a ton of technical and provable arguments for Phoenix and against many other frameworks. Do you challenge, for example, the notion of Erlang’s OTP being a suboptimal runtime as opposed to others? Nobody else has the advantages of Erlang’s runtime – maybe only the Rust community is working very hard to bring up a similar runtime to life. Green threads, extremely fast GC, the actor model, resiliency to failure, stability under high load / pressure, ability to monitor tasks and sub-tasks out of the box, the list goes on and on. Did you provide, point by point, alternatives that do the same – or better?

You cannot simply discount technical argument as “belittling”. It’s not an objective thing to say.

You are entitled to believe anything you like. But don’t degrade your opponents by calling their technical arguments “belittling”. That’s not a respectful discussion technique and borders on a table argument over a few beers.

It’s ok to highlight the strengths and weaknesses of platforms (so long as it is done so constructively and fairly - and this applies to non Elixir languages and frameworks too) :smiley:

Phoenix has more to offer than just scalability though - LiveView for one :003: other things include it not having to be your application, just a component of it, which lets you build your app to suit your needs (check out PragDave’s course for more on this). I’m not saying Phoenix can’t be improved or extended to make it even more appealing (it can) just that there are enough compelling reasons to use it today (and, as we know, many people do).

With regards to learning resources, Elixir is incredibly lucky to have so many - check out our #learning-resources:books section. I don’t think there is any language that is of similar age that has so many.