[Grok-dev] Re: final sprint report - please review my branch!

Martijn Faassen faassen at startifact.com
Tue Apr 8 10:46:57 EDT 2008


Philipp von Weitershausen wrote:
[snip]
> I'm not really worried about that. I'm worried about making people 
> subclass something at all. It'll hinder the reusability of the 
> grokcore.component package.
> 
> For Grok-the-webframework, it's absolutely fine making people subclass a 
> specific class to gain functionality (grok.Model, grok.View, etc.), but 
> the supposedly-reusable packages shouldn't have to do that.

It's a mixin that doesn't actually do anything though, and it's dead 
simple. Since grokcore.component is about subclassing anyway (Adapter, 
GlobalUtility, MultiAdapter), I'd say this is perfectly acceptable.

If we take another approach, it'll have to compete in briefness with:

class MyObject(Context):
    pass

class MyAdapter(Adapter):
    pass

If we're concerned about subclassing, we can eventually expand Martian 
with the facility to recognize classes by interface as well:

class MyClass(object):
    grok.implements(IGrokContext)

I think this could then even be used to implement the base classes we 
have now (which I think are actually more readable):

class Context(object):
    grok.implements(IGrokContext)

I think such a thing is neat but of limited benefit, but it's something 
to thin about. Until we have such a thing, let's just stick with Context.

>> Are you thinking of, instead, introducing a directive with which
>> application stacks would mark up their classes as being eligible to be
>> automatically detected as adapter contexts?  Maybe grok.autodetect()
>> or something?
> 
> Yes, something like that. We won't be able to grok them because we can't 
> grok before we grok ;). Rather, I have some very simple registration in 
> mind that'll be part of the *meta* configuration (meta.zcml). I need to 
> write down a story for this first, though.

Please. I think you're going to have a hard time engineering something 
better than the elegant solution we already have. Going for a 
registration approach sounds way more complicated and I don't see any 
benefits so far. It also presupposes ZCML being used, which 
grokcore.component shouldn't have to require from a programmer who wants 
to use it.

Regards,

Martijn



More information about the Grok-dev mailing list