\input{configpres}

\section{Best Practices}

\title{Best Practices}
\maketitle

\subsection{Best Practices}

\begin{frame}
\frametitle{Source Code Management}
\begin{itemize}
\item repository
\item maintainer
\item patches (submit, review, acknowledge role)
\item separate development branches (maintainer merged)
\item useful commit messages (explain why)
\item open opt-in communication (mailing lists)
\item release tags
\item backups
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Code Implementation}
\begin{itemize}
\item useful comments (explain why)
\item think architecture independent (big/little endian, 32/64 bit)
\item UNIX principle (separate well-defined tasks, do it well)
\item separate interface and workcode (client/server model thinking)
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Bug Tracking}
\begin{itemize}
\item track all bugs
\item close/reopen bugs if necessary
\item include repository commit information when closing
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Reproducible Software}
\begin{itemize}
\item release tags
\item official build environment
\item reproducible build environment
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Release Testing}
\begin{itemize}
\item use official software (debug symbols available offline)
\item leak / electric fence testing
\item regression testing (using archived scripts/programs)
\item open bugs
\item document test results (from tags)
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Releases}
\begin{itemize}
\item archive release binaries
\item archive debug information (matching BuildID!)
\item capture crash data
\end{itemize}
\end{frame}

\input{tailpres}
