Forum OpenACS Q&A: Re: Extensibility in OpenACS - Four Architecture Options

Conceptually speaking, you are talking about both, customization
and subclassing. While customization is used the component approach
to configure a package on anticipated spots, subclassing is oriented
towards inheriting (reusing) preexisting pieces and extend it in various places
(like "user exits", i haven't heard this term for a while). Both approaches
should allow in general instantiating the base
and exended definitions (e.g. the same system should
be usable for "spanish" apps with two familiy names as well
as for traditional western and other kinds of names).
While the configuration approach
follows favors the "black box" model, the subclassing model
requires more knowlege about the internal structure (white box)
and is used in class based inheritance in oo programming.

As the author of an OO Tcl extension (xotcl), i certainly
beieve, that such a language can help in various ways
to design and implement flexible systems (but it is not
more than a help, oo programming does not require oo
languages). But the answer is certainly not "use oo
and the problems are gone". The problem you are adressing
has to be covered on three layers, the storage layer,
the application logic layer and the presentation layer.
For flexible solutions, one requires sufficient
flexibility from all layers and the base components.
And for most composition issues, it is not stufficient
to stick pieces in an arbitrary order together (e.g. on
a from), but to provide a certain control for the
composition (the same is true for the database side).

I am writing here since you mentioned that you have
using already an implementation that stores pieces of
the code in the database. An approach with an reasonable
effort seems to take these pieces and put it into
an oo framework and to reuse it via inheritance. This
would be at least performance-wise much better and
can lead to higher flexibility, better encapsulation
and a better way to express the dependencies and
interactions.  If you are interested, have a look into
the xotcl tutorial at www.xotcl.org.

best regards
-gustaf neumann