You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 27, 2025. It is now read-only.
For a better expandability we would like to extract all plugins in a new plugins repository.
12
+
13
+
## Decision
14
+
15
+
Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we will extract all OpenSCD Core plugins to an external repository.
16
+
Doing so OpenSCD Core will be streamlined and a clean interface and structure for plugins will be provided for custom extensions.
17
+
Before extracting this plugins a shared UI-Components module will be extracted. This UI-Components provide reusable UI-Components based on [NX](https://nx.dev/) for faster development for OpenSCD Core and custom plugins. This new repository will be created as mono repository to facility the plugins development and simplify the release and deployment process.
18
+
19
+
Plugins will be moved to repository [OpenSCD official Plugins](https://github.com/openscd/oscd-official-plugins) and the release strategy is defined [here](./0004-openscd-release-and-deploy-strategy.md).
20
+
As final task the current documentation will be added with a new section `How to add new and custom OpenSCD plugins` to support developers to follow the concept.
21
+
22
+
## Consequences
23
+
24
+
- Clean Code in OpenSCD Core
25
+
- Clear architectural structure of plugins
26
+
27
+
- Building OpenSCD is more then building a simple repository
28
+
- Clear path must be defined how to extend OpenSCD with custom plugins (full software cycle till deployment)
29
+
- Release process for OpenSCD Core and OpenSCD official plugins
30
+
31
+
## Agreed procedure
32
+
33
+
- move the plugins without any components abstraction to the external plugins repository
34
+
- copy all required dependencies regardless of code duplication
35
+
- integrate the plugins as submodules within OpenSCD core in the pipeline
36
+
- later on we can extract step by step for each plugin UI-Components
# ADR-0004 - Technical solution for releasing and deployments
2
+
3
+
Date: 2024-11-19
4
+
5
+
## Status
6
+
7
+
Approved
8
+
9
+
## Context
10
+
11
+
Based on the [decision](./0003-extract-plugins.md) to externalize plugins in proper plugins repository a new release and deployment strategy needs to be defined.
12
+
This plugins repository is solved as mono repository.
13
+
14
+
## Decision
15
+
16
+
### Release process
17
+
18
+
Since OpenSCD is based on [NX](https://nx.dev/) the release strategy needs to rely on NX as well and must allow single releases of sub modules within this mono repository.
19
+
Such feature is provided by [NX release](https://nx.dev/recipes/nx-release) specially when using the [NX independently release feature](https://nx.dev/recipes/nx-release/release-projects-independently).
20
+
21
+
A possible release command would look like:
22
+
```
23
+
nx release --projects=plugin-1,plugin-3
24
+
```
25
+
26
+
## Consequences
27
+
28
+
- Process needs to be documented so that all developers can easily follow it
29
+
- The building of complete OpenSCD Editor, OpenSCD Core + OpenSCD plugins, depends now on two repositories
30
+
- Custom OpenSCD eg. CoMPAS OpenSCD will be cleaner and more code can be reused
31
+
- Similar Look & Feel of plugins if shared UI-Components are used
32
+
- Faster plugin development and integration into OpenSCD Core
0 commit comments