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
- I have read the contributing guidelines
- I have verified this does not duplicate an existing issue