% Open source infrastructure chapter.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Open source infrastructure} \label{ch: open source}



% The relax web sites.
%~~~~~~~~~~~~~~~~~~~~~

\section{The relax web sites}
\index{web site|textbf}

The main web site for relax is \href{http://www.nmr-relax.com}{http://www.nmr-relax.com}.  From these pages general information about the program, links to the latest documentation, links to the most current software releases, and information about the mailing lists\index{mailing list} are available.  There are also Google\index{Google} search capabilities built into the pages for searching both the HTML version\index{manual!HTML} of the manual and the archives of the mailing lists\index{mailing list!archive}.

The relax web site is hosted by the Gna!\ project\index{Gna} (\href{https://gna.org/}{https://gna.org/}) which is described as ``a central point for development, distribution and maintenance of Libre Software (Free Software) projects''.  relax is a registered Gna!\ project and its primary Gna!\ web site is \href{https://gna.org/projects/relax}{https://gna.org/projects/relax}.  This site contains many more technical details than the main web site.



% The mailing lists.
%~~~~~~~~~~~~~~~~~~~

\section{The mailing lists}
\index{mailing list|textbf}

A number of mailing lists have been created covering different aspects of relax.  These include the announcement list\index{mailing list!relax-announce}, the relax users list\index{mailing list!relax-users}, the relax development list\index{mailing list!relax-devel}, and the relax committers list\index{mailing list!relax-commits}.


% relax-announce mailing list.
\subsection{relax-announce}

The relax announcement list ``relax-announce at gna.org''\index{mailing list!relax-announce} is reserved for important announcements about the program including the release of new program versions.  The amount of traffic on this list is relatively low.  If you would like to receive information about relax you can subscribe to the list by vising the information page at \href{https://mail.gna.org/listinfo/relax-announce/}{https://mail.gna.org/listinfo/relax-announce/}.  Previous announcements can be viewed at \href{https://mail.gna.org/public/relax-announce/}{https://mail.gna.org/public/relax-announce/}\index{mailing list!archive}.


% relax-users mailing list.
\subsection{relax-users}

If you would like to ask questions about relax, discuss certain features, receive help, or to communicate on any other subject related to relax the mailing list ``relax-users at gna.org''\index{mailing list!relax-users} is the place to post your message.  To subscribe to the list go to the relax-users information page at \href{https://mail.gna.org/listinfo/relax-users/}{https://mail.gna.org/listinfo/relax-users/}.  You can also browse the mailing list archives at \href{https://mail.gna.org/public/relax-users/}{https://mail.gna.org/public/relax-users/}\index{mailing list!archive}.


% relax-devel mailing list.
\subsection{relax-devel} \label{sect: relax-devel mailing list}

A second mailing list exists for posts relating to the development of relax.  The list is ``relax-devel at gna.org''\index{mailing list!relax-devel} and to subscribe go to the relax-devel information page at \href{https://mail.gna.org/listinfo/relax-devel/}{https://mail.gna.org/listinfo/relax-devel/}.  Feature requests, program design, or any other posts relating to relax's structure or code should be sent to this list instead.  The mailing list archives can be browsed at \href{https://mail.gna.org/public/relax-devel/}{https://mail.gna.org/public/relax-devel/}\index{mailing list!archive}.


% relax-commits mailing list.
\subsection{relax-commits}

One last mailing list is the relax commits list\index{mailing list!relax-commits}.  This list is reserved for automatically generated posts created by the version control software which looks after the relax source code and these web pages.  If you would like to become a developer you can subscribe to the list at relax-commits information page \href{https://mail.gna.oactuallyrg/listinfo/relax-commits/}{https://mail.gna.org/listinfo/relax-commits/}. The list can also be browsed at \href{https://mail.gna.org/public/relax-commits/}{https://mail.gna.org/public/relax-commits/}\index{mailing list!archive}.


% Replying to a message.
\subsection{Replying to a message}

When replying to a message on these lists remember to hit `respond to all' so that the mailing list is included in the CC field.  Otherwise your message will only be sent to the original poster and not return back to the list.  Only messages to relax-users and relax-devel will be accepted.  If you are using Gmail's web based interface, please do not click on `Edit Subject' as this currently mangles the email headers, creates a new thread on the mailing list, and makes it difficult to follow the thread.



% Reporting bugs.
%~~~~~~~~~~~~~~~~

\section{Reporting bugs}\label{reporting bugs}
\index{bug|textbf}

One of the philosophies in the construction of relax is that if there is something which is not immediately obvious then that is considered a design bug\index{bug!design}.  If any flaws in relax are uncovered including general design flaws, bugs in the code, or documentation issues these can be reported within relax's bug tracker system\index{bug!tracker}.  The link to submit a bug is \href{https://gna.org/bugs/?group=relax\&func=additem}{https://gna.org/bugs/?group=relax\&func=additem} while the main page for browsing, submitting, viewing the statistics, or searching through the database is at \href{https://gna.org/bugs/?group=relax}{https://gna.org/bugs/?group=relax}.  Please do not report bugs to personal email addresses or to the mailing lists.

When reporting a bug please include as much information as possible so that the problem can be reproduced.  Include information such as the release version or the revision number if the repository sources are being used.  Also include all the steps performed in order to trigger the bug.  Attachment of files is allowed so scripts and subsets of the input data can be included.  However please do not attach large files to the report.  Prior to reporting the bug try to make sure that the problem is indeed a bug and if you have any doubts please feel free to ask on the relax-users mailing list\index{mailing list!relax-users}.  To avoid duplicates be sure that the bug has not already been submitted to the bug tracker\index{bug!tracker}.  You can search the bugs\index{bug!search} from the page \href{https://gna.org/project/search.php?group=relax}{https://gna.org/project/search.php?group=relax}.

Once the bug has been confirmed by one of the relax developers you may speed up the resolution of the problem by trying to fixing the bug yourself.  If you do wish to play with the source code and try to fix the issue see the relax development chapter of this manual on how to check out the latest sources (Chapter~\ref{ch: relax devel} on page~\pageref{ch: relax devel}), how to generate a patch (which is just the output of diff\index{diff} in the `unified' format), and the guidelines for the format of the code.



% Latest sources -- the relax repositories.
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

\section{Latest sources -- the relax repositories}
\index{repository|textbf}

relax's source code is kept within a version control system called Subversion\index{Subversion|textbf} (\href{http://subversion.tigris.org/}{http://subversion.tigris.org/}).  Subversion or SVN\index{SVN|textbf} allows fine control over the development of the program.  The repository contains all information about every change ever made to the program.  To learn more about the system the Subversion book\index{Subversion!book} located at \href{http://svnbook.red-bean.com/}{http://svnbook.red-bean.com/} is a good place to start.  The contents of the relax repository can be viewed on-line at \href{http://svn.gna.org/viewcvs/relax/}{http://svn.gna.org/viewcvs/relax/}.  The current sources can be downloaded using the SVN protocol by typing

\example{\$ svn co svn://svn.gna.org/svn/relax/trunk relax-trunk}
\index{Subversion!check out}

however if this does not work, try the command

\example{\$ svn co http://svn.gna.org/svn/relax/trunk relax-trunk}
\index{Subversion!check out}

to download using the HTTP protocol.  The entire relax repository is backed up daily to \href{http://svn.gna.org/daily/relax.dump.gz}{http://svn.gna.org/daily/relax.dump.gz}\index{repository!back up}.



% News.
%~~~~~~

\section{News}
\index{news|textbf}

Summaries of the latest news on relax can be found on the relax web site \href{https://gna.org/projects/relax}{https://gna.org/projects/relax}.  However more information can be found at the dedicated news page \href{https://gna.org/news/?group=relax}{https://gna.org/news/?group=relax}.



% The relax distribution archives.
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

\section{The relax distribution archives}
\index{distribution archive}

The relax distribution archives, the files to download to install relax, can be found at \href{http://download.gna.org/relax/}{http://download.gna.org/relax/}.  If a compiled binary distribution for your architecture does not exist you are welcome to create this distribution yourself and submit it for inclusion in the relax project.  To do this a number of steps are required.  Firstly, the code to each relax release or version resides in the `tags' directory of the relax repository.  To check out version 2.1.1 for example type

\example{\$ svn co svn://svn.gna.org/svn/relax/tags/2.1.1 relax}
\index{Subversion!check out}

Again the sources are available through HTTP by typing

\example{\$ svn co http://svn.gna.org/svn/relax/tags/2.1.1 relax}
\index{Subversion!check out}

The binary distribution can then be created for your architecture by shifting to the main directory of the checked out sources and typing

\begin{exampleenv}
\$ cd relax \\
\$ scons binary\_dist
\end{exampleenv}
\index{SCons!binary distribution}

At the end SCons\index{SCons} will attempt to make a GPG signature\index{GPG!signature} for the newly created archive.  However this will fail as the current relax private GPG key\index{GPG!key} is not available for security reasons.  If the SCons command fails, excluding the GPG signing, please submit a bug report\index{bug!tracker} with as much information possible including the details described next to \href{https://gna.org/bugs/?group=relax\&func=additem}{https://gna.org/bugs/?group=relax\&func=additem} (the python and SCons version numbers may also be useful).  Once the file has been created post a message to the relax development mailing list\index{mailing list!relax-devel} describing the compilation and the creation of the archive, the relax version number, the machine architecture, operating system, and the name of the new file.  Do not attach the file though.  You will then receive a response explaining where to send the file to.  For security the archive will be thoroughly checked and if the source code is identical to that in the repository and the C modules are okay, the file will be GPG signed\index{GPG!signature} and uploaded to \href{http://download.gna.org/relax/}{http://download.gna.org/relax/}.
