On Fri, 2007-09-07 at 12:48 -0400, Joshua 'jag' Ginsberg wrote:
[...]
> First, every section of Django becomes customizeable without chopping
> up the source tree. We already permit drop-in authentication backends,
> database backends, and caching backends; there's been talk of drop-in
> session backends and certainly others. This would permit much greater
> flexibility in allowing more customized installs. For example, I wrote
> a Trac Component to recognize Django sessions instead of using its own
> authentication sources in just 50 lines without touching the Trac
> source tree. That's pretty nice. 
> 
> Second, Django applications are proliferating. We as a community need
> to look long term about the environment this is going to create. We
> already know there are enough blog applications to overflow MAXINT.
> There are probably half as many blog rolls and contact information
> databases and so forth. If this continues unabated, there will be
> tremendous integration problems for administrators who want to reuse
> other developers' apps unless the community creates a consensus
> blessing many more apps as part of django.contrib tools which doesn't
> sound terribly likely. Alternatively, if django were to bless certain
> interface definitions for applications, leaving each developer to
> select the components that best implement those interfaces, we could
> avert this balkanization. 

It's not clear what problem(s) you are actually trying to solve here in
these paragraphs, so your ideas come across as a little abstract.

Firstly, you seem to be conflating core and application, which is a
misunderstanding. django.contrib is just one directory where
applications live. It's only "special" in that it's owned by Django
itself -- i.e. it's where the maintainers might put any apps we ship
with Django. But that's the complete limit of it's specialness. Apps are
just importable Python packages. Stemming the proliferation of
applications sounds like an anti-problem: we want to encourage people to
write apps, not stop them.

Secondly, keep in mind that infinite flexibility is not necessarily a
pragmatic goal. Partly because it means you spend forever tweaking the
interfaces between sections and it actually restricts what you can do
(because any single change has enormous external implications). Django
already allows a lot of replacement of core components. ORM, templates
and URL dispatching can all be done by other means if you like. You can
use whatever web front-end you like and we have plans to fix things like
the slight WSGI incompatibilities we currently have. Besides those
things, there's not much else in core when you break it down. In most
cases, it's not even a lot of code to do these replacements. 

Contrib apps can be used or not as you like. You mention a couple of
examples where contrib apps allow some internal customisation. Could you
be more concrete about what is missing.

Remember that Django aims to provide something that is "sufficiently
good" for creating production-capable websites. As a bonus (and by
design), if you want to replace things, you can. However we're not
TurboGears where they are intentionally only building interfaces between
existing components. If somebody wants that type of changeability, then
TurboGears is probably what they want.

So maybe there is a particular thing you are trying to solve here. If
so, have another shot at explaining what it is, with real-world
examples. Which pieces aren't flexible enough? Abstract conversations
aren't particularly productive (and you'll see that they've come up here
before) because there's no path towards any sort of goal that comes out
of them. Django strives to find a reasonable between "batteries
includes" and allowing customisation. Where do you want to tweak that
balance?

Regards,
Malcolm

-- 
Everything is _not_ based on faith... take my word for it. 
http://www.pointy-stick.com/blog/


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

Reply via email to