# ZombieNet V2, the road ahead.
About a [year ago](https://github.com/paritytech/zombienet/commit/52a6131b188b2a4c71a68596284568d4483aa687) we started working on the ZombieNet project with the vision of build an integration testing tool that allow developers easily launch ephemeral networks and make assertions against it. With this goals we built a tool that allow spawn netwroks in different environments (e.g. k8s, podman, native process) and easily write test using a custom DSL (**D**omain **S**pecific **L**anguage).
The first version of Zombienet is already in use internally by different teams and by some teams of the community, and now is time to look ahead and use the collected feedback to plan the next version.
## Vision
We aim to build a tool that helps to streamline the development cycle, allowing to use a wide range of scenarios from small networks, and a few tests through a simple `DSL`, to big networks with _mixed_ configurations and complex test logic written in Rust. Also, we want to be the entry-level tool to easily start _exploring_ substrate, and make it approachable for newcomers.
### New version goals
As part of this new version we are planning to add new `core` functionalities and improve the `spawning` and `testing` phases. We want to empower users, to cover more uses cases and grow the `footprint` of task you can manage with ZombieNet.
We organized The workload in four pillars, trying to capture the majority of effort needed for the new version.
### Infra
- Chaos testing, add examples (k8s) and explore possibilities in `native` and `podman` providers;
- Prometheus server deployment, `opt-in` for native provider;
- Add a standardized way of querying metrics and ability to do aggregations;
- Scales better, by reducing the need of scrapping each node;
- Long lived test networks deployment and management;
- Deploy and manage testnets using Zombienet (similar functionality with validator manager);
- Obsoletes our custom solution currently built and maintained by devops.(internal);
- Deployment scalability improvements (up to 1000 validators);
- Add Auth system to not use k8s users;
- Add support for `docker` provider;
- Add support for `nomad` provider;
- Rename npm package from `@paritytech/zombienet` to plain `zombienet`. Keep all zombienet related modules under a new org: `@zombienet/*`;
- Add new subcommand: `update`, for updating to latest version;
### UI
- Provide a User Iinterface for generating `.zndsl` and `.network` files;
- Improve VSCode extension (grammar/snippets/syntax highlighting/file validations) ([repo](https://github.com/paritytech/zombienet-vscode-extension)) and publish through VScode extensions;
- New User interface app (desktop and/or web) for running ZombieNet without the need of terminal;
### SDK / Functional
- Create "ZombieNet Test SDK" in Rust/TS (open question for the community);
- Detach phases and use JSON to communicate instead of `paths`(wip);
- Add relative values assertions (for metrics/scripts).
- Add assertion that allow to change node version (binary).
- Allow definition of nodes that are not started in the launching phase and can be started by the test-runner;
- Allow definition of `race` assertions;
- Explore `backchannel` use case and add examples;
- Add "run test against a running network" support (wip);
- Add JS/Subxt snippets ready-to-use in assertions (e.g *transfers*);
- Add XCM support in built-in assertions;
- Add support for cloning a ZombieNet instance from a live network (fork-off);
- Create "default configuration" support - a user/machine specific configuration file that will overwrite out-of-the-box configs (e.g. make `native` the default provider, alter the default setup commands etc.)
### Growth
- Create a `decorators registry` and allow chain-spec logic customization from parachain team (wip);
- Explore how to onboard parachains and make easy to mix configurations;
- Create [helm chart](https://helm.sh/docs/topics/charts/) to allow others use zombienet in k8s as we do;
- Create GitHub Action and publish in marketplace (wip);
- Explore others `ci` integrations;