[Grok-dev] Re: on the name "Grok"

Martijn Faassen faassen at startifact.com
Tue Apr 29 05:43:17 EDT 2008

Philipp von Weitershausen wrote:
>> Do you really prefer people write this?
>> class MyAdapter(plone.easyapi.Adapter):
>>     plone.easyapi.context(Adapted)
>>     plone.easyapi.provides(IFoo)
> Sure. Or they can simply use it from grokcore.component. The point of 
> "plone.easyapi" surely isn't to provide solely adapters and utilities 
> but primarily other types of components.

Yes, the equivalents of the components in 'grok'.

>> This sounds terrible to me. Suddenly people have to mentally translate 
>> all the examples that already exist for Grok.
> That's the last of my worries, really.

Well, it either needs a somewhat silly line on top examples ("in Zope 2, 
instead import 'import plone.easyapi' instead of 'import grok'), or a 
duplication of examples people can't see very quickly are related.

>> Do you really think people won't be writing: 'import plone.easyapi as 
>> grok' anyway? That's certainly what I'd be very much tempted to write 
>> if I wrote any examples for Zope 2!
> Sure, but you're not writing a Grok application. You're writing some 
> extensions to Zope 2 (if you were using five.grok). If you were using 
> plone.grok, you'd actually be writing completely new components that 
> Grok didn't have, so here (and it seems we agree on this), using the 
> 'grok' name makes even less sense.

I don't think plone.grok is part of this debate; I see this as an 
entirely separate problem. I agree that plone.grok adds new components 
that Grok doesn't have, and that's why its name is out of the question. 
'five.grok' if it aims to replicate the Grok experience I think is named 
just fine.

>> Why can't Zope 2 have a package 'five.grok' that aims to provide the 
>> same API as Grok does?
> Sure, Zope 2 could have it. Maybe we're not clear on what the goal of 
> five.grok is. I certainly don't see why it needs to replicate Grok all 
> over. If you start from scratch, you could just as well use Grok. If you 
> don't, then you're extending a legacy application. But then you don't 
> need (and possibly can't use) all of Grok.

I think a very significant chunk of what's in Grok is directly relevant 
to Zope 2. What in Grok *doesn't* below in a five.grok? Models, I can 
see - even though that might eventually change. I can also see that 
making 'grok.Indexes' work is a bit of work (though there is intid 
support for Zope 2 now, so it shouldn't be that crazy).

> I'd say in 99% of the cases 
> you just want views and perhaps viewlets.
>> If we are careful to refer to this as 'five.grok' or 'Grok on Zope 2' 
>> I think we can tolerate the minimum confusion this should cause. 
>> Should we be that much afraid of Zope 2?
> I'm not afraidof Zope 2, I'm afraid we have different understandings of 
> the word "Grok". 'Grok on Zope 2' is mostly about using a small subset 
> of Grok's technology. 

I don't see this as a small subset of the developer's experience.

> But Grok is so much more than just the technology. 
> It's also about the smooth ride (convention over configuration, KGS-like 
> version pinning, buildout scaffolding, etc.). Sure, we can replicate all 
> that for Zope 2, but what's the point? I think "Grok on Zope 2" has much 
> less ambition than our Grok (on Zope 3), and that's ok because like Five 
> itself, it's just meant to bring legacy apps up to speed.

Yes, it has less ambition, but I'd say it goes for the same APIs.

>> What if we ever get so far that "import grok" works on Zope 2 without 
>> modifications? Do we tell people that 'plone.easyapi' is now Grok 
>> after all?
> If making "import grok" work on Zope 2 is your goal, then I think we 
> have very different goals.

It's not my goal, as I'm not a five.grok developer. But if I were a 
five.grok developer, that'd be the ultimate goal I'd be aiming for. I 
wouldn't expect to reach it for a long while, but I'd want everything 
else to work as easily as 'grokcore.component'. Probably requires 
changes in Zope 2.

>> I think you make a good point in that we should be clear that "Grok" 
>> is what we have created and develop here. If you are going to make a 
>> Grok for Zope 2, that shouldn't be referred to as "Grok" unless the 
>> context is unambiguous, but as "Five Grok" or something like that.
> Or, as Brandon suggested, using the *verb* rather than the noun, e.g. 
> "Grokked Five" or "Grokking Zope 2" or whatever.

Well, I don't think we're really talking about the verb here. We're 
talking about the API and developer's experience, base classes and 
grokkers that have the equivalent effect in the Zope 2 context.

What's called "plone.grok" is about grokking Plone components, and I 
think the word 'grok' (or variations such as the verb) should simply not 
be used in the package name there, though "grokking" is of course a nice 
descriptive word of the process. I hope that can be folded into a bunch 
of base classes that are as much a part of their modules as the base 
classes are now. (neither do I think 'martian' should appear there, by 
the way).



More information about the Grok-dev mailing list