# OSCD-Component monorepo
Date: 2023-06-16
## Status
Open
## Context
For OpenSCD/next we currently have a couple of components in different repositories. We will have more components like this in the future.
It's good to know that a monorepo is not the same as a monolith.
✋ Monorepo ≠ is different fromMonolith
A good monorepo is the opposite of monolithic! Read more about this and other misconceptions in the article on [“Misconceptions about Monorepos: Monorepo != Monolith”](https://blog.nrwl.io/misconceptions-about-monorepos-monorepo-monolith-df1250d4b03c "Misconceptions about Monorepos: Monorepo != Monolith").
There are 3 types of monorepos:
* Integrated Repos
* Package-based Repos
* Standalone Apps
## Solution
For OSCD-Components, we should make use of the Package-based Repo.
Each component has it's own `package.json` File and can be individually developed, tested, compiled and published.
A good approach for monorepos is [`Lerna`](https://lerna.js.org/), in combination with [`Nx`](https://nx.dev). Other possible tools are [`TurboRepo`](https://turbo.build/) and [`Rush`](https://rushjs.io/).
Core plugins can be grouped together in multiple monorepos
Plugin | Group | Repository |
---|---|---|
@openscd/oscd-open | File-handling | |
@openscd/oscd-new | File-handling | |
@openscd/oscd-save | File-handling | |
@openscd/oscd-validate-template | Validating | |
@openscd/oscd-validate-schema | Validating | |
@openscd/oscd-import-ied | IED | |
@openscd/oscd-compare-ied | IED | |
@openscd/oscd-virtual-ied | IED | |
@openscd/oscd-substation-editor | Editor | |
@openscd/oscd-ied-editor | Editor | |
@openscd/oscd-template | - |
## Decision
T.B.D.
## Consequences
**OpenSCD mono repo**
=> disadvantages
=> less control on permissions