Skip to content

Commit

Permalink
After some reorganization of the sidebar
Browse files Browse the repository at this point in the history
  • Loading branch information
KindsonTheGenius committed Apr 26, 2023
1 parent 117ca3e commit 2b35f0c
Show file tree
Hide file tree
Showing 41 changed files with 272 additions and 114 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Morphir consists of a few projects based on the features they provide.
| Introduction & Background | Using Morphir | Applicability |
| :------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |
| [Resource Centre](https://resources.finos.org/morphir/) | [What Makes a Good Model](./docs/what-makes-a-good-domain-model.md) | [Sharing Business Logic Across Application Boundaries](./docs/shared_logic_modeling.md) |
| [Background](./docs/background.md) | [Development Automation (Dev Bots)](./docs/dev-bots.md) | [Regulatory Technology](./docs/regtech-modeling.md) |
| [Background](docs/Morphir%20Overview/background.md) | [Development Automation (Dev Bots)](./docs/dev-bots.md) | [Regulatory Technology](./docs/regtech-modeling.md) |
| [Community](./docs/morphir-community.md) | [Modeling an Application](./docs/application-modeling.md) | |
| [What's it all about?](./docs/whats-it-about.md) | [Modeling Decision Tables](https://github.com/finos/morphir-examples/tree/master/src/Morphir/Sample/Rules) | |
| [Why we use Functional Programming?](./docs/why-functional-programming.md) | [Modeling for database developers](docs/modeling-for-database-developers.md) |
Expand Down
176 changes: 88 additions & 88 deletions docs/background.md → docs/Morphir Overview/background.md
Original file line number Diff line number Diff line change
@@ -1,88 +1,88 @@
---
sidebar_position: 2
id: background-story
title: The Morphir Background Story
---

# The Morphir Background Story

Morphir evolved from years of frustration trying to work around technical limitations to adequately model business concepts. Then after so much effort and pain, we inevitably have to start over to adapt to some new technology. This came to a head when one of our businesses suddenly faced a convergence of major new business requirements and technical upgrades that required yet another major rewrite. There was so much work to be done and so much frustration from our business clients that they issued the challenge below...

## The Challenge

> **Stop the cycle of rewrites** - Our users recognized that we were in a constant cycle of upgrading technology. Each pass in the cycle required significant effort and posed the risk of implementing core business logic incorrectly.
> **Stop making us use multiple applications with inconsistent values** - Our users noticed that different systems came to different results for what should have theoretically been the same calculations. As a result, they had to navigate across applications to get the information they needed.
> **Show us that the system is behaving correctly** - Our users demanded that if we were going to rewrite core business logic again, we needed to provide transparency so that they could understand exactly how the system was behaving with respect to the business.
> **Deliver faster** - A never ending, desired request.
## Common Cause

This challenge made us re-examine our whole development process. It soon became clear that there was a theme across them: **the fundamental issue was the fact that the business knowledge was tightly wrapped into the technologies of the moment**. It stood to reason that freeing the business knowledge from the technology would address these challenges. That's the approach we took and that is what eventually evolved into Morphir.

## Morphir In Action

Let's take a look at what that all means and how Morphir works to address these challenges. Let's consider a component of an online store application. The purpose of this application is to decide on:

### Promoting Business Knowledge

The business concepts underlying your application are its most valuable asset. It's often difficult to discern
business concepts when they're embedded within platform and execution code. On top of that, many programming languages
are so full of abstractions that it can become difficult to understand the business meaning at all.

Morphir tackles this challenge in a few ways. First, it provides a common structure to save business concepts, including
both data and logic. This is the Morphir IR. The key to this structure is that it focuses solely on business logic and
data. No side effects (like saving to a database or reading from a file) are allowed. The IR is the core to Morphir and
allows it to work across languages and platforms.

Having an application's business knowledge in a common data structure allows teams to build useful tools that promote
knowledge dissemination. Some useful examples include interactive visualizations that allow users to understand the
application's logic, interactive audit tools to replay calculations interactively, automatic data dictionary and data
lineage registration, and more.

The combination of these creates an ecosystem where users, new developers, and support personnel can gain insight into
an application interactively without requiring developers to go back and study stale documentation and arcane code.

### Showing Correctness

If you're going to treat business knowledge as a valuable asset, you want to make sure that it's correct. Morphir's use
of functional programming structures that are tuned towards codifying business concepts eliminates many of the bugs that
are common in less concise tools. This is really just the beginning of the story. What's even more powerful is the fact
that Morphir is compatible with a variety of source languages, so it can take advantage of the powerful tools that they
offer. We currently support the [Elm programming language](http://elm-lang.org) due to its simplicity and power. The Elm
compiler is supercharged to catch huge classes of bugs. The common saying is that if it compiles, it's guaranteed not to
have runtime errors (excluding limitations of the physical environment, of course). Another particularly exciting
language is Microsoft's [Bosque programming language](https://github.com/microsoft/BosqueLanguage), which takes the
ability to verify program correctness up whole other level. Keep an eye out for further progress in this space.

Finally, the aforementioned business knowledge tools are a big help in establishing correctness. When users have the
ability to fully understand the system with helpful tools in real-time, it makes the user/developer feedback cycle very
efficient.

### Delivering Faster

An important role of developers is to decide how the business concepts fit into an executable computer system. Once
that shape is decided, a great deal of the actual coding is very repetative and templated. Add to this the various best
practices and team standards and you get a lot of boilerplate code that can be automated for faster production with
fewer errors. Morphir relies heavily on such automation, which we call Dev Bots. As with any automation, smart use can
lead to drastic efficiency improvements, like taking seconds to generate what a developer would take days to
produce. Check out the [Dev Bot post](dev-bots) for more information on this topic.

### Eliminating Rewrites

Technology is evolving ever more quickly. It is no longer feasible to stay competitive if you need to completely rewrite
you application every time you want to upgrade to newer technologies. That's especially true if there is a risk of
getting your core business logic wrong in a rewrite. In addition to automating boilerplate code, Morphir Dev Bots convert
Morphir IR into system code. This means the same Morphir model can run in different technologies. And with the business
concepts protected in the Morphir model, there's no risk to losing it with the next big technology. Keep an eye out for
the evolving list of target environments available in the Morphir ecosystem. Or, if you need something that's not there,
Morphir provides the tools to do it yourself.

# Summing Up

Hopefully this gives a good background into what Morphir does and why. If you have any questions or comments, feel free
to drop us a note through the [Morphir project](https://github.com/finos/morphir).

[Home](/index) | [Posts](posts) | [Examples](https://github.com/finos/morphir-examples/)
---
sidebar_position: 2
id: background-story
title: The Morphir Background Story
---

# The Morphir Background Story

Morphir evolved from years of frustration trying to work around technical limitations to adequately model business concepts. Then after so much effort and pain, we inevitably have to start over to adapt to some new technology. This came to a head when one of our businesses suddenly faced a convergence of major new business requirements and technical upgrades that required yet another major rewrite. There was so much work to be done and so much frustration from our business clients that they issued the challenge below...

## The Challenge

> **Stop the cycle of rewrites** - Our users recognized that we were in a constant cycle of upgrading technology. Each pass in the cycle required significant effort and posed the risk of implementing core business logic incorrectly.
> **Stop making us use multiple applications with inconsistent values** - Our users noticed that different systems came to different results for what should have theoretically been the same calculations. As a result, they had to navigate across applications to get the information they needed.
> **Show us that the system is behaving correctly** - Our users demanded that if we were going to rewrite core business logic again, we needed to provide transparency so that they could understand exactly how the system was behaving with respect to the business.
> **Deliver faster** - A never ending, desired request.
## Common Cause

This challenge made us re-examine our whole development process. It soon became clear that there was a theme across them: **the fundamental issue was the fact that the business knowledge was tightly wrapped into the technologies of the moment**. It stood to reason that freeing the business knowledge from the technology would address these challenges. That's the approach we took and that is what eventually evolved into Morphir.

## Morphir In Action

Let's take a look at what that all means and how Morphir works to address these challenges. Let's consider a component of an online store application. The purpose of this application is to decide on:

### Promoting Business Knowledge

The business concepts underlying your application are its most valuable asset. It's often difficult to discern
business concepts when they're embedded within platform and execution code. On top of that, many programming languages
are so full of abstractions that it can become difficult to understand the business meaning at all.

Morphir tackles this challenge in a few ways. First, it provides a common structure to save business concepts, including
both data and logic. This is the Morphir IR. The key to this structure is that it focuses solely on business logic and
data. No side effects (like saving to a database or reading from a file) are allowed. The IR is the core to Morphir and
allows it to work across languages and platforms.

Having an application's business knowledge in a common data structure allows teams to build useful tools that promote
knowledge dissemination. Some useful examples include interactive visualizations that allow users to understand the
application's logic, interactive audit tools to replay calculations interactively, automatic data dictionary and data
lineage registration, and more.

The combination of these creates an ecosystem where users, new developers, and support personnel can gain insight into
an application interactively without requiring developers to go back and study stale documentation and arcane code.

### Showing Correctness

If you're going to treat business knowledge as a valuable asset, you want to make sure that it's correct. Morphir's use
of functional programming structures that are tuned towards codifying business concepts eliminates many of the bugs that
are common in less concise tools. This is really just the beginning of the story. What's even more powerful is the fact
that Morphir is compatible with a variety of source languages, so it can take advantage of the powerful tools that they
offer. We currently support the [Elm programming language](http://elm-lang.org) due to its simplicity and power. The Elm
compiler is supercharged to catch huge classes of bugs. The common saying is that if it compiles, it's guaranteed not to
have runtime errors (excluding limitations of the physical environment, of course). Another particularly exciting
language is Microsoft's [Bosque programming language](https://github.com/microsoft/BosqueLanguage), which takes the
ability to verify program correctness up whole other level. Keep an eye out for further progress in this space.

Finally, the aforementioned business knowledge tools are a big help in establishing correctness. When users have the
ability to fully understand the system with helpful tools in real-time, it makes the user/developer feedback cycle very
efficient.

### Delivering Faster

An important role of developers is to decide how the business concepts fit into an executable computer system. Once
that shape is decided, a great deal of the actual coding is very repetative and templated. Add to this the various best
practices and team standards and you get a lot of boilerplate code that can be automated for faster production with
fewer errors. Morphir relies heavily on such automation, which we call Dev Bots. As with any automation, smart use can
lead to drastic efficiency improvements, like taking seconds to generate what a developer would take days to
produce. Check out the [Dev Bot post](dev-bots) for more information on this topic.

### Eliminating Rewrites

Technology is evolving ever more quickly. It is no longer feasible to stay competitive if you need to completely rewrite
you application every time you want to upgrade to newer technologies. That's especially true if there is a risk of
getting your core business logic wrong in a rewrite. In addition to automating boilerplate code, Morphir Dev Bots convert
Morphir IR into system code. This means the same Morphir model can run in different technologies. And with the business
concepts protected in the Morphir model, there's no risk to losing it with the next big technology. Keep an eye out for
the evolving list of target environments available in the Morphir ecosystem. Or, if you need something that's not there,
Morphir provides the tools to do it yourself.

# Summing Up

Hopefully this gives a good background into what Morphir does and why. If you have any questions or comments, feel free
to drop us a note through the [Morphir project](https://github.com/finos/morphir).

[Home](/index) | [Posts](posts) | [Examples](https://github.com/finos/morphir-examples/)
5 changes: 2 additions & 3 deletions docs/application-modeling.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
sidebar_position: 4
id: modeling-applications
title: Modeling Entire Applications
id: modeling-entire-application
title: Modeling Entire Application
---

# Modeling Entire Applications
Expand Down
5 changes: 5 additions & 0 deletions docs/cadl-doc.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
id: morphir-cadl-mapping
title: Morphir-Cadl Mapping
---

# Morphir-Cadl Mapping
## [Morphir](https://package.elm-lang.org/packages/finos/morphir-elm/18.1.0/Morphir-IR-Type) to [Cadl Type](https://microsoft.github.io/cadl/docs/language-basics/type-relations/) Mappings
This is a documentation of the mapping strategy from Morphir types to Cadl types. This document describes how types in Morphir Models are represented in Cadl.
Expand Down
5 changes: 5 additions & 0 deletions docs/cli-cli2-merging-docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
id: cli-cli2-merging
title: Migrating From Old CLI To New CLI
---

# Migrating From Old CLI To New CLI
### Overview
This document contains cli commands that were migrated from the old cli, which is `morphir-elm`, into the new all cli commands supported by the old cli, and the **current** cli, `morphir`.
Expand Down
5 changes: 5 additions & 0 deletions docs/code-of-conduct.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
id: code-of-conduct
title: Contributor Covenant Code of Conduct
---

# Contributor Covenant Code of Conduct

## Our Pledge
Expand Down
5 changes: 5 additions & 0 deletions docs/codec-docs.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
id: codec-docs
title: JSON serialization for Scala
---

# JSON serialization support for generated Scala classes

The purpose of this documentation is to give an explanation on how the JSON Codec Backend works and how to use it.
Expand Down
4 changes: 4 additions & 0 deletions docs/command-line-tools.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: command-line-tools
title: Morphir Command Line Tools
---
# Morphir Command Line Tools

At the moment, Morphir provides two CLI programs that provide the tools that morphir offers, `morphir-elm` and `morphir`.
Expand Down
4 changes: 4 additions & 0 deletions docs/contributing.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: contribution-and-governance-policies
---

# Morphir Contribution and Governance Policies

This document describes the contribution process and governance policies of the FINOS Morphir project. The project is also governed by the Linux Foundation Antitrust Policy, and the FINOS IP Policy, Code of Conduct, Collaborative Principles, and Meeting Procedures.
Expand Down
5 changes: 5 additions & 0 deletions docs/contribution-guide-readme.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
id: contribution-guide
title: Contribution Guide
---

# Contribution Guide

The purpose of this document is to make it easier for new contributors to get up-to-speed on the project.
Expand Down
4 changes: 4 additions & 0 deletions docs/custom-attributes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: custom-attributes-users-guide
---

# Custom attributes user guide

The contents of this document detail how to structure and load optional "sidecar" files for the purposes of adding custom attributes to Morphir types and values. Custom attributes can assign extra information to business concepts that is otherwise not included in the Morphir IR.
Expand Down
4 changes: 4 additions & 0 deletions docs/decorators-users-guide.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: decorations-users-guide
---

# Decorations User Guide

The Morphir IR contains all the domain models and business logic that you defined in your model but sometimes
Expand Down
1 change: 0 additions & 1 deletion docs/dev-bots.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
sidebar_position: 5
id: dev-bots
title: Explaining Dev Bots
---
Expand Down
2 changes: 1 addition & 1 deletion docs/developer-guide-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Finally, it provides a step by step walk-throughs on how various Morphir compone
2. [Elm Incremental Frontend](#)
10. [The Morphir Backends](#)
1. [Scala Backend](scala-backend.md)
2. [Spark Backend](spark-backend.md)
2. [Spark Backend](spark-backend-api-documentation.md)
3. [Relational IR Backends](relational-backend.md)
4. [Scala Json Codecs Backend](scala-backend.md)
5. [Json Schema Backend](json-schema-mappings.md)
Expand Down
5 changes: 5 additions & 0 deletions docs/editor-setup.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
id: editor-setup
title: Editor Setup
---

# Editor Setup for Writing Business Logic
Morphir is designed to allow users to write business logic in multiple ways. That currently includes the following:

Expand Down
4 changes: 4 additions & 0 deletions docs/error-append-not-supported.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: error-append-not-supported
---

# Error Append not Supported
The ++ operator assumes a type inferencer that can tell the difference between String and List. These are the only
two types that are part of the `appendable` type-class. Until the type inferencer is available we will error out to
Expand Down
4 changes: 4 additions & 0 deletions docs/generating-json-schema.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: generating-json-schema
---

# Generating a JSON Schema
This document explains how to generate a JSON Schema. It covers how to specify code generation parameters via
commandline, configuration file and the Develop UI.
Expand Down
4 changes: 4 additions & 0 deletions docs/insight-readme.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
id: insight-api-guide
---

#Insight API Guide
The purpose of this document is how we can use Insight API into any UI.

Expand Down
Loading

0 comments on commit 2b35f0c

Please sign in to comment.