finos / FDC3

An open standard for the financial desktop.
https://fdc3.finos.org
Other
194 stars 115 forks source link

FDC3 for Web Browsers Discussion group - 18th May 2023 #991

Closed kriswest closed 1 year ago

kriswest commented 1 year ago

Group convened to discuss how to enable FDC3 use in a web browser, without the use of a browser extension (such as fdc3-desktop-agent or a container).

Issue: https://github.com/finos/FDC3/issues/896 Mailing list discussion: https://groups.google.com/a/finos.org/g/fdc3/c/jCvlLjokBLs

In a recent email on the FDC3 mailing list, @kriswest wrote:

... I also want to add that there is clearly significant interest in the community in enabling FDC3 use on the web. There is a strong use case in that it would enable better onboarding journeys with less drop-off (where you use an app on the web with others before adopting a desktop container or similar).

and:

But there are also additional challenges such as how to make the API available reliably without importing a proprietary module from a particular vendor into every app, how to deal with more than one implementation of API/Desktop Agent in the browser at once, how to do this reliably and securely within the browser sandbox etc.. Work needs to be done in the Standard to solve these issues and to make web browser use possible in a future FDC3 Standard version - which I believe is possible (and likely to involve using a vendor-agnostic FDC3 NPM module to detect and connect to API implementation(s)). However, we're going to need to do that work to enable the aforementioned API implementations to be compliant and if we fail to hold the line now on compliance with the current version of the FDC3 Standard, that may never happen.

Relevant issue tags

Current open issues that relate to the above concepts with the label: image

Meeting Date

Thursday 18 May 2023 - 11am EST / 4pm BST

WebEx info

More ways to join

Meeting notices

Agenda

Minutes

The meeting continued the discussion of requirements and design goals for a solution. The current draft is:

Definitions:

Use cases (ways a Desktop Agent might be used)

An installer library will need to allow for several different formats of FDC3-enabled environments built with web technologies. Terminology for these is defined below:

  1. Container or Browser Extension: A web app running in the context of a container or browser extension that provides an implementation of the FDC3 API (the traditional FDC3 use-case).
  2. Web container/Child Web App (window.open / window.opener / iframe): A web app running in a window opened by a web app running in another browser window with a Desktop Agent running in it or otherwise associated with it. OR A web app running in an iframe inside another window with a Desktop Agent associated with it.
  3. Independently opened web app: A web app running in an independent window (for example user typed in a web address in a browser), not opened or embedded in any other window.
  4. Micro-frontend Container (Single DOM): Multiple separate 'apps' running in the same DOM, that could communicate with each other and other windows through the desktop agent.

FDC3 Installer / Bootstrapper / Discover library

A library that enables an app to retrieve a FDC3 Desktop Agent Implementation (and will generally be independent of it) - allowing app developer to avoid tying their implementation to a specific implementation of FDC3.

Requirements:

(Note 'this solution' / 'any solution' refers to the overall proposal not just an installer library of API changes etc. as different things may be needed to solve for each case) \

  1. Don't break FDC3 for existing applications (use case 1 apps).
  2. Any solution should aim to support all 4 proposed use cases
  3. It should be possible to write applications that can run under any of the first 3 4 use cases without code modifications (preserve WORA).
  4. It should be possible to write use case 4 applications (micro frontend containers) where the FDC3 implementation for the window (the root Desktop Agent Instance?) is retrieved via any of the first 3 use cases.
  5. An app developer should be able to control / limit what implementations of an FDC3 Desktop Agent it will accept, by:
    1. Version
    2. Owner of implementation?
      1. Note: Implies a requirement for being able to authenticate a Desktop Agent…
    3. Vendor of implementation?
      1. Note: Implies a requirement for being able to authenticate a Desktop Agent…
    4. Security / type of implementation?
  6. Apps using an installer that are started by a particular Desktop Agent (use case 2) should prefer retrieving that implementation (unless prevented by configuration as per requirement 4).
  7. Any solution should not force the addition of security holes into applications.
  8. If no configuration is or preference for a Desktop Agent is provided by an independently launched (use case 3) then no agent should be loaded.
  9. A Desktop Agent vendor/owner should be able to decide whether to accept the application. \

Design Goals:

Implementation ideas / discussions to have

Action Items

Untracked attendees

Full name Affiliation GitHub username
novavi commented 1 year ago

Derek Novavi / S&P Global

pbaize commented 1 year ago

Pierre Baize / OpenFin

lspiro-Tick42 commented 1 year ago

Leslie / Tick42

tpina commented 1 year ago

Tiago Pina / Finsemble

kriswest commented 1 year ago

Kris West / Finsemble 🚀

nkolba commented 1 year ago

Nick Kolba / Connectifi

dcj99 commented 1 year ago

David Jones / ipushpull

robmoffat commented 1 year ago

Rob / FINOS 🍋

openfin-johans commented 1 year ago

Johan Sandersson / OpenFin 🎁

WatsonCIQ commented 1 year ago

Chris Watson / Finsemble image

hughtroeger commented 1 year ago

Hugh Troeger / FactSet