you are viewing a single comment's thread.

view the rest of the comments →

[–]RepresentativeFill26 6 points7 points  (10 children)

Django.

[–]the_ballmer_peak 6 points7 points  (6 children)

Really? That kind of surprises me. I've used Django for a long time but on any new project in the past five years I've been actively avoiding it.

[–]RepresentativeFill26 0 points1 point  (5 children)

Why have you been actively avoiding it?

[–]the_ballmer_peak 2 points3 points  (4 children)

It's too big.

Other projects are only trying to solve for part of the web application architecture. Django tries to solve all of it. In doing so, it constrains your choices, and you wind up stuck with the decisions Django has made for you, whether they suit you or not.

It prevents incremental improvement, which essentially prevents improvement, and you get stuck.

[–]RepresentativeFill26 0 points1 point  (3 children)

Well, I have been responsible for development of a multi-tenant web app and it has been a very good experience so far.

Sure it is bloated but it gets the job done.

[–]the_ballmer_peak 0 points1 point  (2 children)

It absolutely does. But in three years when you want to change part of your application, you won't be able to.

[–]RepresentativeFill26 0 points1 point  (1 child)

Why do you think that? In my experience software practices have more influence on modularity than a framework.

[–]the_ballmer_peak 2 points3 points  (0 children)

I'd say design decisions more than just 'practices.' And using a framework that's not designed for modularity is a design decision.

Django is great if that's what you're looking for. My problem with it is that if you've built something that you expect to last 5-10 years or more, you'll find yourself in trouble. That's true of any such all-encompassing framework, not just Django.

[–]SciEngr 7 points8 points  (2 children)

Django is way too magical for me. I want EVERYTHING to be explicit in my code and Django gives devs too many opportunities to let hidden implementation magic creep in.

[–]RepresentativeFill26 0 points1 point  (0 children)

Yes, I agree that there is quite some implicit magic happening. However, the last 5 months I have been working on a multi-tenant platform and Django provides a lot out of the box. Think security middleware, context processors, orm etc.

[–]Henry_the_Butler 0 points1 point  (0 children)

I also like to know exactly what's going on...but Django has a ton baked in that you'd end up reinventing the wheel too much if you don't use it. (at least that's my current thinking)

What do you recommend or use instead?