\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}