Developer Documentation

These pages contain the developer documentation for mantid. They are aimed at those who are modifying the source code of the project. For user documentation please see here.

Meet the team.


Developer Accounts
Details of the accounts required for developers.
Getting Started
Describes the process of obtaining and building the mantid code base.
Details of coding and documentation standards for the project. Includes specifics regarding algorithms.
Details of unscripted and acceptance testing.
Doxygen Setup
Configure a doxygen build locally.
Python 3
Building with Python 3 (Ubuntu/Windows).
C++ Introduction
Exercises for learning C++.

Development Process

Development and Release Cycle
An overview of the development cycle.
Details various methods of communication used within the team.
Mantid Issue Tracking
Describes how issues are tracked over the project.
User Support
Procedures for User Problems to be tested and passed to the Development Team.
Mantid Git Workflow
Details the workflow used development with git and GitHub.
The Automated Build Process
Details the interaction of pull requests with the Jenkins CI builds.
Jenkins Configuration
Describes the setup of Jenkins system and how to add a new slave.
Release Checklist
How to perform a full release of Mantid.
Patch Release Checklist
How to perform a patch release of Mantid.
Technical Steering Committee
Overview of the role of the technical steering committee.
Design Document Guidelines
How to write a good design document.


Tools Overview
Describes class_maker, valgrind and related tools.
Profiling with Valgrind
How to use valgrind to profile your code.
Flowchart Creation
Describes how to create a flow chart with dot.
Visual Studio Build Impact
Provides a script to reduce the impact of Visual Studio on machine performance.
Describes how to set up the PyCharm interpreter, and debug python code (Windows/Linux only).
Guide to using VSCode for C++ with Mantid.
Eclipse on Ubuntu
Guide to setting up Eclipse on Ubuntu


Running the Unit Tests
Details on how to run the suite of unit tests.
Debugging Unit Tests
Details on how to debug the suite of unit tests.
Unit Test Good Practice
Guidance on writing good unit tests.
Reviewing a Pull Request
What to do when reviewing an individual contribution to mantid.
Writing Performance Tests
A walk through of how to write a performance test.
System Tests
Guidance on working with the system tests.
Data Files for Testing
How to work with test data files in the mantid repository.
Testing Utilities
Helper utlities used for testing.
Running Sanitizers
How to run the various sanitizers locally.

GUI Development

MVP Design
Gives some guidelines to consider when developing a new graphical user interface.
MVP Tutorial
A hands-on tutorial on how to implement a user GUI using the Model-View-Presenter (MVP) pattern.
Qt Designer for Python
Describes how to use the Qt designer to produce GUI views.
Mantid Icon Table
The currently used Icons in Mantid and what they are used for.
ISIS Reflectometry Interface
An example of a complex C++ interface that uses MVP.


The workbench is the new PyQt-based GUI that will be the primary interface for interacting with the mantid framework. The plotting is provided by matplotlib. It will eventually replace MantidPlot.

Workbench Documentation
The Index of the workbench specific files.