Skip to content

First stab at API life cycle #1316

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed

First stab at API life cycle #1316

wants to merge 5 commits into from

Conversation

}

```
<!--so for a specific one, or does this now allow me to use all experimental APIs in one giant go?-->

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's worth having each set of experimental APIs having its own feature switch as well. So, for example, in order to use PSA, you would need to add both the EXPERIMENTAL_API and PSA features toggles.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's a decision for @bulislaw

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We discussed this ages ago, if I remember correctly, the consensus was behind "case by case". That is if the feature would have it's own flag it should be there hidden behind the master experimantal flag, so that when the API is stabilised no changes to the application are needed.

@iriark01
Copy link
Contributor Author

@bulislaw please can you either review or nominate someone else?


1. Experimental: No changes are considered breaking, so they can be changed in any release type. They are on the Mbed OS Master branch and can be included in any Mbed OS build, but are identified as experimental and users have to explicitly include them.
1. Stable: Can only be changed in a non-breaking manner. These are included by default in the Mbed OS full profile and, where appropriate, the bare metal profile.
1. Deprecated: API deprecation is a breaking change, and done only in major releases.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a common misconcaption:

  • Deprecated - marked to removal, but still available to the users (will generate a warning)
  • Removal - deprecated API removed from the code base, not longer available to the user.

So when the API is deprecated it will be available to the users until next major release when it will be removed. The marking as "deprecated" can happen in minor relase.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So do we have four phases, or a clarification for the three?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think 3 phases: Experimental, Stable, Deprecated; after the last one the API is removed in next major release. Deprecated should say that API is marked by deletion and its usage will generate a warning, it'll be removed in next major release. Marking API as deprecated is not a breaking change as the code using this API will continue to work until the next major release.

Copy link
Member

@bulislaw bulislaw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay... generally looks good, just the "deprecated" comment needs addressing.

@iriark01
Copy link
Contributor Author

Handles manually because of merge conflicts.

@iriark01 iriark01 closed this Jun 12, 2020
@iriark01 iriark01 deleted the api-life-cycle branch June 12, 2020 13:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants