-
Notifications
You must be signed in to change notification settings - Fork 132
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
Allow Specification of Channel MetaData during Channel Creation #243
Comments
I think the issue here is that display metadata was intended to only apply to "system" or "public" channels. We could change this, but we would have first to agree to change the semantics of system vs. app channels for that. The way that I would instead see this work, is that if your framework allows dynamic creation of system channels (i.e. visible channels exposed through |
Seconding @rikoe 's comments here. Visual channels are supposed to be system channels. Systems (i.e. desktop agents) can allow for extensions to their registry of these channels as they see fit. |
@rikoe @nkolba The DesktopAgent can join those private channels (programmatically) currently, which would force them to leave any system channel they are currently joined to and the current specification states that 'Always, there SHOULD be a clear UX indicator of what channel an app is joined to.'. If you show no indication (because you have no display metadata) you are not telling the user they will be leaving that invisible channel if they select another... To be fully internally consistent the spec would need to either:
In terms of usecases, consider integration with a large vendor app (e.g. an OMS) with an existing non-FDC3 channel system (there are a few) that doesn't match up with the Desktop Agent's set. The OMS wshes to create some additional system channels representing its internal channels for apps under the desktop agent to join - and for those links to be created by the user. At present there are only two options:
While we can happily knock-out an extension to allow system channels to be added, that will mean the standard is missing what we are starting to see as a common use-case for the vendors most likely to be used under multiple desktop agent implementations. We'd be interested to discuss further. Having written this I realise the above proposal may need to be extended further (along the lines of the above bullets). |
@kriswest @sgd2z I think the issue here is that you would like to do something not supported by the current spec (i.e. a new requirement). As I understand the requirement, it is: "allow applications to request new system channels from the desktop agent, which will have visual representation, and can be used in channel pickers". I think this is a perfectly fine requirement, which we should consider. I have some questions about display metadata which now becomes an input parameter, not information about existing channels, and all the implications of that (e.g. what if different visual metadata is requested/provided by different parties). The line from the spec you reference (Always, there SHOULD be a clear UX indicator of what channel an app is joined to) is in my view referring exclusively to the "join" APIs, which afaik only applies to system channels, as it is being discussed under the "joining channels" section of the specification. I agree that the spec can be clearer in this regard. I do not think extending the During the 1.1 release timeframe, we tried very hard to create a unified channel API that caters for two discrete use cases:
I hope you can agree that extending the @nkolba is anything I've said above massively off-base? |
@rikoe we're not getting from the spec as written that you shouldn't be able to @rikoe rather than splitting into two APIs, what about making the public/private decision more explicit: |
Some comments:
|
|
@nkolba @rikoe @kriswest
|
Unfortunately, I wouldn't vote for either option. Option #1 has real security implications, as an app would be able to create a system channel via a client API. #2 - as @rikoe points out - blurs the line between system and app channels and essentially creates a backdoor to the same problem we have with option #1. I would point out that if your DesktopAgent wants to allow apps to register system channels - there is nothing preventing you from exposing an API within your DA to do so. If there's no further activity on this Issue and related PR - I'd recommend we close for now. We can always revise the discussion post -1.2 and perhaps when we have more use cases. -Nick |
I know this is a nearly-closed issue, but I would chime in with @sgd2z here that I see no compelling reason to make such a strong distinction between system channels and app channels; although this discussion treats these categories as some form of public / private segmentation, there is nothing in the spec that states explicitly or implicitly that app channels app channels should be hidden to the end user, and that they cannot be joined. Our implementation allows joining to app-defined channels, and there is no reason to suggest that this means they have to be discoverable system wide and affect the This is not a hypothetical scenario, either; we have customers who want to leverage FDC3 for user-controlled context sharing but also have the option to sometimes restrict the channel linking to within their suite of applications. |
I don't think the issue is that we want to prevent it, but that there is no way currently to distinguish between app channels that are being displayed (or intended for display) and ones that aren't. App channels were intended to be private in 1.1, that is the use case they are trying to meet - background exchange of data. What this rather sounds like is there is a third use case (beyond well-known, predefined system channels, and private app channels), which is on-demand, or custom, system-wide channels. If that use case exists, let's try and support it properly in the API, instead of shoe-horning the concept of display metadata into app channels... |
To clarify, our use case is not custom system wide channels; but rather "joinable private channels"; although, I do think the adding to the global channel list is another feature worth considering. There are two independent facets to consider:
External channel managers would simply omit app channels (since they are not discoverable), but in-app channel managers can display all known app channels that have defined display metadata. This doesn't seem to be shoehorning to me, as predefined system channels are just a special case of an app channel, and not a wholly different class of entities. I believe this request is both logical and consistent with the API at large, and offers a great deal of expanded functionality with little cost or risk to implementers. |
@nicholasdgoodman you are correct that nothing in the spec states that app channels should be hidden from the end user or can't be joined. I don't see any reason why an in-app channel manager couldn't display app channels known to it along with system channels and allow end users to join the app channels. The main question here is whether apps should be able to self-declare their own display metadata when declaring app channels. This seems a separate concern - there are trust issues here as well as just issues of consistency and contention of colors and other markers for a channel. The example UI you included above - showing app channels extending the system channel menu - could be done today using the existing 1.1 APIs. This doesn't require the app channels to declare their own metadata - indeed, you show the app channels with uniform styling - which helps to distinguish them from the system channels. |
That is not the full UI. The UI also includes showing joined channels on something like a window titlebar (not just in the channel joiner) and it will be janky to show some color channels and some letter channels. The end user does not need to know the distinction between system and app channels. This arbitrary distinction created by us just makes FDC3 more confusing for the end user. What does it mean to join a pink channel vs Channel A? There is no practical difference and showing those things differently is just problematic
Contention of colors is not a big deal, just fail the channel creation. FDC3 currently doesn't deal with the trust issues at all. Also I dont understand how showing a channel as A vs pink removes trust issues? What are we telling the user? Don't do this because these channels are untrusted?
This is exactly what we are asking to be made part of the spec so "in-app channel manager" is consistent across compliant systems. |
Sorry, I do not mean to over-emphasize the juxtaposition of color-named channels and letter-named channels. That was an extreme example. The actual request we received was to only show internally defined app channels. Without display metadata, container providers have no standard way to enable app writers to define joinable app channels. This request is driven by institutional clients who are interested in leveraging FDC3 for internal interop, but not with third-party vendors. Of course, wanting to leverage FDC3 for "closed communication" may be antithetical to desktop interop as a concept... but this was the actual feedback we had received. Disclaimer: I no longer represent any official implementations of FDC3 |
After the Channels, Feeds & Transactions working group we've decided to close this issue and instead focus on refining the definition of channel types #376 and other extensions to the spec to enable additional interop use- cases. |
Enhancement Request
According to the the spec - "Always, there SHOULD be a clear UX indicator of what channel an app is joined to.". However, when creating channels it is currently not possible to specify displayMetaData.
Use Case:
PR: #244
The text was updated successfully, but these errors were encountered: