On 11/20/05, Simon Willison <[EMAIL PROTECTED]> wrote: > I just saw http://code.djangoproject.com/ticket/853 , which advocates > simplifying Django's first-time user experience as much as possible. > I think this is an admirable goal, and one that would dramatically > improve the number of people using the framework. First impressions > count!
I like the idea of simplification, and I think the proposal of doing models and views as files instead of packages is a good step in that direction But... > I particularly like this example code for a Django app contained in a > single file: I don't like this at all, mostly because I don't think it can scale; the "single-file app" organization might work well for very simple applications, especially if all they use is generic views, but anything much more complex (e.g., an application with several custom views, models with several extra functions and attributes each, custom templatetags, etc.) could quickly become unmanageable. Although, from looking at that and your comment in the ticket, it seems models would be defined elsewhere? I'm not sure that helps things any, though. And I'm not at all convinced that there's really a significant barrier to adoption; having a multi-step setup (which, last time I checked, involved not only creating the database, but also manually creating tables for your models) certainly doesn't seem to be hurting Rails any ;) But inevitably, something as flexible and powerful as Django is going to have a learning curve. I think it's a tiny bit steeper right now than it needs to be, and some of the recently-proposed modifications will help out with that a bit, but in the long run I don't think it's a bad thing to have that learning curve. If people don't have to learn the ins and outs of the framework when they start out with it, or if they'd be turned off Django by having to learn that up-front, then odds are that 1) they wouldn't have bothered to do so later on, and 2) they wouldn't really get much out of Django. And beyond that, I think David's points are good ones -- the crucial limiting factor for Django adoption right now, I think, isn't simplicity; Django practically bends over backwards to provide easy ways to do powerful things without writing much code. Rather, the limit is marketing. A screencast of a non-trivial application setup would go a long way toward helping that, as would greater publicity of Django-powered sites in the wild and write-ups of how some of them work. For example, consider the djangoproject.com site; all the code is there in the repository to be browsed, but most people new to Django won't even realize it's there. Which is a shame, because it's really a great example of how to harness Django to achieve a useful and non-trivial task. Poke around in the source and you'll see a number of Django's strengths being put to work -- generic views, pluggable applications, custom templatetags, etc. -- with very little code. Something similar (say, a weblog application) would make an awfully good candidate for a Django screencast, I think, and would provide the "hook" to lure new users in. -- "May the forces of evil become confused on the way to your house." -- George Carlin