Morphir is a multi-language system built on a data format that captures an application's domain model and business logic in a technology agnostic manner. Having all the business knowledge available as data allows you to process it programatically in various ways:
- Translate it to move between languages and platforms effortlessly as technology evolves
- Visualize it to turn black-box logic into insightful explanations for your business users
- Share it across different departments or organizations for consistent interpretation
- Store it to retrieve and explain earlier versions of the logic in seconds
- and much more ...
Read more Morphir documentation
The heart of Morphir is an intermediate representation that captures the domain model and business logic of your application. Our main serialization format is JSON for maximum language interoperability. This repo will contain the specification of the JSON format in the near future. While we are working on it you can check out the documentation of the corresponding Elm library to get an idea on the structure.
Core
- morphir - The core IR data structure and common SDK.
- morphir-examples - Examples of various types of Morphir modeling (mostly in Elm).
Frontends
- morphir-elm - Enabling Elm as a Morphir modeling language.
- morphir-bosque - Enabling Bosque as a Morphir modeling language.
- morphir-dotnet - Enabling F# as a Morphir modeling language and for .NET as a backend target.
Backends
- morphir-dapr - Enabling Microsoft's Dapr as a target application model platform.
- morphir-jvm - Enabling various JVM technologies as targets for Morphir model execution.
- morphir-dotnet - Support for using F# as a Morphir modeling language and for .NET as a backend target.
The quickest way to start is to use the Morphir Elm tooling. You can find instructions here.
Morphir tools can be used to optimize a wide range of development tasks. For example, Morphir can be used to define and automated development of an entire service. The Morphir Dapr project is example of this.
Another good use of Morphir is to define shared rules than can be used across heterogeneous systems. This can be useful for initiatives like open-source Reg Tech models that are shared across firms. Morphir LCR presents a good example of this.
More Morphir examples can be found at Morphir Examples.
Morphir is a collection of tools. Each tool is in its own repo with its own installation instructions. The main development tools, and the best place to get started, are currently in Morphir Elm.
List the roadmap steps; alternatively link the Confluence Wiki page where the project roadmap is published.
- Enhanced Scala support
- Further enhancements for Application modeling with Dapr and Spring Boot.
- Support for Microsoft's Bosque language for defining models.
- Modeling queries and aggregations across databases and event processing.
- Fork it (https://github.com/finos/morphir/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Read our contribution guidelines and Community Code of Conduct
- Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email [email protected]
Join Morphir on the FINOS Slack by signing up at https://finos-lf.slack.com/. The Morphir channel on Slack is found directly at https://finos-lf.slack.com/messages/morphir/.
Reach out to [email protected] for any issues when joining CSC on the FINOS Slack.
Copyright 2020 FINOS
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0