Sold.  +1

Chris

On Thu, Dec 16, 2010 at 11:57 PM, Mark Ramm <mark.mchristen...@gmail.com>wrote:

> So, I will confess to being the one who asked for this change, and
> while I'm definitely open to other options, I think resource is a good
> term for items in the graph.  The graph itself I'm not sure what to
> call, but I think model is confusing because it is too easy to confuse
> with a "domain model" or ORM model.
>
> The overloading problem should be taken seriously because most folks
> coming to Pyramid from other python web frameworks, including
> TurboGears, Pylons, Django, and most of the "newish" frameworks will
> have very different ideas of how the "model" works and will
> immediately get confused.  And that's a terrible way to attract new
> users ;)
>
> But it's worse than just overloading -- I think "model" is confusing,
> as is "context" specifically because those terms aren't  descriptive
> of what's happening.
>
> The main reason behind me asking Chris about this is that I can
> imagine writing a simple explanation of the "traversal" model which
> makes sense to a variety of TG, Zope, and even Django users.
>
> It would go something like this:
>
> Pyramid dispatch is based on a two phase system.
>
> The first phase is called Resource Location, and in it we use the URL
> (Universal Resource Locator) to find a resource.  This is done by
> taking items from the path, and looking them up in a set of nested
> dictionaries called the ResourceTree.  You can think of this as
> looking up files and directories in a file system.   You just walk
> down the path elements until you get a file.  That becomes the
> "resource" that we then publish.
>
> Which, naturally brings us to the second phase which we call "Resource
> Publication" uses additional information about the request (request
> method, etc) and the resource to lookup a view callable, and call it,
> passing in the resource we just found.
>
> There are two big advantages to this:
>
> 1) Marketing wise, REST proponents would feel like this framework is a
> natural fit for them
> 2) Reduced learning curve, since folks already know what looking up
> files in a filesystem is and how that maps to URL's.
>
> There are down sides, which chris and many of you have raised, but I
> think we have to do something, because the current terminology is just
> a bit too arcane.
>
> --Mark Ramm
>
> On Thu, Dec 16, 2010 at 9:05 PM, Chris McDonough <chr...@plope.com> wrote:
> > While it seems people generally agree that some change is required here,
> > it also seems there are a good number of people who don't like
> > "resource".  Here are the arguments against it:
> >
> > - we're just switching one overloaded term ("model") for another
> >  ("resource").  Zope people tend to think of static files when they
> >  think of "resource", Pylons folks already have confusion about
> >  "resource" due to map.resource and other usages.
> >
> > - Only the entire url represents a resource. Because
> >  http://example.com/foo/bar  is a valid resource does not mean that
> >  http://example.com/foo is.  Implying each segment is a resource would
> >  be confusing.
> >
> > Alternate suggestions:
> >
> > - "traversal model"
> >
> > - "node"
> >
> > - "atom"
> >
> > - "entity"
> >
> > - "location"
> >
> > - Some derivation of "sitemap"
> >
> > OTOH, none of the alternatives really seem all that attractive to me.
> >
> > The ones that have practical issues:
> >
> > - "traversal model" is awful hard to put into APIs.
> >
> > - "location".. this one is subtle.. traversal nodes
> >  don't actually need to be "locatable" for traversal,
> >  just for the APIs that construct paths and URLs from
> >  them like model_url and model_path (IOW, the concept
> >  of "location" only matters on the way "up" the graph
> >  from a deep node, not downwards during traversal..
> >  neither __name__ nor __parent__ is used during traversal
> >  itself).
> >
> > The ones I don't like because they're meaningless:
> >
> > - "atom"
> >
> > - "entity"
> >
> > - "node"
> >
> > The meaningless ones above aren't disqualified because they're
> > meaningless, though.  I would just rather have something with some sort
> > of meaning.
> >
> > This is why I'd actually still much prefer "resource" despite the chorus
> > of objections.  Here's a list of objections and responses.
> >
> > Objection
> > ----------
> >
> > - Only the entire url represents a resource. Because
> >  http://example.com/foo/bar  is a valid resource does not mean that
> >  http://example.com/foo is.  Implying each segment is a resource would
> >  be confusing.
> >
> > Response
> > --------
> >
> > I'm not sure this is true.  Yes, a particular URL will identify a
> > representation of a particular resource.  But if you use traversal, each
> > of the nodes in the graph is a potential "resource" and can be accessed
> > potentially via some URL.  The graph node exists to be traversed via the
> > path_info portion of a URL and, if your application uses traversal,
> > because of the way traversal works, the fact it exists means it indeed
> > will "have" a URL.  Whether that URL returns some meaningful
> > representation or not doesn't really seem to be an issue.  It doesn't
> > really seem to be that far away from some more common webby definition
> > of "resource" (I'm not even sure Roy Fielding would have a problem with
> > it ;-) ).
> >
> > Please tell me how this is wrong.
> >
> > Objection
> > ---------
> >
> > We're just switching one overloaded term ("model") for another
> > ("resource").  Zope people tend to think of static files when they think
> > of "resource", Pylons folks already have confusion about "resource" due
> > to map.resource and other usages.
> >
> > Response
> > --------
> >
> > I'm apt to call this one a wash.  Zope people can probably get over it.
> > Existing BFG/Pyramid users who also conflate "resource" with "static
> > file" can also probably get over it.  I can't speak for Pylons or other
> > non-Zope folks, but other than the issues Mike raised (map.resource and
> > other Pylonsish usages of resource), it didn't seem like many non-Zopers
> > had an issue with it.  And since Pyramid isn't really Pylons, and
> > because we're likely to implement "rest controllers" differently, I
> > think we can eliminate at least one competing Pylons definition there..
> >
> > BTW, Restish (http://ish.io/embedded/restish/) also uses "resource" to
> > define nodes in its graph, although its graph is composed of cooperating
> > functions:
> > http://ish.io/embedded/restish/resources.html#so-what-is-a-resource
> >
> > Fire away,
> >
> > - C
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> "pylons-devel" group.
> > To post to this group, send email to pylons-de...@googlegroups.com.
> > To unsubscribe from this group, send email to
> pylons-devel+unsubscr...@googlegroups.com<pylons-devel%2bunsubscr...@googlegroups.com>
> .
> > For more options, visit this group at
> http://groups.google.com/group/pylons-devel?hl=en.
> >
> >
>
>
>
> --
> Mark Ramm-Christensen
> email: mark at compoundthinking dot com
> blog: www.compoundthinking.com/blog
>
> --
> You received this message because you are subscribed to the Google Groups
> "pylons-devel" group.
> To post to this group, send email to pylons-de...@googlegroups.com.
> To unsubscribe from this group, send email to
> pylons-devel+unsubscr...@googlegroups.com<pylons-devel%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/pylons-devel?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-devel" group.
To post to this group, send email to pylons-de...@googlegroups.com.
To unsubscribe from this group, send email to 
pylons-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/pylons-devel?hl=en.

Reply via email to