Just a quick comparison, since I'm working on learning Rails at the moment...

With the proposed changes to models and views, starting a Django
project and adding an application creates this structure:

project/
    apps/
        appname/
            models.py
            views.py
    settings.py
    urls.py

Somewhere in there, you will probably eventually add a "templates"
directory as well. This is, in a nutshell, the structure of a Django
application. At the very beginning, you do have to create a database
and let Django know about it, as well as run 'init', update
INSTALLED_APPS and install your application.

By comparison, with Rails (after 'rails appname' and generating a
controller) you get:

appname/
    app/
        controllers/
            controllername
        helpers/
            controllername_helper.rb
        views/
    components/
    config/
    db/
    doc/
    lib/
    log/
    public/
    script/
    test/
        fixtures/
        functional/
            controllername_controller_test.rb
        mocks/
        unit/
        test_helper.rb
    vendor/

And this is only the 'skeleton' on which the application is hung. You
still have to create a database, and provide database settings (three
sets of database settings, and specified in YAML instead of Ruby!),
run 'script/generate controller' for each and every controller you
want to have... there's plenty of complexity here, too, and arguably
more complexity than in Django.

Which leads me to two conclusions:

1. Django's doing really really well on the simplicity front, to be
able to provide such a simple structure and so few actual files a
developer has to edit, while still offering such power and
flexibility.

2. If this sort of complexity were truly a barrier to developer
adoption, Rails would be dead in the water ;)

So, getting back to the point David was making, and expanding on it a
bit, I think these are the things that are currently holding back
Django adoption:

1. Django is still "new" in the community's mind, having been
available publicly for only a few months.
2. Django doesn't have one of those nifty "useful application in
twenty minutes" tutorials/screencasts. Again, I'm partial to a weblog
as the sample app because it's stupidly easy to do in Django and shows
off a lot of the nice built-in stuff, and having something visual that
people can watch would go a long way toward communicating how simple
and effective Django really is.
3. Django hasn't done much in terms of marketing to the developer
community, especially as far as differentiating itself from the "yet
another MVC framework" image. The "design philosophies" document on
the Django site is a good start for explaining just what Django has to
offer to a developer, but it'd be nice to have something more
prominent, maybe even on the front page, which explains "this is how
we're different from the other frameworks".

--
"May the forces of evil become confused on the way to your house."
  -- George Carlin

Reply via email to