On Sep 21, 4:26 pm, "klaasvanschel...@gmail.com"
<klaasvanschel...@gmail.com> wrote:

> One thing that deserves extra stress is that apss should be easily
> extendable. Exactly the fact that every customer want something that
> is slightly different from the next is how we're able to provide
> value. (This is also the reason I like Django in the first place:
> making stuff "your own way" is very easy). So: if no one want exactly
> the same, extensibility is a major prerequisite for reusability.

I've used several different frameworks and languages and all of
require the developer to have a special kind of discipline if you are
going to write apps (modules, classes, beans whatever the framework
calls them :) that are 100% reusable.  The challenges are *always* the
same:

* Easily extending an app without breaking upgradeability.
* Dealing with interdependencies between apps, particularly where
upgrades and patches are concerned.
* For web apps, Dealing with graphic design issues where we want to be
able to customize, but we don't want to lose compatibility with future
versions.
* Presenting back end screens.

For me, Django has been a remarkable improvement from php and Python
based tools I've used in the past primarily because Django isn't a
content manager that is being devolved from its original form to
create a new application and Django isn't a framework that forces a
strict way of doing things on you (see cake and Smarty from the PHP
world).

If anything loose coupling is what makes all of this so difficult -
and so easy.  Django begs you to write lots of simple apps and tie
them together - the question is how to tie them?  In my case I've
found that django.contrib.auth.user is a great tool for simplifying
things, and if you d things right, you can leverage Django's automatic
two way relationships to avoid using lots and lots of decorators to
control access.  I'm sure there are other ways to do things, and
probably some that might be better (most of what I've been working on
is very transaction centric, so who has access to what transaction
data is the question, not who has access to what view).

Another item that is particularly challenging is that Django doesn't
do hooks the way that some php based systems do. Want to extend
something? Hook it.  It's super easy for the developer, and can
protect upgradability if the programmer maintaining the function you
are hooking cares about backwards compatibility and doesn't go
renaming everything.  On second thought, I hate hooks :)

-- Mike

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to