-
Notifications
You must be signed in to change notification settings - Fork 121
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
[Accepted with Revisions] SDL 0293 Revisions - Enable OEM exclusive apps support #1108
Comments
Hello SDL community, I have a point regarding the proposed changes because I see some data inconsistency in the way proposed here. The |
The author has added additional commits to the pull request which changes what was under review. Since changes were made to the PR, we must immediately withdraw this and lock it. We will discuss if we can bring it back into review during the next Steering Committee Meeting. |
Luxoft the authoring company of the PR under review has confirmed that the current state of the revisions PR is ready for review and changes will not be made to the PR during this review period. The review of "Revise SDL-0293 Enable OEM exclusive apps support" begins now and continues through January 19, 2021. The pull request outlining the revisions under review is available here: #1106 |
1. These additions don't allow the app libraries to pass the system hardware or software version to the developer because the type passed back is the RPC struct |
It looks logical that the software or hardware version is not a part of the vehicle type but the vehicle system information. I rather propose to create a SystemInfo struct for that purpose, join both versions into it and pass back 2 RPC structs. If we say about the proposal implementation, the packet has the information separately for each field in tags, it is not the RPC struct, but the RAI response already has the VehicleType struct without the systemSoftwareVersion, thus it looks normal to have systemHardwareVersion near that. No any problems to pass 2 additional parameters into onVehicleTypeReceived event instead of the one VehicleType. As an example, you could check this onVehicleTypeReceived (vehicleType, systemSoftwareVersion, systemHardwareVersion) {} |
2.We would like to ask a question for clarification. Is it correct that systemHardwareVersion is the version of the HU? |
Hello @Sohei-Suzuki-Nexty |
@ashwink11 -san |
Hello @Sohei-Suzuki-Nexty |
It is more critical for the mobile part to clarify both |
Hi @vladmu , Regarding |
@ashwink11 -san |
Hi @ashwink11, thank you for your reply. I'm not blaming the proposal, and I just highlight the facts that block the implementation. Firstly, if we will skip |
@vladmu I understand your concern that finalizing the proposal is impossible because the proposal doesn't specify how to fetch systemHardwareVersion. You are correct in the assumption that Let's just get through the options we have from the technical point of view: Option 1: Remove Option 2: Extend HMI API to provide Option 3: Option 2 + extend RAI response. If software version becomes a requirement in future proposals, then the criteria would be used in the protocol level, before you would register the app. Adding it to RAI doesn't make sense as it would be too late to react. Anything the proposal does with RAI is for backward compatibility. Also the information seems redundant and the library should instead provide vehicle information and version to the app using the notification. With regards to the SDLC process we have following options: Option a: Agree on an option from above and accept the proposal with revisions. The revisions would be whatever option we choose from above. This accelerates the implementation and wouldn't risk the SDL release timing further. Option b: Agree on an option from above and return the proposal with revisions. The revisions would be whatever option we choose from above. In this case I would suggest allowing the developer to continue work on the PR but review and merging requires proposal acceptance. Option c: Reject/Withdraw the proposal revision and recreate another revision if the changes are too big. From our point of view there's no reason to follow this option. I don't think any of the options are so big that the proposal revision must be withdrawn. |
@kshala-ford thank you for your reply. |
@vladmu Regarding your addition, the requirement you refer to is
If you include the following two points in the proposal you will see that this is rather a description that data could be used from StartServiceACK or from RAI repsonse whereby StartServiceACK is preferred. The third point in the proposal describes backwards compatibility using any information available in RAI response. Now for |
The explanation is clear, for backward compatibility |
There's no "further compatibility" gained by placing a new parameter in two places. In fact, we could deprecate the |
@joeljfischer thank you, I'd like just summarize the preferable options from our side: we prefer to support Option 2 from this comment #1108 (comment) including Option 2 from this comment #1108 (comment) and deprecating |
Hello, |
Hello @Sohei-Suzuki-Nexty, |
I'm okay with this. However, I would also like to see |
If we deprecate the fields in the RAI response, it would be good to explicitly mention in the proposal that the fields will continue to be sent by SDL core if the RPC version is less than the next major version (8.0?) to protect mobile library implementations in the field that have not been updated yet (this scenario is an old mobile library connecting to a new core implementation). |
@ashwink11 -san
I understand the parameters of systemHarwareVersion and systemSoftwareVersion. |
If we understand correctly all conversations above, the deprecation of The mobile library implementation should:
It would be good to reflect all described above alongside the new |
The versioning system of Core would handle this. An old mobile library version that connects with a newer head unit will use the RPC spec version that the mobile library supports, in which the parameters would not be deprecated. There should be no issue here.
Correct, it is optional, I simply think it's confusing, especially to newer members, if there are two ways of passing the same data and neither is deprecated. The rest of your mobile library implementation appears to be correct. |
Agreed upon items for revision: 2. Update the 3. Deprecate the <function name="RegisterAppInterface" functionID="RegisterAppInterfaceID" messagetype="response" since="1.0">
<param name="vehicleType" type="VehicleType" mandatory="false" since="x.x" deprecated="true">
<description>Specifies the vehicle's type. See VehicleType.</description>
<history>
<param name="vehicleType" type="VehicleType" mandatory="false" since="2.0" until="x.x" />
</history>
</param>
<param name="systemSoftwareVersion" type="String" maxlength="100" mandatory="false" platform="documentation" since="x.x" deprecated="true">
<description>The software version of the system that implements the SmartDeviceLink core.</description>
<history>
<param name="systemSoftwareVersion" type="String" maxlength="100" mandatory="false" platform="documentation" since="3.0" until="x.x">
</history>
</param>
</function> Final item for approval: class SystemInfo {
VehicleType vehicleType
String systemSoftwareVersion,
String systemHardwareVersion
}
boolean onSystemInfoReceived(SystemInfo systemInfo); @interface SDLSystemInfo
@property (strong, nonatomic, readonly) SDLVehicleType *vehicleType;
@property (strong, nonatomic, readonly) NSString *systemSoftwareVersion;
@property (strong, nonatomic, readonly) NSString *systemHardwareVersion;
@end
- (BOOL)didReceiveSystemInfo:(SDLSystemInfo *)systemInfo; and equivalent for the JavaScript Suite library. It provides a cleaner API with a more intuitive name. It allows for additional params to be added in the future without making breaking changes. |
|
The new class SystemInfo {
/**
* Initializes an instance of SystemInfo.
* @class
* @param {VehicleType} vehicleType
* @param {String} systemSoftwareVersion
* @param {String} systemHardwareVersion
*/
constructor (vehicleType = null, systemSoftwareVersion = null, systemHardwareVersion = null) {
this._vehicleType = vehicleType;
this._systemSoftwareVersion = systemSoftwareVersion;
this._systemHardwareVersion = systemHardwareVersion;
}
}
//API callback
onSystemInfoReceived (sdlManager, systemInfo) {} |
The Steering Committee voted on 2021-01-26 to accept this revised proposal with the revisions stated in this comment (Items 1, 2, 3 and the noted "Final item for approval”: update the method signature and class structure). |
@LitvinenkoIra please advise when a new PR has been entered to update the proposal to reflect the agreed-upon revisions. I'll then merge the PR so the proposal is up to date, and comment on the already created issues for the impacted repositories. Thanks! |
The proposal has been updated based on the Steering Committee's agreed-upon revisions. Comments have been left on implementation issues to reference revisions: |
Hello SDL community,
The review of "Revise SDL-0293 Enable OEM exclusive apps support" began on December 15, 2020, and continues through January 26, 2021.
This will be a review of proposed revisions to a previously accepted but not yet implemented proposal, SDL 0293.
The pull request outlining the revisions under review is available here:
#1106
Reviews are an important part of the SDL evolution process. All reviews should be sent to the associated Github issue at:
#1108
What goes into a review?
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of SDL. When writing your review, here are some questions you might want to answer in your review:
Please state explicitly whether you believe that the proposal should be accepted into SDL.
More information about the SDL evolution process is available at
https://github.com/smartdevicelink/sdl_evolution/blob/master/process.md
Thank you,
Jordyn Mackool
Program Manager - Livio
jordyn@livio.io
The text was updated successfully, but these errors were encountered: