

Martian is a language and framework for developing and executing
complex computational pipelines.

- Designed for simplicity:
  simple to learn,
  simple to develop, simple to run, and simple to debug.
- Allows combination of software components written in any language
  into a single pipeline.
- Powerful support for scaling computationally intensive pipelines
  from standalone machines, to clusters, to cloud.
- Rich support for managing the full lifecycle of complex,
  compute and data-intensive pipelines.

## Motivation & Design Goals

- Simple:
  things just make sense and just work, no boilerplate.
- Manages complexity:
  like any good developer tool,
  Martian seeks to reduce cognitive load and enhance tractability.
- Lightweight: compact toolchain,
  no separate database,
  web servers or other components required.
- Familiar:
  language is designed to be familiar and eschews esotericity.
- Human-friendly:
  consistent structure,
  easy navigability, and rich provenance metadata.
- Machine-friendly:
  well-defined machine-parseable interfaces that support
  loosely-coupled integration.

## What Distinguishes Martian

- Not an extension of an existing language,
  therefore isn't stuck with leftover syntax.
- Does not require a database or persistence mechanism other than
  a filesystem.
- Designed to manage complexity and reduce developers'
  cognitive load.
- Designed for robust user experience in diverse,
  heterogeneous compute environments.


