OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

oslc-core message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


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


Responses woven in...

> From: Martin P Pain <martinpain@uk.ibm.com>

> To: Steve K Speicher/Raleigh/IBM@IBMUS
> Cc: "OASIS OSLC Core TC Discussion List" <oslc-core@lists.oasis-open.org>
> 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
>
>
> <oslc-core@lists.oasis-open.org> wrote on 02/12/2014 21:40:39:
>
> > From: Steve K Speicher <sspeiche@us.ibm.com>
> > To: "OASIS OSLC Core TC Discussion List" <oslc-core@lists.oasis-open.org>
> > Date: 02/12/2014 21:40
> > Subject: Re: [oslc-core] OSLC & LDP: Query Capabilities, Creation
> > Factories & location of Dialogs
> > Sent by: <oslc-core@lists.oasis-open.org>
> >
> > 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-
> > core@lists.oasis-open.org>
> > Date:        12/02/2014 08:58 AM
> > Subject:        Re: [oslc-core] OSLC & LDP: Query Capabilities,
> > Creation Factories & location of Dialogs
> > Sent by:        <oslc-core@lists.oasis-open.org>
> >
> >
> >
> > 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 <martinpain@uk.ibm.com>
> > > To: "OASIS OSLC Core TC Discussion List" <oslc-core@lists.oasis-open.org>
> > > Date: 12/02/2014 04:55 AM
> > > Subject: [oslc-core] OSLC & LDP: Query Capabilities, Creation Factories &
> > > location of Dialogs
> > > Sent by: <oslc-core@lists.oasis-open.org>
> > >
> > > 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


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]