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

Philipp von Weitershausen philipp at weitershausen.de
Tue Apr 29 02:57:32 EDT 2008

Martijn Faassen wrote:
> HI there,
> Philipp von Weitershausen wrote:
> [snip]
>> If you're reusing Grok's technology or a subset of its packages (and 
>> we encourage you to do so!), you should not call this thing Grok. Call 
>> it something else, give it an actually purposeful name (e.g. 
>> plone.easyapi or whatever).
> I think that's a terrible name,

Yup, it's terrible and it's just a (bad) example.

> and a good example of why I strongly 
> disagree with this. If you are providing a workalike API in Zope 2 
> context, by all means I think people should call this 'five.grok'. The 
> existing examples are intended to work.
> 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.

> 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.

> 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.

> 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'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. 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.

> 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.

> 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.

More information about the Grok-dev mailing list