ohnosequences!

era7 bioinformatics R&D group

Statika

managing dependencies on the type-level

Statika is a set of Scala libraries, which allows you to declare dependencies between components of any modular system and track their correctness using Scala type system.

This allows one to create configurations of modules, for example, for applying it to a set of Amazon EC2 computation instances, being statically insured, that it won’t fail because of dependencies resolution issues.

Components of Statika

The key components of the project are

  • statika — the core library defining the most abstract concepts;
  • aws-statika — an extension of the abstract library with the things related to Amazon Web Services (AWS);
  • sbt-statika — an sbt plugin, which standardizes the project settings for statika bundles and distributions within one Amazon account;

Convenience tools:

  • statika-bundle.g8 — giter8 template of a project for a new statika bundle;
  • statika-cli — a command line tool for using this template (because giter8 is not enough), and for applying (i.e. deploying) existing bundles from the command line;

Examples:

  • statika github org contains all our public bundles (mostly bioinformatics tools);
  • statika-distributions — a repository with example distributions. There is one distribution which contains all existing public bundles.
  • amazon-linux-ami — implementation of AMI (Amazon Machine Image) abstraction from aws-statika for the official Amazon Linux AMI.

Documentation

Each sub-project has documentation in its github repository, see the links above.