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.

Guides

Developer Accounts
Details of the accounts required for developers.
Getting Started
Describes the process of obtaining and building the mantid code base.
Standards
Details of coding and documentation standards for the project. Includes specifics regarding algorithms.
Testing
Details of unscripted and acceptance testing.
Doxygen Setup
Configure a doxygen build locally.
Python 3
Building with Python 3 (Linux only).

Development Process

Development and Release Cycle
An overview of the development cycle.
Communication
Details various methods of communication used within the team.
Mantid Issue Tracking
Describes how issues are tracked over the project.
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

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.
Getting Started with PyCharm
Describes how to set up the PyCharm interpreter, and debug python code (Windows/Linux only).
Eclipse on Ubuntu
Guide to setting up Eclipse on Ubuntu

Testing

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.
Individual Ticket Testing
What to expect and inspect 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.

GUI Development

GUI Design Guidelines
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.