My views, as the iotivity API maintainer, below...
-----Original Message----- From: iotivity-dev-boun...@lists.iotivity.org [mailto:iotivity-dev-boun...@lists.iotivity.org] On Behalf Of Wouter van der Beek (wovander) Sent: Thursday, February 22, 2018 9:49 AM To: Nash, George <george.n...@intel.com>; Mats Wichmann <m...@wichmann.us>; iotivity-dev@lists.iotivity.org Subject: Re: [dev] clear distinction of what is below and above the APIs Sure.. 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 API. 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 stack 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 itself. 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 Dave. 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, Wouter -----Original Message----- From: Nash, George [mailto:george.n...@intel.com] Sent: 22 February 2018 17:07 To: Wouter van der Beek (wovander) <wovan...@cisco.com<mailto:wovan...@cisco.com>>; Mats Wichmann <m...@wichmann.us<mailto:m...@wichmann.us>>; iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> 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----- From: iotivity-dev-boun...@lists.iotivity.org<mailto:iotivity-dev-boun...@lists.iotivity.org> [mailto:iotivity-dev-boun...@lists.iotivity.org] On Behalf Of Wouter van der Beek (wovander) Sent: Thursday, February 22, 2018 7:39 AM To: Mats Wichmann <m...@wichmann.us<mailto:m...@wichmann.us>>; iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> Subject: Re: [dev] clear distinction of what is below and above the APIs Thx, 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, Wouter -----Original Message----- From: Mats Wichmann [mailto:m...@wichmann.us] Sent: 22 February 2018 15:32 To: Wouter van der Beek (wovander) <wovan...@cisco.com<mailto:wovan...@cisco.com>>; iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> 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@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.iotivity.org%2Fmailman%2Flistinfo%2Fiotivity-dev&data=04%7C01%7Cdthaler%40microsoft.com%7C014e20e91c0a40efe4b908d57a1c8d41%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636549185466000468%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=Y1Sl94YOIygsoPLBXQdnGyZZtfx4uMd%2BKJGC2TPdVn4%3D&reserved=0 _______________________________________________ iotivity-dev mailing list iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.iotivity.org%2Fmailman%2Flistinfo%2Fiotivity-dev&data=04%7C01%7Cdthaler%40microsoft.com%7C014e20e91c0a40efe4b908d57a1c8d41%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636549185466000468%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=Y1Sl94YOIygsoPLBXQdnGyZZtfx4uMd%2BKJGC2TPdVn4%3D&reserved=0
_______________________________________________ iotivity-dev mailing list iotivity-dev@lists.iotivity.org https://lists.iotivity.org/mailman/listinfo/iotivity-dev