Skip to content

Commit

Permalink
Chore: ADR Review (#252)
Browse files Browse the repository at this point in the history
* Move ADR Status to Top

* Change State: Approved --> Accepted

* Change State: Draft --> Proposed

* Compose --> ComposeUI

* Add New ADR Header

* Add Missing License Headers

* Suggestion --> Record

* Change to Upper-case: Requirements
  • Loading branch information
kruplm authored Jul 20, 2023
1 parent b9b7611 commit 2bd8d60
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 51 deletions.
9 changes: 5 additions & 4 deletions architecture/adr-001-use-adrs.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-001 | Accepted | Use ADRs |


# Architecture Decision Record: Use ADRs

## Context
Expand Down Expand Up @@ -51,10 +56,6 @@ The workflow will be:
removed or otherwise modified except for the annotation pointing to
the new ADR.

## Status

Approved

## Consequences

1. Developers must write an ADR and submit it for review before
Expand Down
9 changes: 5 additions & 4 deletions architecture/adr-002-configuration.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-002 | Accepted | Configuration |


# Architecture Decision Record: Configuration

## Context
Expand Down Expand Up @@ -47,10 +52,6 @@ and define entity types specific to its own domain. Modules may
interact by referencing entity types and properties defined in other
modules.

## Status

Approved

## Consequences

- Applications will be defined comprehensively and declaratively by a
Expand Down
9 changes: 5 additions & 4 deletions architecture/adr-003-solution-and-project-structure.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-003 | Accepted | Solution and Project Structure |


# Architecture Decision Record: Solution and Project Structure

## Context
Expand All @@ -20,10 +25,6 @@ technology and its capabilities or best practices.
repeatedly entered into the csproj files
- We would use automated tooling to achieve the maintenance of Dependencies.props file

## Status

Approved

## Consequences

- We would need to implement an automated tooling for csproj maintenance
Expand Down
10 changes: 6 additions & 4 deletions architecture/adr-004-module-loading.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-004 | Accepted | Module Structure and Loading |


# Architecture Decision Record: Module Structure & Loading

## Context
Expand Down Expand Up @@ -27,10 +33,6 @@ Some of the general problems associated with plugin/module systems include:
- Communication would be based on the internal messaging bus between them
- Smart defaults would be provided to enable easy startup and to avoid 22 catch problem

## Status

Approved

## Consequences

- Applications could chose between a multitude of different config stores for storing their modules and a number of ways to load them
Expand Down
10 changes: 6 additions & 4 deletions architecture/adr-005-messaging.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-005 | Accepted | Messaging |


# Architecture Decision Record: Messaging

## Context
Expand Down Expand Up @@ -40,10 +46,6 @@ There are multiple advantages when it comes to SignalR:
The message router is going to be an ASP.NET Core-based backend service that exposes one or more endpoints/SignalR Hubs
that the applications can connect to.

## Status

Approved

## Consequences

- Applications that normally consist of multiple processes (e.g. trading applications) won't have to setup their own
Expand Down
10 changes: 6 additions & 4 deletions architecture/adr-006-observability.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-006 | Accepted | Observability |


# Architecture Decision Record: Observability

## Context
Expand All @@ -24,10 +30,6 @@ ComposeUI needs to collect and emit these data to provide the ability for users
- **Logs**
ComposeUI logs are going to be enriched with trace context in order to correlate traces with logs.

## Status

Approved

## Consequences

- OpenTelemetry provides a unified standard for creating and ingesting telemetry data.
Expand Down
9 changes: 5 additions & 4 deletions architecture/adr-007-use-c4.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-007 | Accepted | Use of C4 |


# Architecture Decision Record: Use of C4

## Context
Expand All @@ -20,10 +25,6 @@ Within ComposeUI, we are to position C4 as the preferred way to capture system a

To describe the actual C4, we would use PlantUML extensions and rendering.

## Status

Approved

## Consequences

- Instead of pictures, we would store C4 diagram descriptions via PlantUML in the repo
Expand Down
15 changes: 8 additions & 7 deletions architecture/adr-008-module-security.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-008 | Accepted | Module Communication Security |


# Architecture Decision Record: Module Communication Security

## Context

ComposeUI is modular, and although the core and loader are responsible for loading a module, the only
way for a module to interact with Compose modules is via the Message Router. Therefore the communication
way for a module to interact with ComposeUI modules is via the Message Router. Therefore the communication
needs to be secure so that the other modules can be sure that the messages are coming from a trusted source.

The aim of this ADR is to establish what type of security measures are going to be implemented.
Expand All @@ -20,14 +25,14 @@ necessary.
These are the scenarios that we account for:
1. A .NET assembly is loaded by Compose
- We can verify it by using Authenticode
2. A Web application is loaded into a Compose embedded browser
2. A Web application is loaded into a ComposeUI embedded browser
- We will use WebView2 and verify the URL that is loaded
- We can intercept any navigation event and check the new URL against an allowed URL/domain list
3. A Web application loaded into a desktop browser (i.e. Chrome)
- We can use OAuth to authenticate the web app

We distribute a generated token offline to each client app developer team.
They bundle the token into the application. The app sends this token to Compose when connecting.
They bundle the token into the application. The app sends this token to ComposeUI when connecting.
This token identifies the app and it can also be used to associate entitlements with the app.

Once we verify that it is a valid token, we allow the app to connect to the Message Router.
Expand All @@ -44,10 +49,6 @@ we reject the connection in this case.
- Provide an option for the application to opt-out of authentication
- We mark modules/apps that are not identified with an "anonymous" flag

## Status

Approved

## Consequences
- Modules need a token to connect to the central Message Router
- The app can choose (by config) to allow unauthenticated modules to communicate
Expand Down
11 changes: 6 additions & 5 deletions architecture/adr-009-message-router.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

# Architecture Decision Record: Message Router requirements
| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-009 | Proposed | Message Router Requirements |


# Architecture Decision Record: Message Router Requirements

## Context

Expand Down Expand Up @@ -63,10 +68,6 @@ topic should receive messages in the order in which the publisher sent them;

For cross-machine communication, no such guarantees are provided.

## Status

Draft

## Consequences

For the MVP, we must define supported communication protocols early on, as language bindings must also support them.
Expand Down
11 changes: 7 additions & 4 deletions architecture/adr-010-built-in-apis.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-010 | Proposed | Built-in APIs should be built on top of the Message Router |


# Architecture Decision Record: Built-in APIs should be built on top of the Message Router

## Context
Expand Down Expand Up @@ -25,10 +32,6 @@ Adding a new protocol binding will only require us to implement communication wi
Supporting one more platform will require a new client library with at least one protocol binding, each supported protocol having a fixed number of endpoints (those that communicate
with the Message Router).

## Status

Draft

## Consequences

This decision affects the design of our APIs. We will have a message-based architecture
Expand Down
18 changes: 11 additions & 7 deletions architecture/adr-011-process-ownership.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
# Architecture Decision Suggestion: Process Ownership
<!-- Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

| Type | ID | Status | Title |
| ------------- | ------------- | ------------- | ------------- |
| ADR | adr-011 | Accepted | Process Ownership |


# Architecture Decision Record: Process Ownership

## Context
ComposeUI aims to support many different kind of modules and applications, offering the possibility to use different graphical shells for displaying them. One of the main features is the possibility to run these applications (even ones without any intended compose integration) in isolated processes. We wish to provide features for monitoring the state of the applications and the possibility to e.g. restart crashed processes. In this ADR we decide what components of Compose are responsible for starting and maintaining processes.
ComposeUI aims to support many different kind of modules and applications, offering the possibility to use different graphical shells for displaying them. One of the main features is the possibility to run these applications (even ones without any intended ComposeUI integration) in isolated processes. We wish to provide features for monitoring the state of the applications and the possibility to e.g. restart crashed processes. In this ADR we decide what components of ComposeUI are responsible for starting and maintaining processes.

## Decision
- The central components of Compose are the owners of processes with exclusive rights to start and stop processes
- The central components of ComposeUI are the owners of processes with exclusive rights to start and stop processes
- The shell or other modules must request starting or stopping processes via the interface of the core components
- The core components are responsible for tracking process lifecycle and notifying about changes

## Status
Approved

## Consequences
- Compose core must provide a complete solution for handling process lifecycle
- ComposeUI core must provide a complete solution for handling process lifecycle
- We gain the ability to present advanced lifecycle handling features for modules developed with ComposeUI in mind
- We need to design the interface for process handling in a way that suits the needs of desired scenarios
- We need to design the interface for process handling in an extensible way so older shells/applications can work with newer versions of ComposeUI central components.
Expand Down

0 comments on commit 2bd8d60

Please sign in to comment.