The R\+I\+D\+C software is managed by the G\+N\+U build system. As such, the developer release requires G\+N\+U autoconf, automake, libtool, m4, make and their respective prerequisites. If there are version mismatches between the R\+I\+D\+C software and the local system, issuing the commands {\ttfamily autoreconf -\/f} and {\ttfamily automake -\/a -\/c} should resolve version errors and warning. To build the documentation, Doxygen must be installed, as well as appropriate Doxygen pre-\/requisites. For example, to build a P\+D\+F manual documenting the source code, Doxygen requires a La\+Te\+X compiler.

\subsubsection*{Branching}

Contributors should fork the git repository hosted at {\tt https\+://github.\+com/ongbw/ridc.\+git}

If this project gets large enough, we will utilize the {\tt git-\/flow} workflow

\begin{TabularC}{2}
\hline
\rowcolor{lightgray}{\bf Branch Name Pattern }&{\bf Description  }\\\cline{1-2}
{\ttfamily master} &tip of the {\ttfamily master} branch is always the latest stable release \\\cline{1-2}
{\ttfamily development} &tip of the {\ttfamily development} branch is the current state of development and not expected to be stable or even usable \\\cline{1-2}
{\ttfamily feature/$\ast$} &various feature branches are used to implement new features and should be based off the {\ttfamily development} branch \\\cline{1-2}
{\ttfamily release/$\ast$} &a release branch is created from the {\ttfamily development} branch and used to prepare a new release and will be merged into {\ttfamily master} \\\cline{1-2}
{\ttfamily hotfix/$\ast$} &hotfix branches are based off {\ttfamily master} or {\ttfamily development} to fix important and severe bugs and should be merged into {\ttfamily development} and {\ttfamily master} as soon as possible \\\cline{1-2}
\end{TabularC}
Releases and release candidates are tagged in the form {\ttfamily release-\/\+X.\+Y.\+Z(-\/\+R\+Ca)}, where {\ttfamily X}, {\ttfamily Y}, and {\ttfamily Z} specify the version with respect to [semantic versioning] and {\ttfamily a} the number of the release candidate of that version.

\subsubsection*{Commit Messages}

Please keep commit messages clean and descriptive as possible. The following are suggested\+:


\begin{DoxyItemize}
\item Commit Title must not be longer than 50 characters

If applicable, the title should start with a category name (such as {\ttfamily docu}, {\ttfamily tests}, ...) followed by a colon (e.\+g. {\ttfamily \char`\"{}docu\+: add usage
  examples for R\+I\+D\+C\char`\"{}} ).
\item Commit Description must have line wraps at 72 characters
\item Please {\itshape sign} your commits (i.\+e. use {\ttfamily git commit -\/s})
\end{DoxyItemize}

\subsubsection*{How to Implement a New Feature?}


\begin{DoxyEnumerate}
\item create a fork/clone
\item switch to the {\ttfamily development} branch and pull in the latest changes
\item create a new branch {\ttfamily feature/\+X\+Y\+Z} where {\ttfamily X\+Y\+Z} is a short title of your planned feature (word seperation should be done with underscores, e.\+g. {\ttfamily feature/my\+\_\+awesome\+\_\+feature})
\item hack and write Unit Tests
\item commit
\item repeat steps 4 and 5 until you feel your feature is in an almost usable state and most of the unit tests pass
\item write documentation for your feature
\item push your feature branch
\item stay tuned on reviews, remarks and suggestions by the other developers 
\end{DoxyEnumerate}