[Oslc-Automation] Potential new requirement

John Arwe johnarwe at us.ibm.com
Thu May 10 08:10:40 EDT 2012


(Obligatory Monty Python quote: "I'd like to answer that question two 
ways, first in my normal voice, and then in a kind of silly, high-pitched 
whine.")

There at least two tacks one can take on most of those questions (i.e. 
those except the one on existing guidance).  It comes down to one's 
definition of "correctness" - is it adherence to exactly what is written 
(letter of the law) or the authors' intent (spirit of the law)?

1: "Spec lawyer" approach, i.e. narrowly read as literally as possible.
In such a reading, occurrence constraints other than 0 and 1 let an 
implementation do pretty much anything it wants.
Even allowing 0 opens a similar door (impl has 1 value, chooses to expose 
0, still compliant according to the resource definition alone).
Narrowing the range of potential interpretations often helps adopters 
(simpler code on both sides), but also narrows the scope of applicability 
of the spec.
Narrow it too much and it's not useful for wide adoption.
Failing to consider *all* cases up front often results in an overly narrow 
spec.
Narrowing it by covering all the edge/corner cases makes the spec harder 
to understand, therefore harder to implement as the authors intended.
Widening an existing spec is usually incompatible for existing clients, 
which makes them less likely to adopt the new version.
Since no (widely useful) spec is free from conditional requirements (MAY, 
SHOULD), compliance != interop, at least not guaranteed interop.
Where the letter of the spec makes it hard for an implementation to meet 
some point, they'll find a way around the letter of the spec.
You can't legislate (MUST) good behavior.

2: "principle of least surprise" approach, i.e. do what users expect.
This is less prescriptive than the first approach, because expectations 
vary by audience.
To the degree it achieves its stated goal, it would arguably result in 
better (more widespread) adoption.
In the extreme case, one could argue that the set of common expectations 
held by each sub-audience in effect creates a new spec (variant), and 
interop is likely only within a sub-audience.

Adoption is many people's yardstick for the success of a spec... and for 
implementations.

Let's examine just one point along both lines
> if such a property is available within the underlying implementation, 
the service provider will give it to me.
A spec lawyer would find that easy to fix; just add a MUST (if impl has 
it, must expose it).
Then you'll find out that 

1: some implementations will "naturally have it lying around".  Others 
will have to calculate it, perhaps across a distributed system of many 
nodes, i.e. the calculation is expensive.  Do the calculators "have" it, 
so they are subject to the if-clause whose consequence is the MUST, or 
not?  Spec lawyers can add more text to cover that; and unless that new 
text is a MUST, you've not actually narrowed the spec you've just added to 
its size and complexity.

2: some implementations will implement granular access control.  User A 
has read permission on the property (or even on some property values, aka 
RDF triple objects), User B does not.  Both GET the same resource.  The 
"if impl has it, must expose it" solution (if already finalized) means 
this implementation CANNOT be compliant; changing the finalized version 
(editing the if-clause to take this new case into account) MAY break 
existing clients (certainly in the general case; perhaps not in this 
particular case).

The POLS approach would be to hang a SHOULD on it (if impl has it, should 
expose it) or just remain silent.  Since it's conditional, yeah a provider 
can do (or at least appear to do) pretty much whatever it wants and still 
be "compliant" according to the spec lawyers.  It allows provider 
implementations to make decisions based on their audiences, and their 
consumers (broadly speaking, "the market") decides if those decisions were 
"good enough" overall.  While it technically (spec lawyer reading) allows 
those decisions to be coin-flips (random), the market of clients probably 
will not tolerate that well... code (coders) prefer predictability.


The spec lawyer approach also tends to have trouble coping with unbounded 
values.  Take the "0:*" case ... read literally, a spec lawyer could 
easily argue that a compliant server implementation MUST be able to store 
an infinite number of triples (per subject) using that predicate - which 
is clearly nonsense in the real world.  It says that NO provider 
implementation is or can be compliant.  The only real-world-reasonable 
interpretation of that I can craft is that implementers have to be able to 
cope with >1, and each will have an implementation-defined upper limit.


Best Regards, John

Voice US 845-435-9470  BluePages
Tivoli OSLC Lead - Show me the Scenario


oslc-automation-bounces at open-services.net wrote on 05/09/2012 10:32:02 PM:

> From: Charles Rankin/Austin/IBM at IBMUS
> To: oslc-automation at open-services.net
> Date: 05/09/2012 10:32 PM
> Subject: Re: [Oslc-Automation] Potential new requirement
> Sent by: oslc-automation-bounces at open-services.net
> 
> I'm intrigued by the suggestion of using zero-or-one as an "opt-in".
> My interpretation of this as a consumer would have been, if such a 
> property is available within the underlying implementation, the 
> service provider will give it to me.  Thus, if it isn't present, no 
> such property exists in the underlying implementation.  However an 
> "opt-in" interpretation says that it may very well exist, but the 
> service provider is simply choosing not to give it to me.  Is there 
> any guidance (in Core) around this?  Does this behavior have to be 
> deterministic in any way, or can the provider "randomly" choose when
> it wants to provide the property? 
> 
> Is this type of opt-in behavior valid for zero-or-many properties? 
> For example, can an Automation provider arbitrarily choose not to 
> include the oslc_auto:input Parameters for an AutomationResult 
> resource definition even when it is otherwise capable of doing so? 
> 
> Charles Rankin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20120510/36d5bdb8/attachment-0003.html>


More information about the Oslc-Automation mailing list