FDC3 is an open standard for applications on financial desktop to interoperate and exchange data with each other.
- Users benefit from a more joined-up experience, which reduces the "friction" in getting common tasks done,
- By enabling applications to:
- launch other apps (build a launcher),
- respond to activity in other apps (context sharing),
- request functionality from other apps (raising intents).
Finance is an information-dense environment.
Typically, traders will use serveral different displays so that they can keep track of multiple information sources at once. FDC3 helps with this by sharing the "context" between multiple applications, so that they collectively track the topic the user is focused on.
FDC3 standardizes a way to call actions between applications (called "intents"). Applications can raise intents for other apps to resolve, extending each other's functionality. Instead of the user copy-and-pasting bits of data from one application to another, FDC3 makes sure the intents have the data they need to seamlessly transition activity between applications.
As an open standard, FDC3 can be implemented on any platform and in any language. All that is required is a "Desktop Agent" that implements the FDC3 standard, which is responsible for co-ordinating application interactions. (For a list of open source and proprietary desktop agents, see "Platform providers" here.) FDC3 is successfully running on Web and Native platforms in financial institutions around the world.
By providing support for FDC3, vendors and financial organizations alike can avoid the bilateral or trilateral integration projects that plague desktop app roll-out, cause vendor lock-in and result in a slow pace of change on the Financial Services desktop.
FDC3 is developed collaboratively by a consortium of industry participants including banks, agent vendors, app developers and FinTech firms. By design, FDC3 is open to extension. We have an active community working on growing and improving the standard with new data and intents.
FDC3 includes a standardized API for a Desktop agent, an OpenAPI App Directory, standard verbs to invoke actions between applications (called "intents"), standard formats for data passed between applications (called "context data") and a wire-protocol for Desktop Agents to communicate with each other (called "Desktop Agent Bridging").
Hence, the standard currently consists of five parts:
The specifications are informed by agreed business use cases, and implemented and used by leading financial industry participants.
- See https://fdc3.finos.org for more information, including on Compliance and the FDC3 charter, as well as a comprehensive API Reference.
- You can also take the free FDC3 Training for an introduction to FDC3's core concepts and usage.
- The FDC3 Community Page Training Tab also contains a selection of online resources to browse.
- FINOS' open source Desktop Agent, FDC3 Sail project written with Node / Electron.
- As an open standard, FDC3 can be implemented on any platform and in any language.
- All that is required is a "desktop agent" that supports the FDC3 standard, which is responsible for coordinating application interactions.
- Get started using FDC3 on the web with TypeScript by reading the supported platforms page.
This project (the FDC3 Standard repo) is now a monorepo containing the following modules:
| Directory | Release Coordinates | Purpose | Testing / Coverage |
|---|---|---|---|
packages/fdc3-schema |
@finos/fdc3-schema (npm) |
Contains the FDC3 For The Web and Desktop Agent Bridging protocol schemas. Generates BridgingTypes.ts and BrowserTypes.ts versions of those schemas for consumption in typescript code. |
n/a |
packages/fdc3-context |
@finos/fdc3-context (npm) |
Contains the schemas for standard FDC3 context types. Generates the ContextTypes.ts typescript version of the schema for consumption in typescript/javascript. |
n/a |
packages/fdc3-standard |
@finos/fdc3-standard (npm) |
Interface definitions for the FDC3 standard in typescript (e.g. the DesktopAgent interface) and the app directory schema. |
Jest, embedded NYC |
packages/fdc3-agent-proxy |
@finos/fdc3-agent-proxy (npm) |
Contains a complete implementation of the FDC3 DACP. Written in a platform-agnostic manner. | Cucumber, NYC |
packages/fdc3-get-agent |
@finos/fdc3-get-agent (npm) |
Implements the getAgent and fdc3Ready() functions as well as the FDC3 Web Connection protocol to allow FDC3 to work on the web or in an electron container. |
Cucumber, NYC |
packages/testing |
-not released- | Contains testing tools used by the cucumber tests used within other modules of this project. | |
toolbox/fdc3-conformance |
-not released- | Contains definitions of the FDC3 conformance test suite | Test Definitions Only |
toolbox/fdc3-workbench |
here | Contains an FDC3-For-Web ready version of the FDC3 Workbench. | |
toolbox/fdc3-explained |
Here | Readme Here | |
toolbox/fdc3-for-web/fdc3-web-impl |
@finos/fdc3-web-impl (npm) |
Portable and reusable implementation of the FDC3 For-The-Web Desktop Agent-Side protocol, | Cucumber, NYC |
toolbox/fdc3-for-web/demo |
-not released- | A reference implementation of an FDC3-For-The-Web Desktop Agent, using the above implementation and conforming to the conformance test suite (see above) | |
packages/fdc3 |
@finos/fdc3 (npm) |
Imports fdc3-standard, fdc3-context, fdc3-schema and fdc3-get-agent sub-modules. This is intended to be the main entry point for typescript / javascript applications using FDC3 |
|
packages/fdc3-commonjs |
@finos/fdc3-commonjs (npm) |
A roll-up of the fdc3 sub-module. This is for backwards compatibility where CommonJS is required. May not be provided in future versions of FDC3. |
From the root package, you can run npm run build to build all the modules, or npm run test to run all the tests. npm run dev will start the demo and fdc3-workbench modules. You can play with both of these components in your browser at http://localhost:4000/static/da/index.html. Additionally, the conformance suite is included as one of the demo apps, and can also be run.
For installation and usage instructions, see: https://fdc3.finos.org/docs/supported-platforms#usage
Publishing to npm is handled automatically by the Publish To NPM GitHub Actions workflow, which is triggered when a GitHub Release is published. The workflow will lint, test and build the project, then publish all public workspace packages to both npmjs.org and GitHub Packages.
The npm dist-tag is determined by the version in the root package.json: versions containing a hyphen (e.g. 2.3.0-beta.1) are published with the prerelease tag, while all other versions are published with the latest tag.
- Create a release branch
git checkout -b release/v2.3- Update version numbers
All workspace versions and the root package.json version must match. Update them as follows:
npm version <new-version> --include-workspace-root --workspaces
npm run syncpack # synchronizes @finos/* dependency versions and verifies consistency
npm up # fixes node_module references
npm run build # builds all modules against the new versionThe syncpack script will automatically run version-check to verify that the root version matches all public workspace versions. You can also run npm run version-check independently at any time.
- Push the branch and create a PR
git add .
git commit -m "Updated to version v2.3.0"
git push origin release/v2.3Create a PR to merge the release branch into main. You will need other FDC3 maintainers to review and approve the PR.
- Create a GitHub Release to publish to npm
Once the PR is merged, create a new GitHub Release targeting the main branch. Publishing the release will trigger the workflow, which will publish all packages to npm and GitHub Packages.
The workflow also runs a version consistency check before publishing — if the root version doesn't match the workspace versions, the workflow will fail before any packages are published.
Please see instructions in the website README.
If you are an existing individual or corporate user of the FDC3 standard, we would love to hear from you: just email fdc3@finos.org with details about how you are using the standard.
- If you'd like to be listed as on the community page, please fill out the Usage Form.
- If listing your logo publicly requires legal evaluation, you can reach out privately to the FDC3 Maintainers.
- FDC3 activity primarily happens in this FDC3 GitHub repository. Watch the repository in order to be notified of new Pull Requests and issues.
- The fastest and more interactive way to connect and ask questions to the FDC3 community is to join the #fdc3 channel on the FINOS slack.
- If you'd like to receive official updates, and/or you don't have access to Slack, please send an email to fdc3@finos.org. You can join the list by sending an email to fdc3+subscribe@finos.org.
- To contact the FDC3 maintainers, send an email to fdc3-maintainers@finos.org.
Another great way to interact with the community is to attend one of the following meetings:
- FDC3 General Meeting - Every 6 months on the third Tuesday (Join Meeting)
- FDC3 Identity & Security Working Group - Monthly on the second Thursday (Join Meeting)
- FDC3 Standard Working Group - Monthly on the fourth Thursday (Join Meeting)
- FDC3 Use Cases and Workflows Discussion Group - Monthly on the first Thursday (Join Meeting)
- FDC3 Web Browsers + Bridging Discussion group - Monthly on the third Thursday (Join Meeting)
Also consider:
- FDC3 Sail Project Meeting - Every 2 weeks on Mondays (Join Meeting)
- Email fdc3@finos.org if you need help getting started in the FDC3 Community.
- If you encounter technical difficulties accessing repositories, joining Slack, mailing lists or meetings, please email help@finos.org.
Work on FDC3 is split into several discussion groups and releases.
-
Discussion groups each have their own regular meetings in the FINOS Community Calendar.
-
Releases can be tracked on the FDC3 Milestones page.
Please see the Contributing guide for details on how to contribute to FDC3.
NOTE:
- Issues that change the Standard usually need discussion. You can post comments directly on the issue or can ask for it to be added to a Standards Working Group meeting agenda by emailing fdc3@finos.org, sending a message to the #fdc3 channel on the FINOS slack or tag the FDC3 maintainers (
@finos/fdc3-maintainers) in your issue. - Contributions merged into the main branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the FDC3 Governance document), which must be approved by a Standard Working Group vote before it is accepted as a draft and subsequently released as the next version of the Standard.
If you or your firm intends to make use of the FDC3 Standard (by implementing a Desktop Agent or App Directory, by adding support to apps to interoperate with others via FDC3, or even by using apps, Desktop Agents or App Directories written by others) then contributing to the governance, maintenance and onward development of the FDC3 Standard will help to protect and strengthen the ecosystem developing around FDC3. Doing so will also empower you to help guide the Standard in directions that are relevant to your use or that of your firm.
If you or your firm are new to contributing to open source projects, please see the variety of resources available from FINOS, (such as the Open Source readiness project), Linux Foundation (Participating in Open Source communities) and others (e.g. opensource.guide).
Please refer to the FDC3 Governance document for details of the different roles on the FDC3 project.
Participants of FINOS standards projects should follow the FINOS Code of Conduct, which can be found at: https://community.finos.org/docs/governance/code-of-conduct
-
This version of the FDC3 Standard is licensed under the Community Specification License. SPDX-License-Identifier: Community-Spec-1.0.
-
Reference implementations and other software contained in FDC3 repositories is licensed under the Apache License, Version 2.0. SPDX-License-Identifier: Apache-2.0.
-
See Licenses in the FDC3 Charter for details of licensing for previous versions of the FDC3 Standard and NOTICES.md for details of license acceptance, withdrawals and exclusions.
-
See Intellectual Property Claims in the FDC3 Charter for details of patents in the 1.1-present versions of FDC3.
-
See PATENTS-FDC3-1.0 for details of patents in the 1.0 version of FDC3.
Please see our Security Policy
Users of the FDC3 standard are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.
THIS STANDARD IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NON-INFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS STANDARD SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE FOUNDATION, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS STANDARD.
An archive of FDC3 documentation and meeting notes from the early days of FDC3 is available at https://finosfoundation.atlassian.net/wiki/spaces/FDC3/overview. Later meeting minutes cam be found in closed Github issues.
The mailing list archive for fdc3@finos.org is available at https://groups.google.com/a/finos.org/g/fdc3
