# CoreX Progress Update (April, 8th)
## Our findings
### Work organization
- Initially we are going to have the following GitLab repositories (all Rust-based):
- CoreX
- AdminManager
- DFS
- CatLib (previously known as ACB, i.e. Active Catalog Backend)
- CLI -- this will be the only executable, the rest are libraries
- Each of the above mentioned repositories will:
- be represented as a single crate that will be pushed to our private registry ([private][registries] crates.io equivalent)
- have separate pipeline running tests (and possibly producing artifacts for MacOS, Linux, etc.?)
- The consequence is that we are going to track issues separately for each repository.
- We are going to set up private crate registry to not publish our development crates to crates.io.
- We are not going to use `git submodules`. Instead we will have our private crate registry.
### Implementation
- Initially we are going to have in-memory *Catalog Backend* implemented instead of using full-fledged database.
- Also *Wallet* module will be initially simplified in a way that all of the keys will be kept in directories (instead of e.g. YubiKey).
- We may be using Tokio runtime extensively. It will be useful to speed up [IO-bounded](https://stackoverflow.com/questions/868568/what-do-the-terms-cpu-bound-and-i-o-bound-mean) tasks (which are dominant in the file system), e.g. for downloading/uploading multiple files at once. (there [*may*](https://doc.rust-lang.org/nomicon/ffi.html#asynchronous-callbacks) be potential issue with using Tokio with [FFI](https://doc.rust-lang.org/nomicon/ffi.html)?)
- We are going to start implementation by prototyping and implementing CatLib API (a.k.a. ACB API).
## Open questions
- [Which][registries] Rust registry should we choose? Commercial vs Open-Source?
- How to organize work on multiple repos?
- What should be the minimal working PoC that we should implement first?
[registries]: https://github.com/rust-lang/cargo/wiki/Third-party-registries