Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Latest release Platform support Python version support License pipeline status pre-commit Code style: black

Johann

Johann is a lightweight and flexible “scenario orchestrator”. It makes it easy to coordinate the actions of groups of computers into cohesive, reconfigurable scenarios. It’s sort of like the conductor for an orchestra of computers, and you get to write the music.

Summary

Requirements

Johann is designed to be used on Linux. It has been tested on Ubuntu 18.04, and likely works on several other distributions as well.

Johann requires the following to run:

Here is an example of how to install these on Ubuntu/Debian:

# Install make
sudo apt-get update
sudo apt-get install build-essential

# Install docker via convenience script (not for production environments)
curl https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# log out and log back in
docker run hello-world

# Install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

Usage

Start Johann (this will also build it). This can take a while the first time.

make up

This is an alpha prototype

Johann is an evolutionary prototype in its initial development. It is not yet feature complete, and breaking changes can happen at any time. This is represented by its major version zero (0.y.z).

For now, Johann should be considered to be in perpetual alpha. This is made explicit by the "a" in the version identifier. Please expect it to be rough around the edges (and maybe everywhere else).

Johann should only be used in isolated or protected networks of known and trusted hosts/users. It should only be used for research and development, and not in production.

Roadmap

Here are some planned improvements to Johann, in no particular order:

  • add a simple GUI
  • switch to pydantic
  • switch to fastapi
  • add more documentation
  • use mypy and pylint
  • add more tests
  • add user authentication
  • support kwargs in Measures
  • Score-level variables; configurable at runtime

Contributing

We welcome pull requests! Before starting, please communicate with us to discuss what you would like to change. Please also update tests and documentation as appropriate. Thanks!

Getting Started

Install development packages.

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install python3-dev python3-venv build-essential git

# Alpine (not officially supported)
apk add --no-cache python3-dev bash make git gcc linux-headers musl-dev

Setup the virtual environment used for Johann development. This also installs pre-commit hooks.

make dev-setup

Development Usage

Start Johann in development mode (this will also build it).

make dev

Testing

make test

Linting

Johann uses pre-commit. For the list of hooks used, see .pre-commit-config.yaml.

Lint the files staged for commit.

make lint

Lint all files in the repo.

make lint-all

Use safety to check for known dependency vulnerabilities.

make safety

Built With

In addition to the dependencies listed in Requirements, please see:

In addition to these, Johann is also made possible with the help of (alphabetically):

License

Use of this source code is governed by a BSD-3-clause license that can be found in the LICENSE file. See the AUTHORS file for names of contributors.

Acknowledgments

  • JHU/APL for supporting Johann's licensing as open source
  • Johann S.D.G.

Metadata

Release files for johann 0.3.0a0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for johann 0.3.0a0
File Size Uploaded
johann-0.3.0a0.tar.gz 43.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for johann 0.3.0a0
File Interpreter ABI Platform
johann-0.3.0a0-py3-none-any.whl Python 3 none any Details

Total release size: 99.3 kB

Release files / johann-0.3.0a0.tar.gz

Download URL johann-0.3.0a0.tar.gz
Size 43.1 kB
Tags Source
SHA-256 checksum
How to use checksums
43133760a6708a99d4dc82a3988db82ad4d1c8d58f1681ad43a1af9d2815d3f6
BLAKE2b-256 checksum
How to use checksums
dab76dd26df16f894fadfc8cd18d4d006d0f2e1b875d2738aa7197a821f0d7a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9

Release files / johann-0.3.0a0-py3-none-any.whl

Download URL johann-0.3.0a0-py3-none-any.whl
Size 56.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06dcaa8132569aac64d61a5f3e009a5718d516fb761734c8796d401ae5e07739
BLAKE2b-256 checksum
How to use checksums
c04399afa70c13832a2fddf78eaa3901755be9e52d892ca67b684ac7e7f46d14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9

Release history Release notifications | RSS feed

This release

0.3.0a0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page