---
# System prepended metadata

title: 'CoreX Progress Update (April, 8th)'

---

# 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