Split out several packages from `ai.backend.common`
- Dominant language
- Python
- Stars
- 670
- Forks
- 183
- Avg merge
- 15h 13m
- Merged PRs (30d)
- 368
Description
Currently `ai.backend.common` is for server-side components.Let's split it out to multiple `ai.backend` namespace packages so that it could be reused in client-side components without importing all the server-specific modules.
- [ ] `ai.backend.common.validators` → `ai.backend.validators`
- [ ] `ai.backend.common.files` → `ai.backend.asyncio.files`
- [x] `ai.backend.common.logging` → `ai.backend.logging`
- [x] `ai.backend.common.logging_utils` → `ai.backend.logging.utils`
- [ ] `ai.backend.common.types` → `ai.backend.types`
- [ ] `ai.backend.common.networking` → `ai.backend.netutils`
- [ ] `ai.backend.common.argparse` → `ai.backend.cli.argparse`
- [ ] `ai.backend.common.testutils` → `ai.backend.testutils`
- [x] `ai.backend.common.plugin` → `ai.backend.plugin`
Also let's migrate the following module so that the output framework could be reused in the server-side components as well.Later the output package may be further refactored to have a consistent serialization and deserialization of DTOs (data-transfer objects) in both the server side and the client side.
- `ai.backend.client.output` → `ai.backend.output`
I think it would be better to have separate PRs for each separation to minimze merge conflicts and ease the review process.
JIRA Issue: BA-261
Contributor guide
Research direction
The issue identifies the remaining package moves from ai.backend.common and ai.backend.client.output, with separate pull requests preferred for each separation. Start by choosing one unchecked module and tracing its imports and server/client consumers; done means the selected package is reusable under its new namespace without breaking existing consumers.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100