Django vs Phoenix

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

@dimitarvp

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.

3 Likes

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.

3 Likes

Building things quickly is overrated

7 Likes

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.

4 Likes

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.

Yes I agree I use Phoenix myself, it’s just not as mature as Python or Django, like it or not. But like I said Phoenix got potential, maybe this year.

It is and it isn’t :lol:

Erlang is one of the most mature platforms out there and Elixir is built upon that :003:

But yes, Phoenix is not as old as Python (sometimes that isn’t a bad thing…) and there are pros and cons to everything. For some Python or Rails will make sense, for others, Phoenix - it’s all good, we each have to determine what fits our needs best :023:

4 Likes

What do you mean when you say this? Can you give concrete examples?

1 Like

I looked and I’m not seeing anything specific that Phoenix needs to do to “mature”.

1 Like

This is what I found and you’ll notice, I hope, that it’s incredibly non-specific.

I think it’s very specific. Which part you wanted to expand?

I also wish the community was larger.

One of the things I liked the most about Rails is that you can ask a question on Stack Overflow and get a response in ~15 minutes or less, and it will either contain the answer or it will link to another question with an accepted answer. I haven’t used Django but it’s probably similar.

I’m also very productive in Phoenix, but if I do get stuck on something I end up spending hours, if not days on it, because there simply aren’t enough people and resources to help. Maybe this is why the language attracts only experienced developers…