Skip to content
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

Release candidate preparations #62

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

stroncoso-quobis
Copy link
Collaborator

What type of PR is this?

Add one of the following kinds:

  • documentation
  • subproject management

What this PR does / why we need it:

  • Release process to create first public release candidate for WebRTC APIs

Which issue(s) this PR fixes:

Fixes #50
Fixes #51
Fixes #61
Fixes #60
Fixes #58

Special notes for reviewers:

This PR intend to solve any formality and documentation requirements to achieve public release status within the repository and APIs: webrtc-registration, webrtc-call-handling, and webrtc-events. No functionality changes are intended.

Changelog input

Version URL path to rc.1
- webrtc-registration: 0.1.3-rc.1
- webrtc-call-handling: 0.1.3-rc.1
- webrtc-events: 0.1.0-rc.1

Additional documentation

API readiness checklist for webrtc-registration
API readiness checklist for webrtc-call-handling
API readiness checklist for webrtc-events

webrtc-registration: 0.1.3-rc.1
webrtc-call-handling: 0.1.3-rc.1
webrtc-events: 0.1.0-rc.1
@hdamker
Copy link
Contributor

hdamker commented Jan 19, 2025

@stroncoso-quobis Three points on first glance:

  • The Readiness Checklists should reflect the status of the planned release ... currently the status columns are empty
  • A rc version of the APIs requires at least the basic test case definition, without them an alpha release is possible (see mandatory "Basic API test cases & documentation" in the Checklist).
  • For Spring25 the Commonalities version is 0.5, not 0.4.0
  • CHANGELOG and README.md should be added before ReleaseManagement review

@hdamker
Copy link
Contributor

hdamker commented Jan 19, 2025

Regarding release numbering: For the Spring25 release the first (pre)release will be r1.1.

Regarding API versioning: a v0.1.3 would be only a patch release of the existing v0.1.1 ... are you sure that there were no breaking changes at all? (e.g. by applying the Commonality guidelines?)
One change would be for example that the URL for a CAMARA 0.x.y API should be .../v0.x, not /v0 (to be able to distinct it from a further 0.x+1.y version) also from client side.
My recommendation would be to go to 0.2.0 for the Spring25 release cycle.

contact:
email: contact@domain.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 0.1.3-rc.1
x-camara-commonalities: 0.4.0

Copy link
Collaborator

Choose a reason for hiding this comment

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

Removing trailing spaces

Suggested change

webrtc-registration: 0.2.0-rc.1
webrtc-call-handling: 0.2.0-rc.1
webrtc-events: 0.1.0-rc.1
@stroncoso-quobis stroncoso-quobis force-pushed the spring25-release-candidate branch from ef272da to a35ce02 Compare January 24, 2025 12:32
| 2 | Design guidelines from Commonalities applied | O | M | M | M | tbd | 0.5 |
| 3 | Guidelines from ICM applied | O | M | M | M | tbd | 0.3.0 |
| 4 | API versioning convention applied | M | M | M | M | Y | SemVer 2.0.0 |
| 5 | API documentation | M | M | M | M | Y | [link](/documentation/API_documentation/webrtc-registration-API-Readiness-Checklist.md) |
Copy link
Collaborator

Choose a reason for hiding this comment

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

The documentation should be inline in the YAML file info:description field, so it can be rendered with Redoc or Swagger like this:
https://editor.swagger.io/?url=https://raw.githubusercontent.com/camaraproject/WebRTC/refs/heads/main/code/API_definitions/webrtc-registration.yaml

The diagrams can be linked from Github repository (documentation folder)

As a result YAML should cover API specification and Documentation - see QoD API

Suggested change
| 5 | API documentation | M | M | M | M | Y | [link](/documentation/API_documentation/webrtc-registration-API-Readiness-Checklist.md) |
| 5 | API documentation | M | M | M | M | Y | inline in YAML|

Initially it can be linked to API_documentation folder https://github.com/camaraproject/WebRTC/tree/main/documentation/API_documentation

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Cristal clear, I will try to fix it on the next commit. Thanks!

@tanjadegroot
Copy link

tanjadegroot commented Jan 31, 2025

Hi, I think you may want to do some dedicated PR for each of the issues you listed in the beginning of this issue, and then mergen them. this would also give you a list of inputs for the changelog.

Please update the name of this issue when it is ready for review as in the current state it is not clear when you will have all updates needed to pass M3/M4 for Spring25 and when/if you will cover all the checklist items for the release-candidate (M3).

A release PR should only include the update of: the version(s), the Readiness checklists(s), the CHANGELOG, and the README.
All other changes should be prepared before dedicated update issues and related PRs.

Copy link

@tanjadegroot tanjadegroot left a comment

Choose a reason for hiding this comment

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

Hi, please check the listed points and also other comments
also, for M3 to pass you nee the basic test file for each API so that between M3 and M4 these can be executed to test the APIs

@@ -17,9 +17,11 @@ info:
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
version: 0.1.3
version: 0.2-rc.1
x-camara-commonalities: 0.4.0

Choose a reason for hiding this comment

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

For Spring25 meta-release, the Commonalities version shoud be 0.5, not 0.4.0

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Thanks. It is a WIP item.

Check progress at #65 PR. 0.5 comms will be covered as soon as it is merged.

@@ -169,14 +169,14 @@ info:
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: 0.1.0
version: 0.1.0-rc.1
x-camara-commonalities: 0.4.0

Choose a reason for hiding this comment

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

For Spring25 meta-release, the Commonalities version shoud be 0.5, not 0.4.0

contact:
email: contact@domain.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 0.2-rc.1
x-camara-commonalities: 0.4.0

Choose a reason for hiding this comment

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

For Spring25 meta-release, the Commonalities version shoud be 0.5, not 0.4.0

| 4 | API versioning convention applied | M | M | M | M | Y | SemVer 2.0.0 |
| 5 | API documentation | M | M | M | M | Y | [link](/documentation/API_documentation/webrtc-call-handling-API-Readiness-Checklist.md) |
| 6 | User stories | O | O | O | M | N | |
| 7 | Basic API test cases & documentation | O | M | M | M | tbd | [link](/documentation/API_documentation/) |

Choose a reason for hiding this comment

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

Test files (.feature files) shall be put in the folder /code/Test_definitions"

| 4 | API versioning convention applied | M | M | M | M | Y | SemVer 2.0.0 |
| 5 | API documentation | M | M | M | M | Y | [link](/documentation/API_documentation/webrtc-events-API-Readiness-Checklist.md) |
| 6 | User stories | O | O | O | M | N | |
| 7 | Basic API test cases & documentation | O | M | M | M | tbd | [link](/documentation/API_documentation/) |

Choose a reason for hiding this comment

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

Test files (.feature files) shall be put in the folder /code/Test_definitions"

@@ -17,9 +17,11 @@ info:
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
version: 0.1.3
version: 0.2-rc.1

Choose a reason for hiding this comment

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

version should be: 0.2.0-rc.1

servers:
- url: '{apiRoot}/webrtc-call-handling/vwip'
- url: '{apiRoot}/webrtc-call-handling/v0.2'

Choose a reason for hiding this comment

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

the versions here should be: v0.2rc1

x-camara-commonalities: 0.4.0

externalDocs:
description: Product documentation at CAMARA
url: https://github.com/camaraproject/
servers:
- url: "{apiRoot}/webrtc-events/vwip"
- url: "{apiRoot}/webrtc-events/v0.1"

Choose a reason for hiding this comment

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

the url version should be: v0.1rc1

contact:
email: contact@domain.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 0.2-rc.1

Choose a reason for hiding this comment

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

the version should be: 0.2.0-rc.1

servers:
- url: '{apiRoot}/webrtc-registration/vwip'
- url: '{apiRoot}/webrtc-registration/v0.2'

Choose a reason for hiding this comment

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

the url version shoudl be v0.2rc1

Copy link

@tanjadegroot tanjadegroot left a comment

Choose a reason for hiding this comment

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

I have quite a lot of comments for making a more CAMARA-like API. I only covered one OAS file, but I assume these comment will also hold for the other APIs.

Please discuss on how to go forward with this API.

Choose a reason for hiding this comment

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

Comments on the terminology used in the API OAS file:
Too much Telco stuff that we should avoid in CAMARA APIs: we should design the API with

  • user-friendly terms in the info.description documentation
  • user friendly names for schemas
  • not refer to any network equipment (e.g. webRTC GW), just use "network" or drop it alltogether.

line 7 and rest of spec(s): do we need the "vvoip" part in the "vvoipSessionId", or could we just use "sessionId" ? "vvoip" is a "Telco term".
If you don't want to change, the term "vvoip" should be clearly explained before using it, but I recommend to drop it

The name of the API (webrtc-call-handling" already includes the information about the type of sessions (sort-of) handled by this API, although I am still not so happy with the "webrtc" part.
The term "webrtc" is also Telco stuff: The API name could be "one-to-one-calling" instead ? you use that term in e.g. the tags. Unless you want to evolve this API later to support more than 2 participants which should then be foreseen.in the API design.
An alternative could be to use "person-to-person-calling" as it does not say how many persons and would allow for evolution of the API to multiple parties.

line 9: replace RACM with new name

line 41/42 and rest of file: the term "hdr" is not explained. we should avoid Telco abbreviations in the CAMARA APIs. Can you change it to a more developer friendly term ?
and related:
lines 331 hdrClientId and 340 hdrTransactioId: are these really informations that need to be exposed to the applications ? if so

  • these parameters should be explained in the API documentation in the info.description section of the OAS yaml.
  • they should be replaced by more user friendly names, or, at least, drop the "hdr" part

line 266: WrtcSDPDescriptor - same point about Telco stuff. we should designe the API in user-friendly terms in the info.description documentation and find a user friendly names for schemas - you really want to avoid a developer having to read the SDP RFC ...

If this is the attribute in the API POST allows to choose VOICE or VIDEO for the call to be created, could you make that the more user-friendly ? e.g. with a CallType parameter with a schema with an ENUM ? Maybe have a look at the APIs created by some of the CPaaS players for their Voice and Video calling ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Hi @tanjadegroot ,

Thanks for the review. Let's try to add some responses, and we will see how to fix them:

Replace WebRTCGW by network

Sounds good to me, I will take a look over it. All documentation needs to be reviewed.

replace vvoipSessionId as "vvoip" is a Telco term

vvoipSessionId and racmSessionId are used for different kind of "sessions", one is the media session itself, the other one is the active registration of the user/device on the network. I think that is better to keep some difference between them.

The term "webrtc" is also Telco stuff

In my humble opinion, I disagree, "webrtc" is a developer or technology term. It comes from the WebRTC API , and it is widely used on the real-time developers landscape, WHIP/WHEP is an example of protocol that uses that techonlogy and most of users are familiar with the SDP terminology. At least when dealing with "calls".

call-regsitration, call-handling and call-events can be possible names, but "webrtc" does not look to me as a "Telco stuf", is more a "CPaaS stuff".

Unless you want to evolve this API later to support more than 2 participants

I will really look for this, and yes, trying to be inspired by the most popular CPaaS, in order to bring easy transition from private CPaaS to Telco network systems.

line 9: replace RACM with new name

Fair enough :) RACM stands for Registration And Connectivity Manager, it could be simplier, like "registration service" or "webrtc registration", we will try to came up with something new.

the term "hdr" is not explained
hdrClientId and 340 hdrTransactioId: are these really informations that need to be exposed to the applications ?

These terms probably came from previous specs that weren't adapted to the current usage of x-correlator and deviceId. We will check them. For sure hdr means header and we will think on something to change it.

line 266: WrtcSDPDescriptor [...] you really want to avoid a developer having to read the SDP RFC ...

Yes, we need to avoid the SDP direct manipulation, it must not be a requirement. But is needed to provide a protocol to share the media descriptor of each side of the Real-Time communication.

As said before, is my belief that SDP is really common nowadays for RTC developers. That I consider the target of the API. What we must include on the documentation, is to provide clear instructions about how to obtain this SDP. Maybe some reference to RTCSessionDescription or other mechanisms.

We will take a look to this feedback.

If this is the attribute in the API POST allows to choose VOICE or VIDEO for the call to be created, could you make that the more user-friendly ? e.g. with a CallType parameter with a schema with an ENUM ? Maybe have a look at the APIs created by some of the CPaaS players for their Voice and Video calling ?

There are a lot of room for improvement, this audio/video request is one of this possible improvements, there's no specification for that on the API. You can respond with what you want, based on the SDP description.

For future releases, we need to review what is being done out there and try to get improvements. But this basic usage, within the CAMARA initiative will ease the developer pain for all the different CPaaS and GWs on the market.

We will discuss your feedback and create issues for the possible changes agreed.
Thanks a lot for your feedback.

Regards,

Choose a reason for hiding this comment

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

Hi @stroncoso-quobis? I am happy to stand corrected on my view that WebRTC is a Telco term. If this is what is being used the the CPaaS context, then it makes sense to adopt related terminology. Maybe this is also due the abbreviations :-)

However looking at terminology on your link (https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API#webrtc_reference),
I think it would still be important to find more "human" terms, e.g. inspired by some of the terms used on that page but without the "RTC" part. For example having

  • api name: "real-time-communications"
  • url: "{apiRoot}/real-time-communications/vx"
  • api: "/sessions"
  • parameter: sessionDescription
  • etc.

That would

  • make the link with WebRTC for those who know it (and documented in the description)
  • avoid abbreviations in the APIs and parameters
  • make it more easily readable
  • is generic enough to allow evolution to more features later

you may then be able to reach yet more developers :-)

Up to the team to discuss for sure.

Choose a reason for hiding this comment

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

I have a number of comments on the design (OAS structure) of the API OAS file:

  • instead of using the same schema VvoipSessionInformation for mostly all requests and responses, it would be preferable (for inter-operability reasons) to have separate createRequestBody with dedicated structures and with required attributes list, instead of having it it in the text only.
  • tags: usually these are the space-separated uppercase variant of the API name, not something completely different (not helpful for trouble shooting)
  • In paths section:
    • the summary and the description should not be the same. there should be more info in the description.
    • operationId: would be derived from the operation, e.g. createSession (for POST), listSessions, (for GET) getSession, deleteSession, etc. (no "DetailsById" needed"), etc
    • parameters shall be user friendly and explained in the description (see also other comment)
    • examples: it is recommended to user-frienldy names for examples. e.g. exMT180 is rahter cryptic.

line 154: the operationId of the PUT method would be ""putSessionStatus" or modifySessionStatus" instead of ""postSessionStatus"

line 292: for ENUM values, most APIs use UPPER_SNAKE_CASE for the values (but this is today not in the API guidelines

line 325: "Address" - this seems to be the same type as the CAMARA_common "PhoneNumber". suggest to use that one instead

line 348: "pathParamVvoipSessionId": could this just be called "sessionId" or some other simplified name ?

for security reasons:

  • schema type patterns shall be provided wherever possible, especially for strings
  • maxlen of strings should be provided

Choose a reason for hiding this comment

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

I assume similar comments as the above 2 would apply to the other API OAS files - I'll let you cross check this.

@tanjadegroot
Copy link

Suggestion from Release mgmt team: we consider that Spring25 meta-release is too early given the current state of the API.
Prepare the release for Fall25.

@stroncoso-quobis
Copy link
Collaborator Author

Suggestion from Release mgmt team: we consider that Spring25 meta-release is too early given the current state of the API. Prepare the release for Fall25.

Hi @tanjadegroot

Can we discuss this recommendation?
We are gaining speed:

  • Today's meeting agreed to merge Commonalities 0.5 aligment #65 , so commonalities will be covered for all APIs.
  • Today was pushed extra documentation for registration API PR Registration API - Inline documentation expanded #67 , and tomorrow, documentation for call-handling API is expected. It was previously shared during the meeting and the team considered it ok.
  • Only remaining point pending is testing documentation, and I consider that we can comply by the next week.

During today's meeting, deadlines were commented, and we strongly believe that we can still achieve the deadline.

Please, in name of all the team, reconsider the suggestion and give us some deadline to deliver doc & testing.

Best regards,

@tanjadegroot
Copy link

tanjadegroot commented Feb 11, 2025

@stroncoso-quobis Hi Santiago and team, of course we will be happy if you can deliver the API assets.

FYI the following are the next dates:

  • API release to be available latest by the next release mgmt call (Feb 18th) - includes review by RM.
  • Final decision, by TSC on Feb 20th

Note: the M4 date (final public release) is Feb 28th: between M3 and M4 only bug fixes on the API and documentation updates are expected.

Hope you will be able to get there !
@hdamker FYI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants