Community Blog

Community Blog

Introducing FDC3 1.1

April 23, 2020

The FDC3 community is delighted to announce the release of FDC3 1.1!  This is the first point update to the FDC3 standard since 1.0 was released a year ago. 1.1 has been an extremely collaborative process with active contribution and input from 10 different firms and a lot of input from teams putting 1.0 into production.  We especially want to give a huge thanks to all of the stakeholders who worked so hard to make this happen!

Be sure to check out the presentation that Nick Kolba, FDC3 Project Lead/Chair, gave during the FINOS virtual Meetup on April 1, 2020 below. It includes great information on FDC3 1.1.

What’s in 1.1?

The Channels API

The initial spec for FDC3 (1.0) standardized a very simple broadcast/listener model for apps to share context and punted additional complexity to implementers.  This left several open questions, such as:

  • What’s the best practice for groups of apps to share context in FDC3?
  • Can an app expect the same code for FDC3 context handling to behave consistently across multiple platforms?
  • How do apps link context across multiple FDC3 implementations?

The Channels API introduced in 1.1 addresses these issues and more by standardizing a number of patterns and practices common to financial platforms and providing developers with a consistent API to cover a wide range of use cases with FDC3.  

 

Color Linking

In financial platforms, end users often want to link windows together with the same context channel - usually through color coding.  The Channels API fully supports this use case!  

Apps can get a list of system provided channels, be joined to a channel so that any fdc3.broadcast events are routed on that channel, and leave channels.  This gives app developers a standard API they can code to once and have run consistently across any platform supporting FDC3.

 

fdc3-1-1

 

App Channels

App developers can also use the Channels API to define their own channels, creating ad hoc pub/sub services for their own data.  For example, a market data app can publish pricing alerts over its own channel, and platforms can publish utility services - such as theming information  - using the API. Application developers can use the standard FDC3 API across multiple platforms without needing to code to and maintain different logic for different message bus implementations.

 

New Context Data Types

With 1.1, 9 additional context data types are now standardized.  This work was done in collaboration with the FINOS Financial Objects project.  The new types are:

fdc3.contact

A person contact that can be engaged with through email, calling, messaging, CMS, etc.

fdc3.contactList

A collection of contacts, e.g. for chatting to or calling multiple contacts.

fdc3.country

An entity that can be used when referencing countries.

fdc3.instrument

A financial instrument from any asset class.

fdc3.instrumentList

A collection of instruments. Use this type for use cases that require not just a single instrument, but multiple (e.g. to populate a watchlist).

fdc3.organization

An entity that can be used when referencing private companies and other organizations where a specific instrument is not available or desired e.g. CRM and News workflows.

fdc3.portfolio

A financial portfolio made up of multiple positions (holdings) in several instruments. Contrast this with e.g. the InstrumentList type, which is just a list of instruments.

fdc3.position

A financial position made up of an instrument and a holding in that instrument. This type is a good example of how new context types can be composed from existing types.

Note that the list types as well as fdc3.position and fdc3.portfolio (a list of positions) compose other context data types into a composite type.  

 

Developer Experience

In response to feedback from our community, we’ve put a stronger focusing on supporting FDC3 developers through improved documentation, ergonomics, and tooling.

 

Published Schemas

A question we often heard with FDC3 1.0, is how can consumers access officially versioned schemas for key elements of the standard. The schema definition files for all context data types and for the FDC3 app directory now have versioned URIs that can be referenced directly, e.g. for code generation and validation.

For example, the schema for version 1.1 of the app directory is now published at: https://fdc3.finos.org/schemas/1.1/app-directory.yaml, and the base context data schema is published as: https://fdc3.finos.org/schemas/1.1/context.schema.json.

 

Improved Documentation

In the 1.1 documentation we’ve expanded the API specifications to address questions raised by the community post-1.0.  We also added many more code examples for the API. 1.1 documentation also introduces reference sections for both Context and Intents which provide definitions and details of each type, along with code examples and links to related types.  

 

Easier APIs

A big piece of feedback we saw from 1.0 implementation, was that developers had to write too much filtering logic in their handler functions when using fdc3.addContextListener.  

 

For example:

const listener = fdc3.addContextListener(context => {

    //check for instrument

    if (context.type === 'fdc3.instrument'){

        ...

    }

    //check for contact

    else if (context.type === 'fdc3.contact'){

        ...

    }

});

 

We added an optional context-type filter arg to the API.  In 1.1, the above can be written as:

const contactListener = fdc3.addContextListener('fdc3.contact', 

    context => {

        ...

});

 

const instrumentListener = fdc3.addContextListener('fdc3.instrument',

    context => {

        ...

});

 

Producing much cleaner code and finer controls when managing listeners.

 

More Tools

Finally, new tooling projects, while not specifically part of 1.1, have gotten underway to make FDC3 easier to work with.  Look for more in this area coming from FDC3 and FINOS soon.

 

What’s Next?

We’re really excited about what’s coming next for FDC3.  Key areas we expect the community to be focusing on this year will be:

  • Expanded context data and intents definitions - especially in the areas of data interoperability
  • Expanded specifications for the App Directory
  • Increased support for developers with more tooling and accelerator projects

As always, this is a community effort and we welcome and encourage everyone to get involved! You can do so by reaching out to us on Github or at fdc3@finos.org.  

 

WATCH THE REPLAY OF NICK'S FDC3 1.1 PRESENTATION FROM THE FINOS VIRTUAL "MEETUP"

 

 

DOWNLOAD THE SLIDES

 

FINOS-meetup-guest-speaker-nick-kolba-social-1

 

Thanks! 

~ FINOS FDC3 Team

 

Interested in this FINOS open source project, or any of our other projects? Click the link below to see how to get involved in the FINOS Community.

Get Involved