Revoke "ADR 0002: Plugin-based architecture" regarding packaging
Status
Accepted.
Context
The current structure uses NPM packages so segment the codebase into reusable parts. These packages have no known outside usage and slow down development in various positions as well as make documentation and changelogs a burden. Instead of a differentiation of core, plugins, and libs, all of these parts shall reside in a single package whilst maintaining the current pluginability feature. This single package shall also offer a default modulith client with all parts readymade for instantiating that can optionally be used.
If accepted, the original ADR shall gain an additional sentence linking to this ADR regarding this future change, as this won't be executed easily, in a short time, or in a single step.
Decision
We will restructure the architecture as shown in the next big major version.
Consequences
- (+) Easier maintenance (no superfluous changelogs, easier type access, less boilerplate, faster releases).
- (+) Easier to understand the codebase.
- (-) It's not possible to use different versions of packages in the same client, especially old versions.
- (+) We never did this anyway and it may have produced complex fix scenarios (LTS for majors?) that no longer may occur.
- (-) We'll have to introduce technical limitations (architecture checks) regarding imports to prevent the codebase structure from degrading to spaghetti.