Perhaps the primary activity of the \gls{SDC} Program is the development of a variety of software packages which will be used to implement the services deployed by the \gls{SDCO} team.
Perhaps the primary activity of the \gls{SDC} Program is the development of a variety of software packages which will be used to implement the services deployed by the \gls{SDCO} team.
It is essential to establish consistency across the \gls{SDC} Program to \gls{SDCO} interface: software should be tested, documented, and packaged in a consistent way, regardless of which \gls{SDC} Program team is responsible for delivery\footnote{``Consistent'' here is not quite synonymous with identical: different types of software may require different processes, but those processes should be harmonized wherever possible.}.
It is essential to establish consistency across the \gls{SDC} Program to \gls{SDCO} interface: software should be tested, documented, and packaged in a consistent way, regardless of which \gls{SDC} Program team is responsible for delivery\footnote{``Consistent'' here is not quite synonymous with identical: different types of software may require different processes, but those processes should be harmonized wherever possible.}.
\section{Suggestion from \gls{SDCO}}
This material is adapted from an e-mail from Roberto Pizzo on 1 December 2020.
It is preserved here for reference and discussion; this text does not represent formal \gls{SDC} policy at time of writing.
\begin{enumerate}
\item{Software should be developed and published in a repository with continuous build, integration, deploy and testing functionality.}
\item{The release candidate should be been tagged, documented, and demonstrated to pass the all unit, integration, and other tests.}
\item{The release candidate should to be deployed in an acceptance environment that mirrors the production environment and allows for demonstration and interactive acceptance testing.
This acceptance environment could be provided by \gls{SDCO} or be a part of the \acrshort{CI}/\acrshort{CD} (\acrlong{CI}/\acrlong{CD}) environment maintained by the \gls{SDC} Program}.
\item{\gls{SDCO} will formally accept the release candidate based on the deployed version on the acceptance environment.}
\item{The accepted release version is deployed by \gls{SDCO} in the production environment.
The deployment process in the production environment should in essence be a duplication of the process in the acceptance environment.
If the functionality is provided as an easily deployable package (e.g. \texttt{pip}), the production deployment could be undertaken by \gls{SDCO} (i.e. delegated to sysadmins); if it requires technical expertise to deploy, it should be undertaken/supported by \gls{SDC} Program staff
Further integration in the \gls{CI}/\gls{CD} system could also motivate production deployment to be undertaken by the \gls{SDC} Program.}
\item{It should be possible to roll back to the previously deployed version if necessary.}