From 67d707be99cc181b2172aa8363657672eb737bd1 Mon Sep 17 00:00:00 2001 From: David Monichi <124154365+david-monichi-bp@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:00:02 +0100 Subject: [PATCH 1/8] Create 0003-extract-plugins.md --- docs/decisions/0003-extract-plugins.md | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docs/decisions/0003-extract-plugins.md diff --git a/docs/decisions/0003-extract-plugins.md b/docs/decisions/0003-extract-plugins.md new file mode 100644 index 0000000000..8b471b5de4 --- /dev/null +++ b/docs/decisions/0003-extract-plugins.md @@ -0,0 +1,30 @@ +# 1. Externalize OpenSCD core plugins + +Date: 2024-11 + +## Status + +Open + +## Context + +For a better expandability we would like to extract all plugins in a new plugins repository. + +## Decision + +Participants: + - ... link to github user + +Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we would like to extract all OpenSCD Core plugins to an external repository. +Doing so we are going to streamline the OpenSCD Core and provide a clean interface and structure for plugins. +Further extracting the plugins we would introduce a shared UI-Component module which provides reusable UI-Components based on Svelte. + +Plugins would be in the 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). + +## Consequences + +- Clean Code in OpenSCD Core +- Clear architectural structure of plugins +- Building OpenSCD is more then building a simple repository +- Clear path must be defined how to extend OpenSCD with custom plugins (full software cycle till deployment) +- Release process for OpenSCD Core and OpenSCD official plugins From 0b21ee689f500c7e739f053c98ad8c16359056fd Mon Sep 17 00:00:00 2001 From: David Monichi <124154365+david-monichi-bp@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:10:39 +0100 Subject: [PATCH 2/8] Further ADR improvement --- docs/decisions/0003-extract-plugins.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/decisions/0003-extract-plugins.md b/docs/decisions/0003-extract-plugins.md index 8b471b5de4..7115443a48 100644 --- a/docs/decisions/0003-extract-plugins.md +++ b/docs/decisions/0003-extract-plugins.md @@ -10,21 +10,23 @@ Open For a better expandability we would like to extract all plugins in a new plugins repository. -## Decision - -Participants: +## Participants - ... link to github user -Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we would like to extract all OpenSCD Core plugins to an external repository. -Doing so we are going to streamline the OpenSCD Core and provide a clean interface and structure for plugins. -Further extracting the plugins we would introduce a shared UI-Component module which provides reusable UI-Components based on Svelte. +## Decision -Plugins would be in the 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). +Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we will extract all OpenSCD Core plugins to an external repository. +Doing so OpenSCD Core will be streamlined and a clean interface and structure for plugins will be provided for custome extensions. +Parallel to the plugins extraction shared UI-Components module will be introduced which provides reusable UI-Components based on Svelte and [NX](https://nx.dev/) for faster development for OpenSCD Core and custom plugins. + +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). +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. ## Consequences - Clean Code in OpenSCD Core - Clear architectural structure of plugins + - Building OpenSCD is more then building a simple repository - Clear path must be defined how to extend OpenSCD with custom plugins (full software cycle till deployment) - Release process for OpenSCD Core and OpenSCD official plugins From 534444831741eca64f380e1d8416bc7ece0ebacb Mon Sep 17 00:00:00 2001 From: David Monichi <124154365+david-monichi-bp@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:12:13 +0100 Subject: [PATCH 3/8] Added missing link --- docs/decisions/0003-extract-plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/decisions/0003-extract-plugins.md b/docs/decisions/0003-extract-plugins.md index 7115443a48..68695d49ee 100644 --- a/docs/decisions/0003-extract-plugins.md +++ b/docs/decisions/0003-extract-plugins.md @@ -17,7 +17,7 @@ For a better expandability we would like to extract all plugins in a new plugins Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we will extract all OpenSCD Core plugins to an external repository. Doing so OpenSCD Core will be streamlined and a clean interface and structure for plugins will be provided for custome extensions. -Parallel to the plugins extraction shared UI-Components module will be introduced which provides reusable UI-Components based on Svelte and [NX](https://nx.dev/) for faster development for OpenSCD Core and custom plugins. +Parallel to the plugins extraction shared UI-Components module will be introduced which provides reusable UI-Components based on [Svelte](https://svelte.dev/) and [NX](https://nx.dev/) for faster development for OpenSCD Core and custom plugins. 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). 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. From 168a1c25c356a495bcf75fa0e35a7cdfba6db7b9 Mon Sep 17 00:00:00 2001 From: David Monichi <124154365+david-monichi-bp@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:27:28 +0100 Subject: [PATCH 4/8] Improved ADR --- docs/decisions/0003-extract-plugins.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/decisions/0003-extract-plugins.md b/docs/decisions/0003-extract-plugins.md index 68695d49ee..5715f300ae 100644 --- a/docs/decisions/0003-extract-plugins.md +++ b/docs/decisions/0003-extract-plugins.md @@ -1,4 +1,4 @@ -# 1. Externalize OpenSCD core plugins +# ADR-0003 - Externalize OpenSCD core plugins Date: 2024-11 @@ -16,8 +16,8 @@ For a better expandability we would like to extract all plugins in a new plugins ## Decision Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we will extract all OpenSCD Core plugins to an external repository. -Doing so OpenSCD Core will be streamlined and a clean interface and structure for plugins will be provided for custome extensions. -Parallel to the plugins extraction shared UI-Components module will be introduced which provides reusable UI-Components based on [Svelte](https://svelte.dev/) and [NX](https://nx.dev/) for faster development for OpenSCD Core and custom plugins. +Doing so OpenSCD Core will be streamlined and a clean interface and structure for plugins will be provided for custom extensions. +Before extracting this plugins a shared UI-Components module will be extracted. This UI-Components provide reusable UI-Components based on [Svelte](https://svelte.dev/) and [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. 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). 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. From e7eb37d4ed49bbc45a9b817ff098916c8e23be35 Mon Sep 17 00:00:00 2001 From: David Monichi <124154365+david-monichi-bp@users.noreply.github.com> Date: Tue, 5 Nov 2024 22:33:47 +0100 Subject: [PATCH 5/8] Create ADR 0004 for further clarification --- ...openscd-release-and-deployment-strategy.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/decisions/0004-openscd-release-and-deployment-strategy.md diff --git a/docs/decisions/0004-openscd-release-and-deployment-strategy.md b/docs/decisions/0004-openscd-release-and-deployment-strategy.md new file mode 100644 index 0000000000..fd8e1e4fd5 --- /dev/null +++ b/docs/decisions/0004-openscd-release-and-deployment-strategy.md @@ -0,0 +1,35 @@ +# ADR-0004 - Technical solution for releasing and deployments + +Date: 2024-11 + +## Status + +TO_BE_REFINED + +## Participants + - ... link to github user + +## Context + +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. +This plugins repository is solved as mono repository. + +## Decision + +### Release process + +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. +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). + +A possible release command would look like: +``` + nx release --projects=plugin-1,plugin-3 +``` + +## Consequences + +- Process needs to be documented so that all developers can easily follow it +- The building of complete OpenSCD Editor, OpenSCD Core + OpenSCD plugins, depends now on two repositories +- Custom OpenSCD eg. CoMPAS OpenSCD will be cleaner and more code can be reused +- Similar Look & Feel of plugins if shared UI-Components are used +- Faster plugin development and integration into OpenSCD Core From abdf1065c8a767368fe69f1ca517bc2058f09912 Mon Sep 17 00:00:00 2001 From: David Monichi Date: Tue, 19 Nov 2024 09:30:46 +0100 Subject: [PATCH 6/8] removed svelte dependency --- docs/decisions/0003-extract-plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/decisions/0003-extract-plugins.md b/docs/decisions/0003-extract-plugins.md index 5715f300ae..77c947b165 100644 --- a/docs/decisions/0003-extract-plugins.md +++ b/docs/decisions/0003-extract-plugins.md @@ -17,7 +17,7 @@ For a better expandability we would like to extract all plugins in a new plugins Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we will extract all OpenSCD Core plugins to an external repository. Doing so OpenSCD Core will be streamlined and a clean interface and structure for plugins will be provided for custom extensions. -Before extracting this plugins a shared UI-Components module will be extracted. This UI-Components provide reusable UI-Components based on [Svelte](https://svelte.dev/) and [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. +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. 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). 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. From f9d42a4675727f618d6ae25b3e23d8064a072251 Mon Sep 17 00:00:00 2001 From: David Monichi Date: Tue, 19 Nov 2024 10:49:23 +0100 Subject: [PATCH 7/8] Updated status and agreed procedure --- docs/decisions/0003-extract-plugins.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/decisions/0003-extract-plugins.md b/docs/decisions/0003-extract-plugins.md index 77c947b165..230710cd8a 100644 --- a/docs/decisions/0003-extract-plugins.md +++ b/docs/decisions/0003-extract-plugins.md @@ -1,18 +1,15 @@ # ADR-0003 - Externalize OpenSCD core plugins -Date: 2024-11 +Date: 2024-11-19 ## Status -Open +Approved ## Context For a better expandability we would like to extract all plugins in a new plugins repository. -## Participants - - ... link to github user - ## Decision Following the architectural decision in [OpenSCD Theming](./../0001-ADR-Theming.md) we will extract all OpenSCD Core plugins to an external repository. @@ -30,3 +27,10 @@ As final task the current documentation will be added with a new section `How to - Building OpenSCD is more then building a simple repository - Clear path must be defined how to extend OpenSCD with custom plugins (full software cycle till deployment) - Release process for OpenSCD Core and OpenSCD official plugins + +## Agreed procedure + +- move the plugins without any components abstraction to the external plugins repository + - copy all required dependencies regardless of code duplication +- integrate the plugins as submodules within OpenSCD core in the pipeline +- later on we can extract step by step for each plugin UI-Components From 78ed19c8049d3815fc8b84ac5762150445b74c3b Mon Sep 17 00:00:00 2001 From: David Monichi Date: Tue, 19 Nov 2024 10:49:57 +0100 Subject: [PATCH 8/8] Updated status --- .../0004-openscd-release-and-deployment-strategy.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/decisions/0004-openscd-release-and-deployment-strategy.md b/docs/decisions/0004-openscd-release-and-deployment-strategy.md index fd8e1e4fd5..1c186a4d5c 100644 --- a/docs/decisions/0004-openscd-release-and-deployment-strategy.md +++ b/docs/decisions/0004-openscd-release-and-deployment-strategy.md @@ -1,13 +1,10 @@ # ADR-0004 - Technical solution for releasing and deployments -Date: 2024-11 +Date: 2024-11-19 ## Status -TO_BE_REFINED - -## Participants - - ... link to github user +Approved ## Context