[Grok-dev] Re: Admin UI name change suggestion

Philipp von Weitershausen philipp at weitershausen.de
Fri Oct 5 05:31:19 EDT 2007


Jan-Wijbrand Kolman wrote:
> * So far I did not have the experience of finding people confused having 
> to place an grok.Application inside the application server "root". 
> Philipp says he *does* have this experience; can you explain why you 
> think these people were confused?

They were just thrown off by the fact that you have to instantiate this 
beast at all. And give it a name. And that it's not simply the root.

> * I think it should be *possible* in a very easy way to configure your 
> grok.Application to "take over the zope root", no doubt about that, but 
> there's valid use cases to have a zope root that contains multiple 
> applications. The argument that grok.Applications can be nested 
> basically says that the "root" grok.Application (in whatever way it is 
> determined what grok.Application subclass this will be) is a zope root 
> again - well, we have that infrastructure already...

Yup. I actually envision something that you have in your Paste WSGI 
application factory:

   def application_factory(global_conf, ...):
       # load zope.conf, site.zcml, etc.
       # open database

       install_root_object(factory=todolist.app.TodoList)

       return zope.app.wsgi.PublisherWSGIApplication(...)


Basically, during Zope starup, it will install the TodoList application 
into the root (unless it's already installed). You can easily change 
this, e.g.:

       install_root_object(factory=zope.app.folder.rootFolder)

to get the current behaviour back.

> * It is not clear to me how you would delete the grok.Application and 
> re-add it again during development. It is something you do all the 
> time., esp. in the beginning of the development cycle. This also touches 
> the issue of intergrating your grok.Application with other Zope-3 based 
> software.

We could simply add a view for grok.Applications, e.g. /recreate, that 
would delete the object and create a new one. *That* I think is easily 
solved.

> * The idea of using port numbers to point to individual applications 
> sounds kinda elegant. However, this means that you have to have a 
> frontend server to make it all get served on port 80 to the outside 
> world. You can argue that for production, you will have a frontend 
> server anyway. Well yes, I fully agree, but we have infrastructure 
> already to translate URLs to applications, it is the virtual hosting 
> support.

Right. If you want different ports for different apps, then what's the 
point in using one instance/sandbox? You might just as well bring 
several separate Zopes.


> In other words, I personally think the status quo gives us almost the 
> full set of flexibility we want already. And by adding the *option* to 
> have a grok.Applcation take over the "root" we will complete it.

I think the option of taking over the root should be the default. It's 
the most sensible one. Grok is all about making choices for you. Keeping 
it simple for starters.

I don't think people who get started immediately want the ability to 
have multiple apps in their instance. They don't see the point yet (and 
they don't see the point of the admin UI yet for this reason). They just 
want to get started, without understanding this yet.

The multiple apps use case is for us experts. I think with what I've 
outlined above (change the root object factory in the WSGI app factory), 
we experts can easily achieve what we need: flexibility.


-- 
http://worldcookery.com -- Professional Zope documentation and training


More information about the Grok-dev mailing list