[Gobble-dev] gobble is ...

Hannes Wallnoefer hannes at helma.at
Wed Jan 28 13:04:43 CET 2004


Andreas Bolka wrote:

>three observational approaches:
>
>1) ... a web application comprised of
>- a wiki-style "page"-concept and gong-style linking (*pagename*)
>- hiearchies: every page is also potentially the parent of n other
>  pages
>- forms: every page has an associated type which determines it's
>  how it will be rendered for display and for editing.
>- granular (page-level) access control
>  
>

There's even sub-page-level per-property access control. You can use it 
to have some form properties only edited by specially authorized persons.

>2) ... an extension of helma concepts for web application
>_development_ onto an web application itself. this comes to mind, if
>we consider forms to be "classes" or "prototypes". pages are objects
>(instances) that can have multiple child-pages (helma-like). 
>

Yep, that's right.

>obviously
>not (yet?) present in gobble is a way to associate actions with
>forms/objects.
>
>  
>
No, you can't currently add extra actions to forms. But I'm not even 
sure that would be needed.

On the one hand, you can still make extended Item prototypes in the 
classic Helma style if you need it. Helma-style sub-prototypes and 
Gobble forms coexist and complement each other in Gobble, in fact both 
User and Form are "classical" Helma extended prototypes, because the 
required functionality would have been too heavy for the Form approach.

On the other hand, the functionality of an item's main page will be very 
flexible using flexible macros (that don't yet exist ;-). It should be 
easy to query child Items according to Form/properties and display using 
any combination of custom skins.

>under this aspect, gobble stands in an interesting light compared to
>e.g. zope or microsoft access.
>
>
>3) taking thought 2) even further, one could state that "gobble is
>naked objects for the web"
>  
>

Although this sounds slightly like an insult, I guess it may be true ;-)

>ps: excuse me if this sounds weird :) those are just some thoughts
>floating around in my brain for a while. also note that i do not claim
>those approaches to be anywhere near the "truth" or even near hannes'
>intentions of what gobble ought to be. further, do not hesitate to
>correct or add to the above. finally, i have not had a look at the
>source to gobble (yet) ...
>  
>

No worry, that's what this list is for.

Another aspect of Gobble that seems important to me is the goal to limit 
interfaces through which objects interact. Two pages which further 
explain this goal:

http://internet.conveyor.com/RESTwiki/moin.cgi/FrontPage   (RESTWiki)
http://www.namesys.com/v4/v4.html#why_strictly    (ReiserFS)

Helma always had some of this by making everything a HopObject, with its 
simple add(), get() and remove() semantics. However, that implementation 
had two shortcomings:

    1) Although it tried, it didn't really work the same across embedded 
and relational db. Before Gobble (or the bugfixes in Helma that it 
brought about ;-) you had to write extra code for embedded or relational 
db. Now with gobble, you just drop in a Zip file with some extended 
type.properties and you switch from embedded db to relational, same 
code, same features.

    2) Although the HopObject interface is shared by all persistent 
objects, applications usually work with special prototypes that need 
special kind of handling. Thus, you need to build an ImageManager to 
manage Image objects, a SkinManager to manage Skins, a StoryManager to 
manage Stories and so on. And you always start from zero (the more or 
less blank HopObject), reimplementing the same kind of functionality 
again and again. Gobble solves this by making everything an Item, which 
knows how to manage itself, so every extension or new feature starts 
much higher up, and everythign turns out simpler and more flexible.

In addition to the basic edit/list/new/manage/remove functionality in 
Item I just implemented a general feature to create typed directed links 
between any two Items, which can be used by application code through a 
simple API. This will be pretty cool, more on it later today when I 
check it in.

Well, I hope this makes sens, at least some sense to some of you ;-)
hannes




More information about the Gobble-dev mailing list