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, implemented by the FDC3 Conformance Framework | 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 FDC3 2.0 from the FDC3 Conformance Framework | |
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.
For installation and usage instructions, see: https://fdc3.finos.org/docs/supported-platforms#usage
It's important that all of the versions of the submodules stay on the same version, and that the references between them are consistent to that version. To change the version number (say before or after a release) run the following:
// first, update version number in package.json
npm login
npm version <new version from package.json> --workspaces // changes the version number in all submodule package.json files
npm run syncpack // sycnhronizes version numbers
npm up // fixes node_module references
npm run build // builds all the modules against the new version
npm publish --access=public --workspaces // this step performs a manual release of the npm modules (not needed with GitHub actions releases)
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.
- Finally, another great way to interact with the community, is to attend the monthly FDC3 Standard Working Group Meeting and/or the quarterly FDC3 General Meeting.
- Email help@finos.org to be added to the meeting invite directly, or find the meeting in the FINOS Community Calendar.
- 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