# External Software

# Singularity

Singularity (opens new window) is a lightweight container that provides an operating-system level virtualization. It is popular in the world of scientific high-performance computing (HPC). Wire-Cell use singularity to provide a virtual scientific linux (opens new window) environment to consistently build the package. During code development, it's important to be always clear if you are working inside your native OS or inside the singularity container.

# Jsonnet

Jsonnet (opens new window) is a data templating language, pronounced "jay sonnet", not "json net". It is perhaps popularized by the Kubernetes community. Wire-Cell used jsonnet extensively for configurations.

# Eigen

Eigen (opens new window) is a C++ template library for linear algebra. In Wire-Cell, linear algebra is used everywhere and Eigen is the underling library to provide both data structures and efficient algorithmic operations.