Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 3.08 KB

contribute.md

File metadata and controls

50 lines (39 loc) · 3.08 KB

Contributing

Workspace Setup

The LCR project uses the FINOS Morphir project so requires Morphir installation.

The quick summary is:

  1. Create a fork of this project and clone it to your workspace (requires git to be installed).
  2. Be sure to install npm
  3. Install the Morphir command line tool with: npm install morphir
  4. Compile the CLR with: npx morphir-elm make -f
  5. Interact with: npx morphir-elm develop -o localhost (the lcr function is a good starting point).

Code Organization

The code is organized in two sections:

Data Definitions

The 2052a spec defines data types and the structure of the tables it requires to be supplied to run. The project places those in the FR2052A module.

  • The business glossary (data types) are in the Fields sub-module.
  • The table structures and asset class specific field definitions are in the DataTables module, which is further split into Inflows, Outflows, and Supplemental modules.

Rules and Calculations

The various rules and calculations are in the LCR module. [TODO: Add more detail about the sub-modules]

Sample Scala runtime

There is a sample runtime to demonstrate calling the LCR as a library in Scala. The code can be found at SimpleApp.

What To Contribute

There are a few main opportunities for contribution:

Updates to LCR Implementation

Parts of the LCR have been left unimplemented in order to experience collaborating on regulations in open-source. These include:

Testing

  • Unit Tests - Many of the rules don't have unit tests. Unit tests would be useful for managing future changes and development. Tests can be created by using the Morphir Develop app or by generation based on the rule predicates.
  • Acceptance Tests - We need a test harness with realistic data that produces an expected result. That's challenging to do in open-source. Options include donation of previously built tests, scrubbed data, or synthetic data generation.