My views, as the iotivity API maintainer, below...

-----Original Message-----
[] On Behalf Of Wouter van der 
Beek (wovander)
Sent: Thursday, February 22, 2018 9:49 AM
To: Nash, George <>; Mats Wichmann <>;
Subject: Re: [dev] clear distinction of what is below and above the APIs


1)     clear definition of the IOTivity API.

The API can evolve, just like OCF specs, evolve so there's no fixed definition 
per se.

That said, one guideline is that anything that's mandatory in an OCF spec 
should have an implementation below the API (though may require values/input 
from the app across some API).  That guideline is not consistently followed in 
the iotivity API today because the iotivity API today evolved over time with 
few documented principles and without any API maintainer.

2) definition of what is base functionality (e.g. what should be in the stack)

               - guidance to developers of code for OCF CR's if that needs to 
be under the API (read: new api) or below the API

My opinion is that by default I assume that everything ought to be below the 

Today, many things have to be implemented by the app because the API doesn't do 
it for them.

I consider this a bad thing in general.

               - starting point:

                              - all security code needs to be part of the 
stack, otherwise the stack is incomplete

                              - all discovery resources should be part of the 

Agree.  This is also consistent with my views expressed above.

               - discussion points

                              - infra structure features, are those application 
resources or are some of them part of the stack.

Not sure what "infrastructure features" are referred to, but hopefully the 
principles I mentioned above are sufficient for others to know what I would say 

3) mechanism to add application code somewhere that uses an API as defined on 
above definitions.

For example I will create a new resource that will be defined in the core.

I do not think that this is an feature that should be part of the IOTivity core 
stack since it will be an optional resource.

I want to distinguish between the "core" stack and "Iotivity APIs".   My points 
above are about Iotivity APIs in general.

There may be APIs for the "core" stack, and additional APIs for optional 
components in iotivity that aren't part of the "core" stack.

So just because something isn't in the "core" stack doesn't mean it can't be in 
the iotivity project and have an iotivity API (it could also be in some other 
project and have its own API, which is what I think you imply in the next 
paragraph).  There just has to be a way for an app to select which optional 
components it wants, without having to write all the optional component logic 

The discussion of whether a given optional component should be in the iotivity 
project or another project, is about functionality of IoTivity as a project, 
not a question about APIs per se, and thus not specific to me as API 
maintainer.  So others may want to comment on that


However I will produce some code for it to test the API, this is still an good 
starting point for any developer that wants to implement such resource.

Since I will do this for OCF, I need to open source the code and since it will 
be based on IOTivity, it makes sense to me that there is an some kind of repo 
where I can put this code in. together with build instructions and information 
on which version of IOTivity this is developed.

Hope this helps,


-----Original Message-----

From: Nash, George []

Sent: 22 February 2018 17:07

To: Wouter van der Beek (wovander) 
<<>>; Mats Wichmann 

Subject: RE: [dev] clear distinction of what is below and above the APIs

Could you please add some clarification what you are actually asking from the 
iotivity-dev community. I have read this email chain multiple times and I am 
still confused about what exactly you are asking.

George Nash

-----Original Message-----

 [] On Behalf Of Wouter van der 
Beek (wovander)

Sent: Thursday, February 22, 2018 7:39 AM

To: Mats Wichmann <<>>;<>

Subject: Re: [dev] clear distinction of what is below and above the APIs


Maybe we should clean up the API as an side effect of this request..

e.g. make sure that if someone uses a lower layer that is not intended as API, 
it should  not link..

Kind Regards,


-----Original Message-----

From: Mats Wichmann []

Sent: 22 February 2018 15:32

To: Wouter van der Beek (wovander) 

Subject: Re: [dev] clear distinction of what is below and above the APIs

On 02/22/2018 08:19 AM, Wouter van der Beek (wovander) wrote:

I'm maybe the wrong person to respond here, but let me have a go.

> Hi All,


>>From IOTivity perspective I like to know if code is being developed for an CR 
>>if it needs to go below the API or should be regarded as application level.

> For some things it is pretty obvious but for larger infrastructure items it 
> is probably not.

> Is there any guidance from IOTIvity perspective?

> (if not then see this as an request to make that guidance)

Not quite sure understanding the question.  If by CR you mean OCF spec change 
request, under what circumstance would that not be stack-level code, that is, 
part of the implementation of the API ("below")? If there is an infrastructure 
element that looks like an application, an example would be useful (others will 
probably have a much better understanding)

I don't think we know what the API is, precisely.  We have a possibly-correct 
list of headers which contain declarations of things that should be part of the 
API, but the dependency tree has not been worked out to my knowledge - and 
since the libraries are not "cleaned"

(non-public symbols are still visible), you can get away with building code 
that reaches outside the API - it will link okay if the libraries provide those 
symbols, and there's nothing to detect such usage. Yes this is a new topic from 
what you're asking.


> Related to this, I am will be working on application level code, e.g. using 
> the IOTivity API.

> I like to contribute this code to IOTivity or other open source project.

> I will not be maintaining it for long, e.g. if the IOTivity API changes it 
> will be broken...

> I guess that means that is it should not be in the main tree of IOTivity... 
> hence we need an solution to store this kind of code.

> Any ideas?

We should probably have a "contrib" branch for contributions (unless a case can 
be made that the code should be taken into the long term maintenance area).  We 
need anyway to be testing the ability to build applications outside of the tree 
which builds the stack (partly due to what was mentioned above - the 
environment is too leaky to be building examples inside the tree, since 
"everything is available")


iotivity-dev mailing list<>


iotivity-dev mailing list<>
iotivity-dev mailing list

Reply via email to