Here?s an elaboration of my views and recommendations?
One issue I have is what qualifies as a "supported platform". In the AllJoyn
open source project, we made
a clear distinction (as far as claimed level of support) between a ?fully
supported? platform, and an ?experimental? one
(those aren't the labels they use though). A ?fully supported? platform is one
where all features work, and a new feature
should not be committed to master unless it works (and tests exist and pass)
with *all* of them.
You can commit a new feature if it works with all such platforms, and may or
may not work with any ?experimental? platforms.
And there's a process to make a platform be a fully-supported platform, which
involves having a sub-maintainer signed up for it,
working sample code, working unit tests for all fully-supported features, etc.
I have had good experience with that process, and it seems to me that IoTivity
is lacking in process or at least clear explanations of
such process and platform expectations (let me know if there is such
process/explanation, since I haven?t found one on any IoTivity
web page or wiki page).
As the primary maintainer, I would push the ISG for such a rule, or something
similar.
Any platform without a specific sub-maintainer is by definition not a fully
supported platform in the sense above.
Anyone wanting a platform to be on the fully supported list needs to pony up a
sub-maintainer.
Lacking a sub-maintainer for a platform, any code (new or existing) is able to
be disabled for that platform if there is an issue with it.
So for example if there is no iOS sub-maintainer then it's not a fully
supported platform and any iOS issues might be dealt with by
disabling code on that platform until the code compiles, or by disabling any
tests on that platform that fail when code does compile.
I am volunteering for two things:
First, I?m volunteering for the overall maintainer, to institute such policies
as are agreed on and maintain a Platform Abstraction
Layer (PAL) architecture into which platform-specific code can be placed (the
latter may take a while and will need incremental
steps, of which work we did in the windows-port branch was one step). My
thoughts on the PAL architecture are that the
end goal should be to converge on the autoconfig-style approach like other open
source projects use. The end goal would have
a few characteristics:
1) No platform-specific defines appear on the command line, but only
appear inside config.h
2) #include ?config.h? always occurs before any #ifdef?s in code.
3) Platform_features.h gets replaced by config.h stuff
4) A few platforms (as close to 0 as possible) have their own config.h
variants when the toolchain cannot generate config.h? the master config.h might
have something like (pseudocode)
If OS is (say) tizen
Include config_tizen.h
Else
Rest of normal config.h stuff
5) Platform-specific ifdefs should ideally not appear in any generic code,
but be confined to code inside a PAL layer.
We did some of that in the windows-port branch for example, where we created
Windows versions of pthreads, usleep, etc.
so as to remove ifdefs throughout normal code.
Secondm I am also volunteering for Windows sub-maintainer but not
sub-maintainer of any other platform.
Dave
From: iotivity-dev-bounces at lists.iotivity.org
[mailto:[email protected]] On Behalf Of Dave Thaler via
iotivity-dev
Sent: Tuesday, July 5, 2016 6:28 PM
To: ???(Uze Choi) <uzchoi at samsung.com>; iotivity-dev at lists.iotivity.org
Subject: Re: [dev] New Project and maintainer in IoTivity
In the 6/10 meeting, I volunteered for ?platform extension? (but not for
sub-maintainer of platforms other than Windows), at least for the near term.
That offer still stands.
I would be looking for others to volunteer for sub-maintainers for other
specific platforms.
I don?t expect any single person to exist who is an expert on all platforms.
From: iotivity-dev-bounces at lists.iotivity.org<mailto:iotivity-dev-bounces at
lists.iotivity.org> [mailto:[email protected]] On Behalf
Of ???(Uze Choi)
Sent: Monday, July 4, 2016 1:00 AM
To: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at
lists.iotivity.org>
Subject: [dev] New Project and maintainer in IoTivity
Please let me make it clear for new projects and maintainers.