Next in thread → Next in month →

Re: Initial discovery (was: [oslc-core] OSLC & LDP: Query Capabilities, Creation Factories & location of Dialogs)

From
Steve K Speicher <>
Date
2014-12-09T13:54:24+00:00
ID
Thread
Re: Initial discovery (was: [oslc-core] OSLC & LDP: Query Capabilities, Creation Factories & location of Dialogs)
Responses woven in...

> From: Martin P Pain <>

> To: Steve K Speicher/Raleigh/IBM@IBMUS

> Cc: "OASIS OSLC Core TC Discussion List"
<>

> Date: 12/04/2014 05:27 AM

> Subject: Initial discovery (was: [oslc-core]
OSLC & LDP: Query Capabilities,

> Creation Factories & location of Dialogs)

> 

> This email is about how implementations (or instances thereof) first

> interact with each other, concerning discovery of capabilities and
resources. 

> 

> I've split this into three sections, but read it as one continuous
train of 

> thought. I have other thoughts which I will send in separate e-mails.

> 

> 

> "One URL" configuration: 

> ------------------------ 

> 

> Story: 

> As a user configuring an integration (e.g. system administrator or
project 

> area administrator) 

> I want to configure the integration between two OSLC-enabled servers/

> applications with as few steps as possible (e.g. providing a single
easily-

> available URL, plus any security config) 

> In order to have the full integration between those two applications
with 

> minimal effort and confusion. 

> 

> At the moment (in v2) OSLC does not seem to do anything to suggest
what that

> "one URL" should be. Something pointing to a oslc:ServiceProviderCatalog

> might seem to be a good choice. However, most IBM implementations
(including

> mine) use the Jazz Root Services document [1]. I believe the main
motivation

> for this is that it is what the Jazz products require, which is probably

> because they need the OAuth information and this gives them a place
to find it. 

> 

In v2, it could be thought that the ServiceProvider
(or ServiceProviderCatalog to find the SP) is that one 1 URL.

I think of Jazz Root Services is provide additional
triples into ServiceProviderCatalog (which is just a container for SPs).
 There is an open work item that is for making it fully a compliant
SPC, it is so close.

> Steve, in your proposal, I expect this "one URL" would point
to a container,

> which can contain other containers to an arbitrary depth to model
the native

> hierarchy of the server. 

> 

Right, this is basically what v2 has.

> 

> Nesting of containers 

> --------------------- 

> 

> One benefit of the v2 structure is that clients know how many levels
of 

> nesting to expect (as maximum). If we allow an arbitrary amount of
nested 

This is not true, SPCs can include SPCs that can include
SPCs that can...there is no limit.

> containers, not only is it further to navigate to find out if there
are 

> really any resources of types of interest, but it's harder to write
a UI 

> that can deal with the possible variation. In v2 UIs can have a fixed
number

> of drop-down lists or list boxes, but for arbitrarily-nested containers,

> they would either need a tree (which isn't a simple component for
a web 

> page) or be able to support a potentially infinite number of drop-down
list 

> boxes, one for each level. 

>

I think this is where we might eventually get to.
 For example, a "Project" or "Program" or "Product"
provides a set of containers.  We don't need a notion of SPC to achieve
this.  A produce can expose a URL to use for configuration, then the
client must look for certain headers or triples.  Much like 2.0.

 

> Perhaps that problem could be worked around by providing a dialog
on the 

> root container to select the "leaf" containers - those that
contain 

> resources of types other than "container". but I don't think
we could make 

> that a MUST. 

> For headless/unattended operations, it would perhaps make sense for
them to 

> require the URL of a "leaf" container, but that means users
need to be able 

> to get hold of those URLs. 

> 

I would say that clients are look for Containers of
a certain type.  I agree, there are cases (if a server implementation
provided infinite depth and didn't provide the Container that client was
looking for) where the could never complete.

I would expect clients to have some depth or time
limit and look for a Container that met its criteria: type of resource,
dialogs supported, etc.  If we find we need to define a type for one
of those kinds of containers (like Service or SP) or just a standard predicate
oslc:end-point (or whatever)

One thing we talked about (a long time ago) was to
provide a "delegated end-point dialog", basically a selection
dialog to help configure or get "that one URL".  We could
explore this more if members would find this valuable.

> Story: 

> As a client implementor 

> I want to be able to write widely-interoperable code for the intial

> discovery step with minimal effort 

> In order to quickly get going with OSLC and have code that benefits
from the

> loose-coupling of OSLC (rather than just having coded for the one
server to 

> hand as the interoperable solution was too hard) 

> 

> Do you think we ought to have a term for these "leaf" containers?
Are they 

> in any way special? In my mind they are different from containers
that only 

> contain containers, because it seems to me that they will be the primary

> resource that clients will be looking for (at least during discovery).

> 

OSLC Resource Containers?

Though, could it not be possible to have a container
whose members are both leafs and containers?  Mind blown?  BTW,
this was possible in v2 as well.

> 

> Using URLs to web UIs in OSLC configuration 

> ------------------------------------------- 

> 

> Another problem is getting hold of that "one URL". Users
are generally only 

> aware of the web UI URLs. While it would be perfectly reasonable for
any 

> given implementation to perform content negotiation on their web UI's

> homepage's URL to provide an RDF representation of the server if an
RDF 

> media type was requested, I have come across people unwilling to do
that. 

> (e.g. it means you can't stick that URL in a browser to see what RDF
is 

> being returned [although of course there are ways around that] - which
makes

> exploration of the interface harder, which is how most people learn).

> 

These users willing to add response headers or support
the OPTIONS verb on that URL?  Just some other alternatives to sending
back RDF on a GET.

> Story: 

> As a user configuring an integration

> When asked for a URL to another OSLC implementation, I want to provide
the 

> URL to the web UI of the other implementation (as that is the URL
I know) 

> In order to set up the integration without having to search the docs
for 

> what URL to use. 

> (Extension: "I want to provide the URL for whatever entrypoint/homepage/

> dashboard I use most in the other tool") 

> 

> We could achieve this by defining a Link header that points to the
root 

> container for that server, which OSLC servers should provide on: the
home 

> page, and any other page that could reasonably be used as an entry
point. Or

> on every page, if they really want to be helpful. 

> 

We'd have to define what a root container is but yes,
we could have a URL for a place to find configuration/setup information
or other methods.

We used "oslc:details" predicate in v2 to
define such a web ui URL from oslc:ServiceProvider

> But what about getting the URL to a particular "leaf" container
(e.g. project area): 

> 

> Story: 

> As a user configuring an integration 

> When asked for a URL to a specific project within another OSLC server
(e.g. 

> in a configuration file, such as for a headless operation such as
an ant script) 

> Then I want to be able to provide the URL to the web UI for that project

> In order to set up the integration without having to search the docs
(or the

> UI) for what URL to use. 

> 

See "oslc:details" from SP from before or
conneg.

> We could achieve this by having a separate link header that points
to the 

> container for 'the current scope'. "Project" pages (or "tenant"
pages, or 

> whatever your level of modularity/scope is) would then include both
a link 

> to the root container and a link to their own container. 

> When a URL is given to an interactive process, it could perform make
an HTTP

> HEAD request on it. If it only has a root container link, it uses
that. If 

> it has both a root container link and a 'current scope' container,
it asks 

> the user which one to use. if it has neither, it performs a GET to
see if 

> the body contains a container (although that should have been visible
from 

> the HEAD too) or to see if it is a V2 catalog, service provider or
service 

> (if v2 compatible). 

> 

I guess I'm not following what the problem is here
with v2.

- Steve

> 

> 

> 

> [1] https://jazz.net/wiki/bin/view/Main/RootServicesSpec#Root_Services_Documents

> 

> 

> <> wrote on 02/12/2014 21:40:39:

> 

> > From: Steve K Speicher <> 

> > To: "OASIS OSLC Core TC Discussion List" <>

> > Date: 02/12/2014 21:40 

> > Subject: Re: [oslc-core] OSLC & LDP: Query Capabilities,
Creation 

> > Factories & location of Dialogs 

> > Sent by: <> 

> > 

> > I took the liberty to sketch in more detail what I meant from
some 

> > of my comments below.  I've put in a webpage how we can
build upon 

> > the LDP Container concept many of the things we depended on in
2.0. 

> > Requires some new vocabulary as sketched but pretty simple and

> > minimal, perhaps even cleanly layers on queryCapability/creationFactory.

> > 

> > https://wiki.oasis-open.org/oslc-core/Discovery

> > 

> > Feedback welcome, we can review at upcoming meeting. 

> > 

> > Thanks,

> > Steve Speicher

> > IBM Rational Software

> > OSLC - Lifecycle integration inspired by the web -> http://open-services.net

> > 

> > 

> > 

> > From:        Steve K Speicher/Raleigh/IBM@IBMUS

> > To:        "OASIS OSLC Core TC Discussion
List" <oslc-

> > > 

> > Date:        12/02/2014 08:58 AM 

> > Subject:        Re: [oslc-core] OSLC &
LDP: Query Capabilities, 

> > Creation Factories & location of Dialogs 

> > Sent by:        <>

> > 

> > 

> > 

> > Hi Martin, 

> > 

> > Thanks for sharing.  This is timely, as I getting ready
to outline 

> > this in more detail.  I have done some work internally and
on my 

> > todo list for this month to publish it out.  I'll comment
directly 

> > on some of the points you've raised below. 

> > 

> > - Steve 

> > 

> > 

> > > From: Martin P Pain <> 

> > > To: "OASIS OSLC Core TC Discussion List" <>

> > > Date: 12/02/2014 04:55 AM 

> > > Subject: [oslc-core] OSLC & LDP: Query Capabilities,
Creation Factories & 

> > > location of Dialogs 

> > > Sent by: <> 

> > > 

> > > As we move OSLC 3 to be based on LDP, I presume Query Capabilities
and 

> > > Creation Factories will be replaced by capabilities from
LDP. 

> > > 

> > > As I'm starting to draft the Automation v3 spec, I've come
to the place 

> > > where I need to be able to refer to the definition of the
headless query/

> > > selection and creation capabilities. 

> > 

> > I believe we don't need to define much of this in domain specs,
you 

> > just need to leverage some basic ways that LDP and Core expose

> > capabilities and clients can discover it. 

> > 

> > > This also raises the question: are we keeping the existing

> > > oslc:ServiceProvider and oslc:Service resources? I see no
reason not to. 

> > From a pure 3.0 spec perspective, no.  I see no reason to
require these. 

> > From a compatibility with 2.0 specs, then yes of course we'd
need to. 

> > 

> > > 

> > > So my expectation of how this would go is: 

> > > 

> > > 1. An oslc:ServiceProvider: 

> > > 

> > >         a) which is possibly discoverable
from an 

> > oslc:ServiceProviderCatalog 

> > >         b) would contain one or more
oslc:Service resources 

> > We could just have LDP Containers.  Perhaps you could outline
the 

> > specific needs of what a oslc:ServiceProvider should have, so
a 

> > client/server could satisfy a certain.  Typically the needs
are that

> > a client needs to interaction with a set of services that operate
on

> > types of resources, such a container. 

> > 

> > > 2. These oslc:Service resources: 

> > > 

> > >         a) would each identify which
OSLC domain they operate in 

> > using their 

> > >         oslc:usage property 

> > > 

> > >                
i) (I believe this can also exist at the 

> > oslc:ServiceProvider level) 

> > > 

> > >         b) Link to LDP containers for
each of the resource types 

> > they work with 

> > > 

> > >                
i) (They may have more than one container for eachresource 

> > > type, e.g. 

> > >                
Automation Requests ready for execution, and 

> > Automation Request 

> > >                
templates) 

> > 

> > Essentially, you can think of what a "oslc:Service"
(and everything 

> > it contains) as an LDP:Container, annotated to provide the needs
we 

> > had before (query, dialogs, types, shapes, usage) 

> > 

> > >         c) Maybe, they would still contain
the links to the 

> > Creation & Selection 

> > >         dialogs (i.e. in the same place
as v2) 

> > Yes 

> > 

> > Something like: 

> > 

> > <> a ldp:DirectContainer; 

> >   oslc:creationDialog <#newDialog> ; 

> >   oslc:resourceType auto:AutomationRequest. 

> > 

> > <#newDialog> a oslc:Dialog; 

> >   oslc:dialog <http://example.org/ui/newDialog>;

> >   dcterms:title "New Automation Request". 

> > 

> > >         d) (for providers wanting to
be compatible with v2:) would

> > contain v2 

> > >         Creation Factories and Query
Capabilities 

> > 

> > Correct, we should keep the 3.0 specs "pure" and have
a separate 

> > "note" on v2 compatibility.  Imagine what the
3.0 spec would look 

> > like to someone who knows nothing about v2 or 2 years from now,

> > should they know anything about v2? 

> > 

> > There has been some things started and actively being worked
now: 

> > 

> > Core 3.0: http://tools.oasis-open.org/version-control/browse/wsvn/

> > oslc-core/specs/compat.html 

> > ChangeMgmt 3.0: http://tools.oasis-open.org/version-control/browse/

> > wsvn/oslc-ccm/trunk/supporting-docs/change-mgt-compatibility.html

> > 

> > > 3. Those LDP containers: 

> > > 

> > >         a) would provide LDP's querying
mechanism. (Is there such 

> > a thing? I 

> > >         can't find it.) replacing v2's
Query Capabilities 

> > 

> > No, it is being discussed for LDP "2.0".  We could
simply do 

> > something like this to advertise v2 query support on LDP Containers

> > 

> > <> a ldp:DirectContainer ; 

> >  oslc:queryType <http://open-services.net/ns/core#OSLCQuerySyntax>.

> > 

> > or something 

> > 

> > 

> > >         b) where appropriate, would
provide the creation 

> > capability (replacing 

> > >         v2's Creation Factories) 

> > 

> > We could call a LDP Container a creation factory, that is all
it is.

> > Though I'm not sure if we need to carry that v2 terminology forward
in 3.0. 

> > 

> > >         c) Maybe, it might be appropriate
to link from the container to the 

> > >         creation & selection dialogs
for the resources in that 

> > container. So 

> > >         (for dialogs that are specific
to a single LDP container -

> > not all will 

> > >         be) all the operations for that
container are linked from 

> > the container 

> > >         itself. However, compatibility
with v2 would require that 

> > the dialogs 

> > >         are linked from the oslc:Service.

> > 

> > Not sure I'm hearing anything I disagree with but not sure I
fully 

> > get the point. I think it would be helpful if we worked an example,

> > side-by-side. 

> > The way to think of it, starting with a Container...build up
from 

> > there like I mentioned before: dialogs, query, etc. 

> > 

> > > In particular, right now I need to know: 

> > > - Is 3a correct, or will we be keeping Query Capabilities?
 

> > 

> > For at least 1st half of 2015, I think Query Capability will
remain 

> > a thing only on open-services.net.  It is there, we can
use it as 

> > needed.  We'll need to decide what we want to do with this
longer term. 

> > 

> > > I think 3c is also an important point to decide on. 

> > > 

> > > Thanks, 

> > > Martin

> > > Unless stated otherwise above:

> > > IBM United Kingdom Limited - Registered in England and Wales
with 

> > number 741598. 

> > > Registered office: PO Box 41, North Harbour, Portsmouth,
Hampshire PO6 3AU 

> Unless stated otherwise above:

> IBM United Kingdom Limited - Registered in England and Wales with
number 741598. 

> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire
PO6 3AU
Next in thread → Next in month →