Open CMCDragonkai opened 6 years ago
Over the last few months, we have researched multiple topics that will aid the development of Emergence. All details of the research are in this repository, but mainly:
Research progress can be found in the issues tab or the repository.
Here are the main deliverables that are needed for MatrixAI Artifacts at the current time.
@ramwan Is currently looking into the netlink interface (for having a programmatic interface to the iproute2 package (ip link... etc commands)). We discovered that runc already does some work regarding netlink. In fact they have a dependency on: https://github.com/opencontainers/runc/tree/master/vendor/github.com/vishvananda/netlink While runc deals with networking inside a container, and this is probably mediated via a command line parameter to the runc reference implementation or as a configuration to runc using OCI specified configuration, the networking between containers and the networking between hosts between containers is not runc's job. That will be under Relay. We should investigate to what kinds of compatibility decisions we have to make between Relay and Runc.
@mokuki082 The highest priority for now would be to start on the Haskell library using hnix (or the other haskell nix libraries) to deal with a hypothetical artifact expression and deploy to an OCI container. As you mentioned docker tools is a good place to start (and seeing how that might integrate with the rest of the Nix ecosystem). Note that Nix mostly just relies on external builders (those builders are usually represented as shell scripts). But this is not always true, in fact part of being able to have buildInputs
or nativeBuildInputs
is that these can be dependencies that required to build the current derivation. So we can do something where we bring our library/runtime to execute and build an OCI image/bundle.
From there we need to inspect how to have a p2p distributed content addressable nix store that also works with Architect expressions. And I'm hoping that @ll-aashwin-ll can help out here once he has the ball rolling with Polykey. I'll be working on developing the theory around all of this in the Architect language.
This roadmap deals with the development of Emergence core modules. This roadmap is not final, subject to edits and change. I encourage all to expand subcomponents and write down more details development and exploration continues.
Emergence
Container Runtime Bindings
In order to orchestrate automatons and to be compatible with the leading application packaging system, we need a way to bind into container primitives from the programming language that we are writing our orchestrator in. Since our orchestrator will be in Haskell, we need a container library written in Haskell. These bindings need to be made compatible with the standard docker image format, now documented as part of OCI standard.
Networking Experiments
CI/CD
For each sub component create separate issues that you can comment on the progress and then close the issue when they are done.