# The asclepias Developer Guide

 This guide is designed for asclepias developers, i.e. folks who contribute the asclepias repository. For the user guide, click here.

These documents describe how to:

• contribute to asclepias

• set up your development environment

To develop and work with asclepias locally, clone the repository:

git clone git@gitlab.novisci.com:nsStat/asclepias.git

## Building asclepias packages

This section outlines asclepias-specific build instructions. For details on building Haskell projects in general, see the Usage Guide.

The asclepias repository is organized using a multiple project setup. Some of the subdirectories of the repository such as hasklepias-core, hasklepias-main, etc. contain a Cabal package that we call a "project" or "sub-project".

Figure 1. Package dependency graph

We can choose which subset of projects to build, including theentire asclepias project, using the cabal build command as outlined in the Usage Guide.

 .Best Practice Build the entire asclepias project only after all edits are complete. This saves compile time.

## Versioning asclepias

asclepias tries to follow semantic versioning 2.0.0.

Each package in the asclepias project has the same version. Starting with version v0.27.0, asclepias adheres to the git usage guidelines. In particular, this means versions are marked with tagged commits on the projects origin/master branch in GitLab, and work toward each release is tracked in GitLab milestones. Version tags should be in the format vx.x.x, as in v0.27.0.

 Version-changing edits to one package should bump the version in all packages. As of 0.27.0, version numbers should be of the form x.x.x, wherever they are referenced or used, event if the final element is 0, meaning we write 0.27.0 not 0.27. Where appropriate, references to version numbers will start with v as they appear in the version-tagged commits, for example v0.27.0. One place where a v prefix is not appropriate is in the package .cabal files.
 The antora-playbook.yml file in the noviverse-site repository determines which commit references of asclepias are used for the documentation site. At present, these are the version-tagged commits beginning with v0.27.0. The docs/antora.yml file of the asclepias repo sets the version of this documentation based on the version tags.
 Until asclepias version 1.0 is released, no guarantees of backwards-compatability are made.