On Jan 21, 2010, at 9:58 AM, Luke Plant wrote:

> On Tuesday 19 January 2010 21:26:17 Jacob Kaplan-Moss wrote:
> 
>> So there we are. This is very much a brain dump, and I don't really
>> expect any concrete action to result from it. However, I found some
>> really interesting stuff there, and I thought I'd share.
> 
> Thanks for your clarification elsewhere in this thread.
> 
> One question I have (for Jacob and anyone else with experience):
> 
> I would have guessed that a big issue with Django from an enterprise 
> perspective is its use of 'singletons'. Though we don't use that 
> terminology, we have dozens of them in the code - every other setting 
> we have implies the existence of a singleton, since the setting can 
> have only one value.  For example, EMAIL_BACKEND means that we have 
> one email component singleton which is used everywhere.  If you wanted 
> one set of views to use a different email backend, you are out of 
> luck.
> 
> The 'admin' app was the first major component to allow multiple 
> instances, but there are various other apps which might need this 
> change in theory.
> 
> How much is this an issue in practice?  

Speaking as a web developer using Django in a *very* enterprisey corporation, I 
will say this singleton issue has been a problem for me.  As a self-inflicted 
example, I wrote an LDAP backend that looks up the necessary settings from 
settings.py.  I need to rewrite it to store the settings in the db, because I 
need to be able to query multiple LDAP sources.  I run into similar issues with 
lots of different apps.  So yes, singletons are an issue for me.

The difference between ops settings vs. app settings has also been a problem.  
The lack of established, vetted best practices (for deployment, layout, 
everything Russ mentioned) also has bitten me regularly.  In part because I 
wind up spending a lot of time doing the research to figure out what I need to 
do, in part because the state of the art moves forward at a rapid pace.  But, 
to put it in perspective, I'm the only person who even *can* deploy a Django 
app at my place of work.  Which is not great, but I'm also a Linux sys-admin, 
so it is at least in my job description.  But none of my fellow SAs have any 
clue what to do to get stuff working on one of our corporate RHEL 5 boxen, and 
no inclination to learn.

Anyway, I'm glad to see this discussion taking place.  Django indeed has a 
sweet spot, and it isn't really for enterprise installations -- though it is 
*very* good in that sweet spot.  There are places where the early design 
decisions to favor convention over configuration impose a lack of flexibility 
in favor of simplicity.  A definite trade-off.  It makes it harder to use in 
places where flexibility and integration are required.

Here's a big question, though:  given that satisfying the enterprise crowd, of 
which I am an occasional part, will require additional "stuff" that may bring 
along with it additional complexity, making it potentially harder to get 
started for newbies, is that a direction that the project should head?  Is it 
worth satisfying the enterprise crowd to increase adoption, at the cost of 
turning into the kind of configuration hell that J2EE servers exemplify?  Or, 
more positively, is it possible to add the required enterprisey bits while 
still maintaining a certain level of simplicity?  Note that Django is already 
headed towards greater complexity (multi-db, email backends), due to 
requirements from the current community.

My two cents, appropriately adjusted for the current economic situation.

---Peter Herndon 

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.


Reply via email to