\documentclass [compress, t]{beamer}
\usepackage{styles/beamerthemeMarseille}
\usepackage[latin1]{inputenc}
\usepackage{epsfig}
\usepackage{graphicx}
\usepackage{graphics}
\usepackage{subfigure}
\usepackage{color}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{pgfarrows, pgfnodes}
\usepackage{url}
\usepackage{textcomp}
\usepackage{url}\urlstyle{sf}
\usepackage{xspace} 
\usepackage{listings}

% Beamer Options
\setbeamercovered{dynamic}
\setbeamertemplate{blocks}[rounded][shadow=true]
\setbeamertemplate{background canvas}[vertical shading][bottom=white,top=structure.fg!20]

%%%% macros %%%%

% Macros
\newcommand{\cmt}    {{\em CMT}\@\xspace}%
\newcommand{\svn}    {{\em SVN}\@\xspace}%
\newcommand{\cvs}    {{\em CVS}\@\xspace}%

\setbeamercovered{dynamic}


\definecolor{rltgreen}{rgb}{0,0.5,0}
\pgfdeclareimage[height=1.1cm]{LogoLAL}{logos/logoLAL50ansgrand}
\logo{ \pgfuseimage{LogoLAL} }

\title{CMT/SVN news, \\ Atlas SW/SIT meeting}
\author{Christian Arnault, Vincent Garonne\\
\{arnault,garonne\}@lal.in2p3.fr}
\institute{Laboratoire de l'Accélérateur Linéaire}
\date {April 6, 2006} % \today

\begin{document}

% Transparent: Première page 
\begin{frame}
\maketitle
%\textcolor{gray}{\it \scriptsize }
\end{frame}

\section*{Outline}
\frame
{
% \frametitle{Outline}
 \vfill
   \begin{block}{Outline}
 \tableofcontents[hideallsubsections]
 \end{block}
}

%------------------------------- SECTION -------------------------%
\section[\cmt]{\cmt news, feedbacks and futur improvements}
%---- Slide 1 -----%
\frame{
\setbeamertemplate{blocks}[default]
\vfill \hfill
\begin{block}{\begin{center} \large CMT news \end{center}}
\end{block}
}

%\subsection{The new v1r18p20060301 release}

%---- Slide 1 -----%
\frame 
{
 \frametitle{\cmt news (1)}
    
 \begin{block}{New \cmt release (version v1r18p20060301) }
    No major improvements but fixed several problems with the existing  
      CMT versions, including:
     \begin{itemize}
          \item Non-existent directories are no longer removed from search paths   
          \item Add new warning messages in relation with setup checking which are 
                explicitly called with the \texttt{--warnings option}
          \item The run-time environment for a release can be setup by specifying  
          the "runtime" during setup command, e.g.: \\                 
         \texttt{> source $\sim$/cmthome/setup.sh -tag=11.0.4,runtime}   
         \item New version of the AtlasSettings package (backwards compatible) 
       \end{itemize}
\end{block}
}

%---- Slide 2 -----%
\frame 
{
 \frametitle{\cmt news (2)} 
 \begin{block}{New \cmt release (version v1r18p20060301)}
\begin{itemize}
         \item Change the internal system for setting environment variables in a proper way
          \item Better support of the (non-)version-directory mode in severals cases:
          \begin{itemize} 
                \setbeamertemplate{itemize items}[circle]
                 \item  Option to force package version directories to be created when using 
                            "\texttt{cmt co}":\\ 
                            \texttt{set CMTSTRUCTURINGSTYLE "with\_version\_directory"}            
                  \item Resp. \texttt{"without\_version\_directory"} force a package version  directory not 
            to be created.
      \end{itemize}      
     \item See Changelog~\cite{cmt_changelog} for more informations
\end{itemize}
\end{block}
}

%---- Slide 3 -----%
\frame 
{
 \frametitle{\cmt feedbacks}

  \begin{block}{Reports}
     \begin{itemize}  
          \item Tested on the nightlies with "no" problems except
          \begin{itemize} 
                \setbeamertemplate{itemize items}[circle]
                \item Should understand the problem of eternal loop 
                          encountered with dictionaries ...
          \end{itemize}    
           \item Should be the `stable' v1r18 in the futur
           \item Problems encountered with the cmtcvs plugin in the way cvs tags are printed :
          \begin{itemize} 
                \setbeamertemplate{itemize items}[circle]
                \item Thanks to D. Chamont, this is fixed and should 
                           be available for the next plugin release
          \end{itemize}    
     \end{itemize}
\end{block}
}

\frame 
{
 \frametitle{\cmt Future}          
  \begin{block}{Future improvements planned for the next \cmt release :}          
          \begin{itemize} 
                \setbeamertemplate{itemize items}[circle]
                \item  Request for having a macro that reflects all active tags , i.d. 
                           we should introduce a link between the macro and tag concepts
                \item Improve the log message mechanism for message classification 
                         within \cmt, e.g. "à la" Python's logging module~\cite{module_logging},
                         Apache's logging module~\cite{log4cxx}
          \end{itemize}
\end{block}
}

%------------------------------- SECTION -------------------------%
\section[SVN]{Exploring SVN for Atlas}
%---- Slide 1 -----%
\frame{
\setbeamertemplate{blocks}[default]
\vfill \hfill
\begin{block}{\begin{center} \large Exploring SVN for Atlas\end{center}}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame
{
\frametitle{Scenario for Atlas}

\begin{block}{Roadmap}
\begin{enumerate}
      \item Convert the Atlas CVS repository into a Subversion one
      \item Provide tools to provide synchronization operations between \cvs and \svn repositories 
       \begin{itemize}
                 \setbeamertemplate{itemize items}[circle]      
                  \item  For a certain period,  we will have both system running at the same time
                   \item remark: iterative transition is less painful for the developers :) 
       \end{itemize}
       \item Incorporate \svn in the complex Atlas software management chain, it supposes impact to :
       \begin{itemize}
                  \setbeamertemplate{itemize items}[circle]      
                   \item CMT
                   \item Tag Collector
                   \item Nicos 
       \end{itemize}
       \item If successful, we could do the permanent switch; if not ... :(
\end{enumerate}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame
{
\frametitle{Converting CVS Repository to Subversion}
 \begin{block}{}
 \begin{itemize}
\item  We have developed our own tool  \texttt{"cvs2svn.py"}
\item We have selected the following organization for each project/package/tag:\\
\texttt{\textcolor{blue}{
<project>/.../<package>/trunk/...\\
<project>/.../<package>/tags/<tag>/...}}
\end{itemize}
\end{block}

 \begin{block}{}
 \begin{itemize}
 \item The complete Atlas cvs repository has been converted to a svn one. The svn url is :\\
       {\small   \texttt{\url{file:///afs/cern.ch/atlas/software/svnrepository/repository}}}
\item It takes a looong time to do that the first time
 \begin{itemize}
         \setbeamertemplate{itemize items}[circle] 
          \item Try different \svn backends: Berkley DB,  \underline{\svn file system} 
          \item It takes me ~one week  to complete the procedure, e.g. 8 hours for the AtlasCore project
          \item but update will only concern recent tags
\end{itemize}
\end{itemize}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame
{
\frametitle{Conversion validation and management tools}

\begin{block}{Conversion validation tools}
\begin{itemize}
\item We have implemented several tests to check the quality of the 
conversion: 
\begin{itemize}
         \setbeamertemplate{itemize items}[circle] 
         \item  Comparing the sources at each tag with diff tests
          \item Comparing the list of tags for a package
         \item Check global structure of the \svn repository
         \item \url{/afs/cern.ch/atlas/scripts/testcvs2svn.py}
\end{itemize}
\end{itemize}
\end{block}

\begin{block}{Management tools}
\begin{itemize}
\item We have also implemented a script which re-organizes the SVN repository:\\
\texttt{ \textcolor{blue}{
<project>/.../<package>/trunk/...\\
<project>/.../<package>/<tag>/...}}
\end{itemize}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame
{
\frametitle{Performance and scalability}
 \begin{block}{Test stress scenario}
We define the following {\bf action} for an user: 
\begin{itemize}
           \item User selects randomly a package
           \item  He extracts and modifies it, then registers it until the operation is successful
           \item Then he sleeps $n$ seconds with $n$ sort randomly $ \in [1, T_{max}]$
\end{itemize}
\end{block}

\begin{block}{Experiment parameters}
\begin{itemize}
\item We have done experiments with different:
\begin{itemize}
            \setbeamertemplate{itemize items}[circle] 
             \item Total number of users (10, \textcolor{blue}{100}, 1000)
             \item Total number of packages (10, \textcolor{blue}{1000}, 10.000)
\end{itemize}
\item Concurrent user actions were launched by a multi-threaded program 
({\small\texttt{\url{/afs/cern.ch/user/v/vgaronne/svnTestStress}}})
\end{itemize}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame{
\frametitle{Performance and scalability - Results}
\begin{block}{}
\begin{itemize}
\item Let ${\cal R}atio$ be the ratio  $\frac {Total~number~of~users} {{Total~number~of~packages}}$
\end{itemize}
\end{block}

\begin{block}{}
We obtained :
\small
\begin{center}
\begin{tabular}{ccc} 
\hline  ${\cal R}atio$ & $T_{max}$ & Average action time (s)  \\ \hline 
0.01 & 3600.0& 1.34   \\ 
0.01 & 100.0& 1.06     \\ 
0.01 & 10.0     & 1.38   \\ 
\textcolor{blue}{0.1} & \textcolor{blue}{ 3600.0}  & \textcolor{blue}{5.77}     \\
\textcolor{blue}{0.1}&  \textcolor{blue}{100.0}& \textcolor{blue}{4.26}         \\ 
\textcolor{blue}{0.1} & \textcolor{blue}{10.0} &  \textcolor{blue}{6.96}          \\ 
1.0 & 3600.0  & 7.42   \\ 
1.0 & 100.0& 7.06         \\ 
1.0 & 10.0& 8.88\\
\end{tabular}
\end{center}
{\footnotesize\textcolor{blue}{**In blue, the values relevant for Atlas}}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame{ 
\frametitle{A brief summary by pictures}
%\begin{center}
      %\vfill
      \includegraphics<1>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration00}
      \includegraphics<2>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration01}
      \includegraphics<3>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration02}
      \includegraphics<4>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration03}
      \includegraphics<5>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration04}
      \includegraphics<6>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SVN_integration05}
%+\end{center}
}

%------------------------------- SLIDE -------------------------%
\frame{
\frametitle{Synchronization operations}
\begin{block} {Mainly at the user level:}
\begin{itemize}
             \item We proposed a script \texttt{"asvn"} that mimics the CVS syntax for SVN, including the synchronization operations on tags:
             \begin{itemize}
                        \setbeamertemplate{itemize items}[circle] 
                        \item Non exhaustive commands are: checkin,  checkout , tag, ...
                        \item Provides also cmt specific commands working with SVN, e.g. 
                        recursive checkout,  svntags, svnsubprojects, ...
                        \item see \url{/afs/cern.ch/atlas/scripts/asvn}                         
             \end{itemize}             
             \item \textcolor{red} {We assume that when users switch completely to svn for a package, 
             they will not work anymore with \cvs for this package, otherwise we will have integrity problems}             
             \item The synchronization operation should be triggered at the user/developer level during tag operations\\
                \texttt{> asvn --sync tag Package-00-00-01 Package}
\end{itemize}
\end{block}
}

%------------------------------- SLIDE -------------------------%
\frame{
\frametitle{Impact to the Atlas software management chain and tools}

\begin{block} {Impact to the work model}
\begin{itemize}
\item  No real change is expected
\end{itemize}
\end{block}

\begin{block} {Impact to the tools}
\begin{itemize}
                                \item CMT: The \texttt{"asvn"} script previously presented covers these aspects
                                 \item Tag Collector: Needs an interface to SVN, but should be much simpler than the interface to CVS. If not  possible immediately, 
                                     we could go on  temporally with the synchronized Atlas CVS repository
                               \item  NICOS: Normaly only concerned with checkout operations ?
\end{itemize}
\end{block}
}

%------------------------------- SECTION -------------------------%
\section{Conclusion}

%------------------------------- SLIDE -------------------------%
\frame{
\frametitle{Conclusion}

\begin{block} {}
\begin{itemize}
\item All the necessary tools are in place to start using SVN in Atlas
\begin{itemize}
         \item Doing more tests to validate the atlas svn repository
\end{itemize}
\item Testing by real users, will help to tune, customize and improve these tools
\begin{itemize}
        \item We need friendly users !
\end{itemize}
\item After, we could define milestones for the all conversion
\item We should clarify the migration policy
\begin{itemize}
        \item Management of the "CVSROOT/commitavail" file for each package
        to guaranty synchronization between CVS and SVN repository
\end{itemize}

\item  Implementing the interface to SVN in Tag Collector, depends 
          on TC team availability
\item SVN should be installed at cern and supported by IT
\end{itemize}
\end{block} 

}


%------------------------------- SECTION -------------------------%
\section{References}
%------------------------------- FRAME-------------------------%
\frame[allowframebreaks]
{
\frametitle{References}
%\nocite{*}
\bibliographystyle{unsrt}
\bibliography{CMT06-04-2006-sit}
}

\end{document}
%------------------------------- End Of File -------------------------%