wbaldoumas/atrea-policyengine

Split Sync and Async Functionality into Separate Libraries

wbaldoumas opened this issue · 0 comments

Problem Statement

Currently both sync and async functionality of this library is stuffed into a single package. This bloats the package and pulls in a lot of extra cruft for users of the library that don't need any async functionality. This will drastically reduce the library size for users of the core sync functionality.

Proposed Solution

This could be resolved by breaking this library out into separate PolicyEngine and PolicyEngine.Async libraries (I'm also suggesting naming simplification here, since "Atrea" doesn't really mean anything here and was just a word I thought was cool at the time 😂).

The former should contain all of the core required functionality, while the latter can reference the former via a package reference to pull in the core functionality that it depends on. These should live in separate repositories to simplify CI/CD and avoid confusion when contributing to either library.

Communicate the package name changes and link to the new repositories from this one. Also deprecate this package by providing a deprecation notice that links to these new libraries.

Alternatives Considered

Alternatively, both libraries could live within a single repository and the async package could reference the sync package via a project reference rather than package reference.

This is less desirable, since it blurs lines between libraries and makes CI/CD more complex.

Checklist