Developer prerequisites

- Prerequisites for GridLAB-D developers

Programming languages
Before you begin developing code for GridLAB-D, you need to be sure you have the necessary experience. GridLAB-D is written in primarily C and C++, although other languages may be used in some components. If you intend to develop on modules, which are used to implement classes, then you will only need C++. If you intend to develop for the GridLAB-D core, you will need to use C as well.

Development platforms
You can develop code for GridLAB-D on any supported platforms, including


 * Microsoft Windows


 * Up to and including
 * Visual Studio 2005
 * Visual Studio 2010 (under development)


 * Starting with including
 * MinGW/Eclipse Installation


 * Mac OSX


 * Autoconf
 * Xcode (under development)
 * Setting up a Mac to build GridLAB-D
 * Legacy PackageMaker utility for Mac OSX


 * Starting with including
 * MinGW/Eclipse Installation


 * Linux


 * Autoconf


 * Starting with including
 * MinGW/Eclipse Installation

Libraries

 * All platforms


 * Xerces-C (Version 3.1)
 * SuperLU_MT
 * CBLAS
 * Pthreads
 * MySQL Connector C (6.1) (optional)
 * Matlab (2012 or later) (optional)


 * MacOSX


 * Ncurses

Developer registration
GridLAB-D's open source license gives you full access to the [source code]. This means you can make changes to your own copy and use it however you want, provided that you acknowledge the original copyright holders. However, some developers may want to share their code changes with other GridLAB-D users. This requires
 * 1) a SourceForge user id];
 * 2) you request access to the GridLAB-D project by sending a request to the [@undefined?subject=Developer%20access Project Administrator] (please include a synopsis of your reason and information about your experience and/or credentials); and
 * 3) you be granted access by the project team to both the [🇸🇮 source repository (SVN)] and [ issue tracking (TRAC)] sites.

SVN structure
You will need an appropriate subversion repository access tool. See http://www.subversion.org for a list. Once you have installed the tool, you can download code from the repository. The structure of the repository is as follows:


 * trunk : This is the main development branch in which all major new features and capabilities are introduced. The trunk is under strict control by project team.
 * branch : This is the branch maintenance tree in which all major releases of GridLAB-D are kept. The branch tree is under strict control by project team.
 * ticket : This is the ticket workspace tree in which all working version are kept. Each ticket is owned by the developer to whom the TRAC ticket is assigned.

Issue tracking
All work is scheduled and managed through the [ ticket reporting site].

Build/release process
The project team strictly manages the build and release process. For details see development/release process page.

Programming conventions
The project team uses a few conventions that developers are asked to follow. See programming conventions for details.

Documentation guide
The project uses these wiki pages are the primary documentation of GridLAB-D. See the Documentation Guide for details on how to write documentation and project conventions.