Treating django.models.core and django.models.auth as special cases is kind of confusing. They should be regular apps, but we don't want to have to add 2 extra steps (installing the 2 apps) to get a django project up and running. Here's a few ideas for fixing the problems.
Create 2 new apps, django.contrib.core and django.contrib.auth. Move the models from django.models.core and django.models.auth into these new apps. Change the settings.py template to include core, auth, and admin in INSTALLED_APPS. Change django-admin.py init. It should install core, auth, and admin. Add a django-admin.py init-minimal command. It will just initialize the django tables, not install any apps. People who want the minimal setup can just delete the apps from INSTALLED_APPS. They're going to edit the file anyhow. We might want to add one more django-admin.py command or flag to install just core and auth, but I can't think of what to call it. I don't want to go too far here though, we don't want the number of django-admin.py commands to explode arbitrarily. Subproposal: Dependencies Add pre and post install hooks (or possibly signals). An app's install hooks can check to see if all dependencies are installed already, and generate nice error messages if they are not (or maybe even try to install the dependency automatically). Some convenience functions should probably be added as well to make the basic case pretty painless. This has the added benefit of allowing things like the undocumented loading of files in your app's 'sql' directory to be added to an app without having to change django. All of this should be done on the magic-removal branch since a lot of things are being broken there anyhow. Comments? Joseph
