Hello,
Sorry Adam, I'm going to argue for the opposite position on both questions ;-)
I don't think it's a good idea for add urls.py to startapp for three reasons:
a. Even though Django's built-in boilerplates (startprojet and startapp) are fairly minimal, I've seen many projets with the dummy models, admin or tests module committed in a bunch of apps, creating noise. More files will make that problem worse. (I'll admit I'm not a huge fan of boilerplates in general.)
b. Some developers like giving each app its own URL space. Others prefer keeping all URLs in a central location. Small projects can stick with the simplest thing that works and a central URLconf does the job up to a few dozen routes. Large projects, by the time they become large, have had the time to understand the tradeoffs and figure out what structure works best for them. I think startapp is most useful to people with little Django experience and splitting urls.py is a premature optimization for them.
c. Unlike admin.py which is autodiscovered, urls.py won't do anything until it's referenced from the main URLconf. It would be misleading to add a module that doesn't work. I think the potential for confusion may outweigh the usefulness.
Regarding the target directory of startproject, I'm in favor of the proposal. Here's the background:
The default behavior keeps biting me, even though I no longer qualify myself as a Django newbie, and I'm not the only one who finds it surprising. Unix commands operate in the current directory unless told otherwise: example: `ls` vs. `ls path/to/directory`.
Certainly files can be moved around after the fact — I do it every time — but this doesn't excuse the counter-intuitive API. I don't have the energy to argue for breaking backwards-compatibility here. But I'm strongly in favour of acknowledging this bug in the documentation (I haven't checked what it looks like currently).
Best regards,