# External Software

# Singularity

Singularity 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 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 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 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.