This document details the setup instructions required to develop DCC based projects. Note that the instructions are for both frontend and backend development. It assumes that the developer is using MacOS Sierra or above.

Once complete, please see general for general conventions used during development.

First, ensure you have a account and send the username to @btiernay.


Homebrew, brew, is the defacto package manager for MacOs. Most software described here requires it.

To install follow the directions below:


It is recommended to install all applications with Cask to promote automation (hopefully one day this page can be scripted).

To install:

brew tap caskroom/cask


We use Slack almost entirely for internal communication, so install this ASAP.

brew cask install slack

XCode and Command Line Tools

Follow the instructions below:

Alternatively, install XCode from AppStore and execute the following (untested):

xcode-select --install


brew install git


brew install hubflow

See for details on how we use this.

VS Code

Most frontend developers choose to use the VS Code IDE for development.

To install:

brew cask install vscode


Simple bash script to manage multiple active node.js versions.

This is only required for projects that use a UI built with npm (e.g. dcc-docs, dcc-portal, dcc-submission, dcc-dev, etc.)

brew install nvm

Then read for usage information.


To install:

nvm install <version>

Where the required node / npm versions are specified in each GitHub repo (e.g.


Fast, reliable, and secure javascript dependency management.

brew install yarn


Install Java 8:

brew cask install java

Add the following to ~/.bash_profile:

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

Source ~/.bash_profile or open a new terminal and ensure this reports Java 8:

java -version   

java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)



Install Maven 3.2.1 or what is specified in icgc-dcc/dcc-parent/pom.xml maven-enforcer-plugin.requireMavenVersion

brew install maven
brew switch maven 3.2.1

To check your installation, run:

mvn -v

Java version: 1.8.0_31, vendor: Oracle Corporation


brew install elasticsearch14
brew switch elasticsearch14 1.4.4

Head Plugin

/usr/local/Cellar/elasticsearch/1.4.4/libexec/bin/plugin --install mobz/elasticsearch-head


brew install mongo
brew switch mongo 2.4.4-x86_64



Download and install Eclipse 4.6.x or latest for Java EE developers:

Alternatively, you may try the following (untested):

brew cask install eclipse-jee


Install and configure IDE settings:

Lombok Support

A number of the DCC projects are using Lombok to reduce boilerplate code (e.g., getters, setters, toString()hashCode()equals()static Logger log, etc.). This is seemless to javac via mvn, but the Java 6 transformations will not be reflected in Eclipse which will in turn cause compilation errors in your editor. To fix this, execute 

java -jar lombok.jar

And point it to your Eclipse installation. See for details. 

Maven m2e

Activate source downloading in the maven plugin, tick the following:

Preferences > Maven > Maven Download Artifact Sources

Open to XML view, tick the following:

Preferences > Maven > User Interace > Open XML page in the POM editor by default

Hide warnings for incomplete mappings, tick the following:

Preferences > Maven > User Interace > Hide warnings for incomplete mapping

Java Static Import Favorites

Add some classes to your favorite static imports via:

Preferences > Java > Editor > Content Assist > Favorites:

  • Guava's Preconditions
  • PowerMock's PowerMockito
  • Mockito's Mockito
  • AssertJ's org.assertj.core.api.Assertions.*


MoreUnit Plugin

Useful JUnit Eclipse integration extensions can be installed by following the instructions here:

Or try the following (untested):

eclipse -nosplash -application org.eclipse.equinox.p2.director -repository -installIU 
eclipse -nosplash -application org.eclipse.equinox.p2.director -repository -installIU

FindBugs Plugin

Locally run FindBugs within your IDE:

Or try the following (untested):

eclipse -nosplash -application org.eclipse.equinox.p2.director -repository -installIU

Grep Console Plugin

Plugin for colorizing and filtering the Eclipse console. Follow the instructions here (configuration is available in the Eclipse section):

Or try the following (untested):

eclipse -nosplash -application org.eclipse.equinox.p2.director -repository -installIU


After installing the above, navigate to the project(s) that you will be working on in GitHub and follow the top-level README.mds and linked sub-module README.mds.

All Projects

Clone a project from GitHub:

cd ~/Workspaces/dcc
git clone<project>.git

Init Git-flow (default settings):

cd <project>
git hf init

Eclipse Projects

To import an Eclipse based project, click on the following in the file menu:

File > Import > Maven > Existing Maven Projects

Reference Data

You will need to download the DCC reference genome from our Artifactory server:

and extract it to /tmp. Ensure that the contents of the file are not in a nested folder and are in the tmp folder. Once extracted, symlink GRCh37.fasta to GRC37.75.fasta and GRCh37.fasta.fai to GRCh37.75.fasta.fai by executing the following:

ln -s GRC37.75.fasta GRC37.fasta
ln -s GRC37.75.fasta.fai GRC37.fasta.fai


Consider all of these utilities optional, but highly recommended.


Track pull requests and issues across repositories, directly in your Notification Center or on any Apple device.

brew cask install trailer


Docker for Mac:

Or try (untested):

brew cask install docker-beta


MacDown is an open source Markdown editor for OS X, released under the MIT License. It is heavily influenced by Chen Luo’s Mou.

brew cask install macdown


Very powerful terminal emulator for Mac:

brew cask install iterm2 


Great shell alternative that is mostly compatible with Bash:

brew install zsh zsh-completions

Oh My Zsh

Plugin system for zsh

Add the following to ~/.zshrc / ~/.bash_profile:

plugins=(git git-hubflow mvn brew nvm node npm vagrant httpie)


Modern alternative to curl:

brew install httpie


jq is a lightweight and flexible command-line JSON processor:

brew install jq


Other useful things: