Skip to content

RBirdwatcher/rosetta-dsl

 
 

Repository files navigation

Overview of the Rosetta DSL

Continuous Integration: Codefresh build status
License: Apache 2.0

What is the Rosetta DSL

Rosetta is a Domain-Specific Language (DSL) designed for the financial industry, which purpose is to consolidate market standards and operational practices into a cohesive domain model (or simply model). In software engineering, a domain model is a conceptual model of the domain that incorporates both data and behaviour (i.e. rules and processes).

The key idea behind Rosetta is that financial markets presently have two unappealing characteristics in support of electronic data representation:

  • Variety of data representations. The plurality of data standards (the main ones being FIX, FpML, ISO 20022 and EFET) is compounded by the many variations in the implementation of those, to which we need to add a wide range of proprietary data representations.
  • Limited availability of native digital tools that would allow those data representations to be directly translated into executable code. Even the protocols that have a native digital representation (e.g. FpML and FIXML, which are available in the form of XML schemas) have associated specifications artefacts which require further manual specification and/or coding in order to result in a complete executable solution. In FpML, this is the case of the associated validation rules. In FIX, an example of such are the Recommended Practices/Guidelines, which are only available in the form of PDF documents.

Rosetta addresses those shortcomings by enabling the consolidation of various data and workflow representations into a cohesive model (hence the naming reference to the Rosetta Stone). The model is automatically translated into executable code using code generators and can directly be used as part of an implementation stack.

Rosetta DSL Components

This open-source Rosetta DSL repository comprises 2 components:

  • Syntax, also known as a grammar
  • Code Generators, provided by default as Java

Syntax

All the modelling artefacts available in the Rosetta syntax are documented in the Rosetta Modelling Artefacts section. The syntax is used to express the model for the financial industry domain, which is referred to as a Common Domain Model (or CDM). The CDM is designed to be shared openly across all industry participants, hence the name Common.

The CDM is hosted separately from the Rosetta DSL in its own repository.

Code Generators

Code generators are key to remove the need for technologists to translate the model specifications into actual code. To make the model technology platform-agnostic while ensuring inter-operability of different implementations, these code generators are also open source.

Only default code generators are provided as part of the Rosetta DSL repository. A separate Code Generators repository allows the community to create and make available code generators in potentially any software language. The Code Generator documentation details the code generation mechanism and how to write and test one.

The ISDA CDM

The ISDA Common Domain Model is the first live application of the Rosetta DSL to the Derivatives markets. It is openly accessible through the CDM Portal, subject to the ISDA CDM licence.

For more details, please consult the ISDA CDM documentation or contact ISDA directly at marketinfrastructureandtechnology@isda.org

The Rosetta SDK

In order to use the Rosetta DSL that is open-source, a complete Software Development Kit (SDK) named Rosetta Core will be provided to the community (ETA 2019 Q3). Much like how software engineers use programming languages and tools to create software, it is useful to think of Rosetta Core as a set of tools to use when creating and editing the domain model.

Rosetta Core provides a complete adoption tool-kit for the DSL and the CDM, allowing firms to convert data files into CDM, edit and test the model to develop their own implementations, and contribute back to the CDM project.

About

The project containing the Rosetta grammar and default code generators

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Xtend 71.7%
  • Java 28.3%