diff mbox

[v2] doc: release-guide: add deprecated api section

Message ID 1450473019-28942-1-git-send-email-mike.holmes@linaro.org
State Accepted
Commit 5b229c63e6f8874f2f723db1f4ac7df61735bcb6
Headers show

Commit Message

Mike Holmes Dec. 18, 2015, 9:10 p.m. UTC
Describe how changes to the public api are handled from release to release.

Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
---
 doc/process-guide/release-guide.adoc | 108 +++++++++++++++++++++++++++++++++++
 platform/Makefile.inc                |   3 +
 test/api_test/Makefile.am            |   3 +
 test/validation/Makefile.am          |   3 +
 4 files changed, 117 insertions(+)

Comments

Bill Fischofer Dec. 19, 2015, 3:35 a.m. UTC | #1
On Fri, Dec 18, 2015 at 3:10 PM, Mike Holmes <mike.holmes@linaro.org> wrote:

> Describe how changes to the public api are handled from release to release.

>

> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>

>


Reviewed-and-Tested-by: Bill Fischofer <bill.fischofer@linaro.org>


> ---


 doc/process-guide/release-guide.adoc | 108
> +++++++++++++++++++++++++++++++++++

>  platform/Makefile.inc                |   3 +

>  test/api_test/Makefile.am            |   3 +

>  test/validation/Makefile.am          |   3 +

>  4 files changed, 117 insertions(+)

>

> diff --git a/doc/process-guide/release-guide.adoc

> b/doc/process-guide/release-guide.adoc

> index f5d29d2..5bef890 100644

> --- a/doc/process-guide/release-guide.adoc

> +++ b/doc/process-guide/release-guide.adoc

> @@ -35,6 +35,8 @@ image::../images/simple_release_git.png[align="center"]

>

>  Regular bug fixes, and implementation changes occur directly to master.

>

> +

> +[[anchor-1]]

>  == Branch acceptance criteria ==

>  ODP has three branches one for general bug fixes and improvements on

>  linux-generic, testing and examples (master). The second branch is for API

> @@ -134,3 +136,109 @@ made every month if sufficient change has

> accumulated.

>

>  === Implementation (Impl) ===

>  Platform specific free form text relating to the version.

> +

> +== Deprecating part of the API

> +Deleting or changing the published API follows the normal

> <<anchor-1,process>>, with the following additional rules:

> +

> +* A deprecated indication is applied to the old API using the @deprecated

> +doxygen syntax.

> +* For a function change the old API it is additionally marked using the

> +ODP_DEPRECATED preprocessor macro.

> +* The CHANGELOG will have an entry in the API change section.

> +* The Release Manager will resolve the duration for which the deprecated

> API.

> +will be supported, and determine which future release it will be applied

> to. +

> +

> +The more complex use cases are elaborated below.

> +

> +=== Changing  a function

> +A new function will be added with the new behavior. The old function will

> remain and be marked by both a documentation entry and a compiler warning.

> +For a function change the new API will be used in the examples,

> test/performance and

> +test/miscellaneous directories.

> +The new API must have comparable coverage to the old API.

> +

> +

> +[source,c]

> +----

> +/**

> + * Create a foo

> + *

> + * @deprecated This API needs to take a count and will be deleted.

> + * The replacement API will be odp_bar_create();

> + *

> + * @param name ...

> + */

> +odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;

> +

> +/**

> + * Create a bar

> + *

> + * @param name ...

> + */

> +odp_foo_t odp_bar_create(const char *name, int count);

> +----

> +

> +=== Deleting a function

> +When deleting a function it will be be indicated in the documentation and

> via a

> +compiler warning.

> +

> +[source,c]

> +----

> +/**

> + * Create a foo

> + *

> + * @deprecated This API will be removed because platforms now take care

> of this

> + *

> + * @param name ...

> + */

> +odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;

> +----

> +

> +=== Changing a struct member

> +When changing a struct member it will be indicated in the documentation.

> +

> +[source,c]

> +----

> +/**

> + * An initialization struct

> + */

> +typedef struct foo_init_t {

> +       /** Maximum number of worker threads */

> +       int num_worker;

> +

> +       /**

> +        * Maximum number of control threads

> +        * @deprecated this is now number_of_control

> +        */

> +       int num_control;

> +       int other_items;

> +       int number_of_control;

> +----

> +

> +The implementation of the structs initialization function must be updated

> to cover the new element.

> +[source,c]

> +----

> +void odp_foo_param_init(foo_init_t param) {

> +       ...

> +       param->number_of_control = 20;

> +}

> +----

> +

> +=== Deleting a struct member

> +When deleting a struct member it will be indicated in the documentation.

> +

> +[source,c]

> +----

> +/**

> + * An initialization struct

> + */

> +typedef struct foo_init_t {

> +       /** Maximum number of worker threads */

> +       int num_worker;

> +

> +       /**

> +        * Maximum number of control threads

> +        * @deprecated this is no longer needed, it is automatically

> inferred.

> +        */

> +       int num_control;

> +       int other_items;

> +----

> diff --git a/platform/Makefile.inc b/platform/Makefile.inc

> index 5d589b1..46a3baa 100644

> --- a/platform/Makefile.inc

> +++ b/platform/Makefile.inc

> @@ -16,6 +16,9 @@ GIT_DESC = `$(top_srcdir)/scripts/get_impl_str.sh

> $(top_srcdir)`

>  AM_CFLAGS += "-DGIT_HASH=$(GIT_DESC)"

>  AM_CFLAGS += -DPLATFORM=${with_platform}

>

> +#The implementation will need to retain the deprecated implementation

> +AM_CFLAGS += -Wno-deprecated-declarations

> +

>  odpapiincludedir= $(includedir)/odp/api

>  odpapiinclude_HEADERS = \

>                   $(top_srcdir)/include/odp/api/align.h \

> diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am

> index fcdba48..97ca5df 100644

> --- a/test/api_test/Makefile.am

> +++ b/test/api_test/Makefile.am

> @@ -11,3 +11,6 @@ noinst_HEADERS = \

>                   $(top_srcdir)/test/test_debug.h

>

>  dist_odp_ring_SOURCES = odp_ring_test.c odp_common.c

> +

> +#The tests will need to retain the deprecated test implementation

> +AM_CFLAGS += -Wno-deprecated-declarations

> \ No newline at end of file

> diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am

> index 4e36494..527e44b 100644

> --- a/test/validation/Makefile.am

> +++ b/test/validation/Makefile.am

> @@ -19,3 +19,6 @@ ODP_MODULES = buffer \

>               system

>

>  SUBDIRS = common $(ODP_MODULES)

> +

> +#The tests will need to retain the deprecated test implementation

> +AM_CFLAGS += -Wno-deprecated-declarations

> \ No newline at end of file

> --

> 2.5.0

>

> _______________________________________________

> lng-odp mailing list

> lng-odp@lists.linaro.org

> https://lists.linaro.org/mailman/listinfo/lng-odp

>
Mike Holmes Jan. 4, 2016, 3:37 a.m. UTC | #2
ping

On 18 December 2015 at 22:35, Bill Fischofer <bill.fischofer@linaro.org>
wrote:

>

>

> On Fri, Dec 18, 2015 at 3:10 PM, Mike Holmes <mike.holmes@linaro.org>

> wrote:

>

>> Describe how changes to the public api are handled from release to

>> release.

>>

>> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>

>>

>

> Reviewed-and-Tested-by: Bill Fischofer <bill.fischofer@linaro.org>

>

>

>> ---

>

>  doc/process-guide/release-guide.adoc | 108

>> +++++++++++++++++++++++++++++++++++

>>  platform/Makefile.inc                |   3 +

>>  test/api_test/Makefile.am            |   3 +

>>  test/validation/Makefile.am          |   3 +

>>  4 files changed, 117 insertions(+)

>>

>> diff --git a/doc/process-guide/release-guide.adoc

>> b/doc/process-guide/release-guide.adoc

>> index f5d29d2..5bef890 100644

>> --- a/doc/process-guide/release-guide.adoc

>> +++ b/doc/process-guide/release-guide.adoc

>> @@ -35,6 +35,8 @@ image::../images/simple_release_git.png[align="center"]

>>

>>  Regular bug fixes, and implementation changes occur directly to master.

>>

>> +

>> +[[anchor-1]]

>>  == Branch acceptance criteria ==

>>  ODP has three branches one for general bug fixes and improvements on

>>  linux-generic, testing and examples (master). The second branch is for

>> API

>> @@ -134,3 +136,109 @@ made every month if sufficient change has

>> accumulated.

>>

>>  === Implementation (Impl) ===

>>  Platform specific free form text relating to the version.

>> +

>> +== Deprecating part of the API

>> +Deleting or changing the published API follows the normal

>> <<anchor-1,process>>, with the following additional rules:

>> +

>> +* A deprecated indication is applied to the old API using the @deprecated

>> +doxygen syntax.

>> +* For a function change the old API it is additionally marked using the

>> +ODP_DEPRECATED preprocessor macro.

>> +* The CHANGELOG will have an entry in the API change section.

>> +* The Release Manager will resolve the duration for which the deprecated

>> API.

>> +will be supported, and determine which future release it will be applied

>> to. +

>> +

>> +The more complex use cases are elaborated below.

>> +

>> +=== Changing  a function

>> +A new function will be added with the new behavior. The old function

>> will remain and be marked by both a documentation entry and a compiler

>> warning.

>> +For a function change the new API will be used in the examples,

>> test/performance and

>> +test/miscellaneous directories.

>> +The new API must have comparable coverage to the old API.

>> +

>> +

>> +[source,c]

>> +----

>> +/**

>> + * Create a foo

>> + *

>> + * @deprecated This API needs to take a count and will be deleted.

>> + * The replacement API will be odp_bar_create();

>> + *

>> + * @param name ...

>> + */

>> +odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;

>> +

>> +/**

>> + * Create a bar

>> + *

>> + * @param name ...

>> + */

>> +odp_foo_t odp_bar_create(const char *name, int count);

>> +----

>> +

>> +=== Deleting a function

>> +When deleting a function it will be be indicated in the documentation

>> and via a

>> +compiler warning.

>> +

>> +[source,c]

>> +----

>> +/**

>> + * Create a foo

>> + *

>> + * @deprecated This API will be removed because platforms now take care

>> of this

>> + *

>> + * @param name ...

>> + */

>> +odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;

>> +----

>> +

>> +=== Changing a struct member

>> +When changing a struct member it will be indicated in the documentation.

>> +

>> +[source,c]

>> +----

>> +/**

>> + * An initialization struct

>> + */

>> +typedef struct foo_init_t {

>> +       /** Maximum number of worker threads */

>> +       int num_worker;

>> +

>> +       /**

>> +        * Maximum number of control threads

>> +        * @deprecated this is now number_of_control

>> +        */

>> +       int num_control;

>> +       int other_items;

>> +       int number_of_control;

>> +----

>> +

>> +The implementation of the structs initialization function must be

>> updated to cover the new element.

>> +[source,c]

>> +----

>> +void odp_foo_param_init(foo_init_t param) {

>> +       ...

>> +       param->number_of_control = 20;

>> +}

>> +----

>> +

>> +=== Deleting a struct member

>> +When deleting a struct member it will be indicated in the documentation.

>> +

>> +[source,c]

>> +----

>> +/**

>> + * An initialization struct

>> + */

>> +typedef struct foo_init_t {

>> +       /** Maximum number of worker threads */

>> +       int num_worker;

>> +

>> +       /**

>> +        * Maximum number of control threads

>> +        * @deprecated this is no longer needed, it is automatically

>> inferred.

>> +        */

>> +       int num_control;

>> +       int other_items;

>> +----

>> diff --git a/platform/Makefile.inc b/platform/Makefile.inc

>> index 5d589b1..46a3baa 100644

>> --- a/platform/Makefile.inc

>> +++ b/platform/Makefile.inc

>> @@ -16,6 +16,9 @@ GIT_DESC = `$(top_srcdir)/scripts/get_impl_str.sh

>> $(top_srcdir)`

>>  AM_CFLAGS += "-DGIT_HASH=$(GIT_DESC)"

>>  AM_CFLAGS += -DPLATFORM=${with_platform}

>>

>> +#The implementation will need to retain the deprecated implementation

>> +AM_CFLAGS += -Wno-deprecated-declarations

>> +

>>  odpapiincludedir= $(includedir)/odp/api

>>  odpapiinclude_HEADERS = \

>>                   $(top_srcdir)/include/odp/api/align.h \

>> diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am

>> index fcdba48..97ca5df 100644

>> --- a/test/api_test/Makefile.am

>> +++ b/test/api_test/Makefile.am

>> @@ -11,3 +11,6 @@ noinst_HEADERS = \

>>                   $(top_srcdir)/test/test_debug.h

>>

>>  dist_odp_ring_SOURCES = odp_ring_test.c odp_common.c

>> +

>> +#The tests will need to retain the deprecated test implementation

>> +AM_CFLAGS += -Wno-deprecated-declarations

>> \ No newline at end of file

>> diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am

>> index 4e36494..527e44b 100644

>> --- a/test/validation/Makefile.am

>> +++ b/test/validation/Makefile.am

>> @@ -19,3 +19,6 @@ ODP_MODULES = buffer \

>>               system

>>

>>  SUBDIRS = common $(ODP_MODULES)

>> +

>> +#The tests will need to retain the deprecated test implementation

>> +AM_CFLAGS += -Wno-deprecated-declarations

>> \ No newline at end of file

>> --

>> 2.5.0

>>

>> _______________________________________________

>> lng-odp mailing list

>> lng-odp@lists.linaro.org

>> https://lists.linaro.org/mailman/listinfo/lng-odp

>>

>

>



-- 
Mike Holmes
Technical Manager - Linaro Networking Group
Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs
Mike Holmes Jan. 6, 2016, 1:44 p.m. UTC | #3
Merged.

On 3 January 2016 at 22:37, Mike Holmes <mike.holmes@linaro.org> wrote:

> ping

>

> On 18 December 2015 at 22:35, Bill Fischofer <bill.fischofer@linaro.org>

> wrote:

>

>>

>>

>> On Fri, Dec 18, 2015 at 3:10 PM, Mike Holmes <mike.holmes@linaro.org>

>> wrote:

>>

>>> Describe how changes to the public api are handled from release to

>>> release.

>>>

>>> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>

>>>

>>

>> Reviewed-and-Tested-by: Bill Fischofer <bill.fischofer@linaro.org>

>>

>>

>>> ---

>>

>>  doc/process-guide/release-guide.adoc | 108

>>> +++++++++++++++++++++++++++++++++++

>>>  platform/Makefile.inc                |   3 +

>>>  test/api_test/Makefile.am            |   3 +

>>>  test/validation/Makefile.am          |   3 +

>>>  4 files changed, 117 insertions(+)

>>>

>>> diff --git a/doc/process-guide/release-guide.adoc

>>> b/doc/process-guide/release-guide.adoc

>>> index f5d29d2..5bef890 100644

>>> --- a/doc/process-guide/release-guide.adoc

>>> +++ b/doc/process-guide/release-guide.adoc

>>> @@ -35,6 +35,8 @@ image::../images/simple_release_git.png[align="center"]

>>>

>>>  Regular bug fixes, and implementation changes occur directly to master.

>>>

>>> +

>>> +[[anchor-1]]

>>>  == Branch acceptance criteria ==

>>>  ODP has three branches one for general bug fixes and improvements on

>>>  linux-generic, testing and examples (master). The second branch is for

>>> API

>>> @@ -134,3 +136,109 @@ made every month if sufficient change has

>>> accumulated.

>>>

>>>  === Implementation (Impl) ===

>>>  Platform specific free form text relating to the version.

>>> +

>>> +== Deprecating part of the API

>>> +Deleting or changing the published API follows the normal

>>> <<anchor-1,process>>, with the following additional rules:

>>> +

>>> +* A deprecated indication is applied to the old API using the

>>> @deprecated

>>> +doxygen syntax.

>>> +* For a function change the old API it is additionally marked using the

>>> +ODP_DEPRECATED preprocessor macro.

>>> +* The CHANGELOG will have an entry in the API change section.

>>> +* The Release Manager will resolve the duration for which the

>>> deprecated API.

>>> +will be supported, and determine which future release it will be

>>> applied to. +

>>> +

>>> +The more complex use cases are elaborated below.

>>> +

>>> +=== Changing  a function

>>> +A new function will be added with the new behavior. The old function

>>> will remain and be marked by both a documentation entry and a compiler

>>> warning.

>>> +For a function change the new API will be used in the examples,

>>> test/performance and

>>> +test/miscellaneous directories.

>>> +The new API must have comparable coverage to the old API.

>>> +

>>> +

>>> +[source,c]

>>> +----

>>> +/**

>>> + * Create a foo

>>> + *

>>> + * @deprecated This API needs to take a count and will be deleted.

>>> + * The replacement API will be odp_bar_create();

>>> + *

>>> + * @param name ...

>>> + */

>>> +odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;

>>> +

>>> +/**

>>> + * Create a bar

>>> + *

>>> + * @param name ...

>>> + */

>>> +odp_foo_t odp_bar_create(const char *name, int count);

>>> +----

>>> +

>>> +=== Deleting a function

>>> +When deleting a function it will be be indicated in the documentation

>>> and via a

>>> +compiler warning.

>>> +

>>> +[source,c]

>>> +----

>>> +/**

>>> + * Create a foo

>>> + *

>>> + * @deprecated This API will be removed because platforms now take care

>>> of this

>>> + *

>>> + * @param name ...

>>> + */

>>> +odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;

>>> +----

>>> +

>>> +=== Changing a struct member

>>> +When changing a struct member it will be indicated in the documentation.

>>> +

>>> +[source,c]

>>> +----

>>> +/**

>>> + * An initialization struct

>>> + */

>>> +typedef struct foo_init_t {

>>> +       /** Maximum number of worker threads */

>>> +       int num_worker;

>>> +

>>> +       /**

>>> +        * Maximum number of control threads

>>> +        * @deprecated this is now number_of_control

>>> +        */

>>> +       int num_control;

>>> +       int other_items;

>>> +       int number_of_control;

>>> +----

>>> +

>>> +The implementation of the structs initialization function must be

>>> updated to cover the new element.

>>> +[source,c]

>>> +----

>>> +void odp_foo_param_init(foo_init_t param) {

>>> +       ...

>>> +       param->number_of_control = 20;

>>> +}

>>> +----

>>> +

>>> +=== Deleting a struct member

>>> +When deleting a struct member it will be indicated in the documentation.

>>> +

>>> +[source,c]

>>> +----

>>> +/**

>>> + * An initialization struct

>>> + */

>>> +typedef struct foo_init_t {

>>> +       /** Maximum number of worker threads */

>>> +       int num_worker;

>>> +

>>> +       /**

>>> +        * Maximum number of control threads

>>> +        * @deprecated this is no longer needed, it is automatically

>>> inferred.

>>> +        */

>>> +       int num_control;

>>> +       int other_items;

>>> +----

>>> diff --git a/platform/Makefile.inc b/platform/Makefile.inc

>>> index 5d589b1..46a3baa 100644

>>> --- a/platform/Makefile.inc

>>> +++ b/platform/Makefile.inc

>>> @@ -16,6 +16,9 @@ GIT_DESC = `$(top_srcdir)/scripts/get_impl_str.sh

>>> $(top_srcdir)`

>>>  AM_CFLAGS += "-DGIT_HASH=$(GIT_DESC)"

>>>  AM_CFLAGS += -DPLATFORM=${with_platform}

>>>

>>> +#The implementation will need to retain the deprecated implementation

>>> +AM_CFLAGS += -Wno-deprecated-declarations

>>> +

>>>  odpapiincludedir= $(includedir)/odp/api

>>>  odpapiinclude_HEADERS = \

>>>                   $(top_srcdir)/include/odp/api/align.h \

>>> diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am

>>> index fcdba48..97ca5df 100644

>>> --- a/test/api_test/Makefile.am

>>> +++ b/test/api_test/Makefile.am

>>> @@ -11,3 +11,6 @@ noinst_HEADERS = \

>>>                   $(top_srcdir)/test/test_debug.h

>>>

>>>  dist_odp_ring_SOURCES = odp_ring_test.c odp_common.c

>>> +

>>> +#The tests will need to retain the deprecated test implementation

>>> +AM_CFLAGS += -Wno-deprecated-declarations

>>> \ No newline at end of file

>>> diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am

>>> index 4e36494..527e44b 100644

>>> --- a/test/validation/Makefile.am

>>> +++ b/test/validation/Makefile.am

>>> @@ -19,3 +19,6 @@ ODP_MODULES = buffer \

>>>               system

>>>

>>>  SUBDIRS = common $(ODP_MODULES)

>>> +

>>> +#The tests will need to retain the deprecated test implementation

>>> +AM_CFLAGS += -Wno-deprecated-declarations

>>> \ No newline at end of file

>>> --

>>> 2.5.0

>>>

>>> _______________________________________________

>>> lng-odp mailing list

>>> lng-odp@lists.linaro.org

>>> https://lists.linaro.org/mailman/listinfo/lng-odp

>>>

>>

>>

>

>

> --

> Mike Holmes

> Technical Manager - Linaro Networking Group

> Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs

>

>

>



-- 
Mike Holmes
Technical Manager - Linaro Networking Group
Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs
diff mbox

Patch

diff --git a/doc/process-guide/release-guide.adoc b/doc/process-guide/release-guide.adoc
index f5d29d2..5bef890 100644
--- a/doc/process-guide/release-guide.adoc
+++ b/doc/process-guide/release-guide.adoc
@@ -35,6 +35,8 @@  image::../images/simple_release_git.png[align="center"]
 
 Regular bug fixes, and implementation changes occur directly to master.
 
+
+[[anchor-1]]
 == Branch acceptance criteria ==
 ODP has three branches one for general bug fixes and improvements on
 linux-generic, testing and examples (master). The second branch is for API
@@ -134,3 +136,109 @@  made every month if sufficient change has accumulated.
 
 === Implementation (Impl) ===
 Platform specific free form text relating to the version.
+
+== Deprecating part of the API
+Deleting or changing the published API follows the normal <<anchor-1,process>>, with the following additional rules:
+
+* A deprecated indication is applied to the old API using the @deprecated
+doxygen syntax.
+* For a function change the old API it is additionally marked using the
+ODP_DEPRECATED preprocessor macro.
+* The CHANGELOG will have an entry in the API change section.
+* The Release Manager will resolve the duration for which the deprecated API.
+will be supported, and determine which future release it will be applied to. +
+
+The more complex use cases are elaborated below.
+
+=== Changing  a function
+A new function will be added with the new behavior. The old function will remain and be marked by both a documentation entry and a compiler warning.
+For a function change the new API will be used in the examples, test/performance and
+test/miscellaneous directories.
+The new API must have comparable coverage to the old API.
+
+
+[source,c]
+----
+/**
+ * Create a foo
+ *
+ * @deprecated This API needs to take a count and will be deleted.
+ * The replacement API will be odp_bar_create();
+ *
+ * @param name ...
+ */
+odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;
+
+/**
+ * Create a bar
+ *
+ * @param name ...
+ */
+odp_foo_t odp_bar_create(const char *name, int count);
+----
+
+=== Deleting a function
+When deleting a function it will be be indicated in the documentation and via a
+compiler warning.
+
+[source,c]
+----
+/**
+ * Create a foo
+ *
+ * @deprecated This API will be removed because platforms now take care of this
+ *
+ * @param name ...
+ */
+odp_foo_t odp_foo_create(const char *name) ODP_DEPRECATED;
+----
+
+=== Changing a struct member
+When changing a struct member it will be indicated in the documentation.
+
+[source,c]
+----
+/**
+ * An initialization struct
+ */
+typedef struct foo_init_t {
+	/** Maximum number of worker threads */
+	int num_worker;
+
+	/**
+	 * Maximum number of control threads
+	 * @deprecated this is now number_of_control
+	 */
+	int num_control;
+	int other_items;
+	int number_of_control;
+----
+
+The implementation of the structs initialization function must be updated to cover the new element.
+[source,c]
+----
+void odp_foo_param_init(foo_init_t param) {
+	...
+	param->number_of_control = 20;
+}
+----
+
+=== Deleting a struct member
+When deleting a struct member it will be indicated in the documentation.
+
+[source,c]
+----
+/**
+ * An initialization struct
+ */
+typedef struct foo_init_t {
+	/** Maximum number of worker threads */
+	int num_worker;
+
+	/**
+	 * Maximum number of control threads
+	 * @deprecated this is no longer needed, it is automatically inferred.
+	 */
+	int num_control;
+	int other_items;
+----
diff --git a/platform/Makefile.inc b/platform/Makefile.inc
index 5d589b1..46a3baa 100644
--- a/platform/Makefile.inc
+++ b/platform/Makefile.inc
@@ -16,6 +16,9 @@  GIT_DESC = `$(top_srcdir)/scripts/get_impl_str.sh $(top_srcdir)`
 AM_CFLAGS += "-DGIT_HASH=$(GIT_DESC)"
 AM_CFLAGS += -DPLATFORM=${with_platform}
 
+#The implementation will need to retain the deprecated implementation
+AM_CFLAGS += -Wno-deprecated-declarations
+
 odpapiincludedir= $(includedir)/odp/api
 odpapiinclude_HEADERS = \
 		  $(top_srcdir)/include/odp/api/align.h \
diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am
index fcdba48..97ca5df 100644
--- a/test/api_test/Makefile.am
+++ b/test/api_test/Makefile.am
@@ -11,3 +11,6 @@  noinst_HEADERS = \
 		  $(top_srcdir)/test/test_debug.h
 
 dist_odp_ring_SOURCES = odp_ring_test.c odp_common.c
+
+#The tests will need to retain the deprecated test implementation
+AM_CFLAGS += -Wno-deprecated-declarations
\ No newline at end of file
diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
index 4e36494..527e44b 100644
--- a/test/validation/Makefile.am
+++ b/test/validation/Makefile.am
@@ -19,3 +19,6 @@  ODP_MODULES = buffer \
 	      system
 
 SUBDIRS = common $(ODP_MODULES)
+
+#The tests will need to retain the deprecated test implementation
+AM_CFLAGS += -Wno-deprecated-declarations
\ No newline at end of file