# 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