3 things I would like to see with regards shared apps:
1. A convention for sharing applications. This isn't too hard because
django is already very well organized. The only outstanding question I
have is dealing with the importing of application modules that are not
in the models. For instance, if you have a myproject.apps.util module
you don't want to import it using the myproject module name since it
would couple your app to your project.
Adrian has said that they have a module that contains all of their
shared apps that is outside of their django project directories. This
is good because it allows multiple projects to use the same apps
without having multiple copies. This is bad because those apps are tied
to their top-level module ("ellison" is the name of their project).
One option would be to come up with an agreed upon project name that
all "shared" applications would go under. For instance, 'django_shared'
could be the name of the global "parent" project that we all develop
our apps under (django_shared is too long for my preference, but you
get the idea).
The other option would be to always put our project directories in the
path. This means apps modules can be referred to via
"apps.modulename.util" when doing imports. The problem with this is
that apps would now need to be copied to multiple projects or that
projects would need to refer to each other in the settings files in
order to share. I am not crazy about either of these side-effects.
2. A central repository for all the projects. It would be cool if a
simple shell script could be added to django/bin that automagically
downloads and updates django apps by their name. To start off, we could
just use subversion and the script would simply have the trunk name
predefined and it would leverage the existing SVN client commands. The
script could be replaced in the future if more functionality is desired
(searching, for instance).
3. A tutorial describing the agreed upon convention.
thanks for reading...
ian