From caa28ff9c769c4218b83adbf9b4c6467ecce6d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Russ?= Date: Thu, 10 Apr 2025 16:19:06 +0200 Subject: [PATCH] doc: Core, Bedrock and Distribution layers --- doc/adr/0001-record-architecture-decisions.md | 19 +++++++++ ...-distribution-as-base-layers-of-openscd.md | 40 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 doc/adr/0001-record-architecture-decisions.md create mode 100644 doc/adr/0002-core-badrock-and-distribution-as-base-layers-of-openscd.md diff --git a/doc/adr/0001-record-architecture-decisions.md b/doc/adr/0001-record-architecture-decisions.md new file mode 100644 index 0000000..db4ee0f --- /dev/null +++ b/doc/adr/0001-record-architecture-decisions.md @@ -0,0 +1,19 @@ +# 1. Record architecture decisions + +Date: 2025-04-10 + +## Status + +Accepted + +## Context + +We need to record the architectural decisions made on this project. + +## Decision + +We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). + +## Consequences + +See Michael Nygard's article, linked above. For a lightweight ADR toolset, see Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools). diff --git a/doc/adr/0002-core-badrock-and-distribution-as-base-layers-of-openscd.md b/doc/adr/0002-core-badrock-and-distribution-as-base-layers-of-openscd.md new file mode 100644 index 0000000..bc89280 --- /dev/null +++ b/doc/adr/0002-core-badrock-and-distribution-as-base-layers-of-openscd.md @@ -0,0 +1,40 @@ +# 2. Core, Badrock and Distribution as base layers of OpenSCD + +Date: 2025-04-10 + +## Status + +Accepted + +## Context + +As a community we would like to have a stable and UI technology agnostic API to use in our plugins and build on top of it. +Current, the name "OpenSCD Core" can lead to misunderstandings. It not only contains and API but it provides a ready-to-go UI, the plugin loading mechanism and other things. +However, we still need an API and specification, and a a quick way to create and configure a new distribution of OpenSCD. + +## Decision + +We will split up OpenSCD Core by its focus and target groups: + +```txt +┌──────────────────────┐ +│ Distribution │ +└──┬────────────────┬──┘ + │ Bedrock │ + └──┬──────────┬──┘ + │ Core │ + └──────────┘ +``` + +1. Distribution: It is for distributors who want to create a new instance of OpenSCD and tailor it for specific needs through possible configurations. + +2. Bedrock: You can use a given Bedrock to build your own OpenSCD distribution. It is a Web Component that you can easily deploy and configure. If you need more or different functionality that you cannot achive by configuring a Bedrock, you can create your own. + +3. Core: it is mainly for plugin-, bedrock- and distribution developers in the ecosystem to help each other create plugins that are compatible with every distributions and also to create distributions that are compatible with most of the plugins. + +## Consequences + +- With the new, simpler Core we can agree on the common API on the code level +- Other components and layers are not bound to a specific UI technology +- We aggre on what belongs into the core +- We have to create a new bedrock with the extracted core functionality \ No newline at end of file