%% Presentation about Bazaar aka Bazaar-NG aka bzr

%% Some useful variations of the document class
%%\documentclass[draft]{beamer}
%%\documentclass[handout]{beamer}
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\mode<presentation>{\usetheme{Copenhagen}}
\title{Bazaar, das DVCS}
\author{Marek~Kubica}
\date{20.~November~2008}

%% get rid of navigation symbols
\beamertemplatenavigationsymbolsempty

\titlegraphic{\includegraphics[height=4.5cm]{bzr_logo}}

\begin{document}

\frame{\titlepage}

% define the logo after the title page
\logo{\includegraphics[width=1.5cm]{bzr}}

\begin{frame}
  \frametitle{Vorweg ein paar Infos}
  \begin{block}{Mit was ich so spiele}
    \begin{itemize}
      \item Bazaar ``in der Arbeit''
      \item Mercurial für Python-Projekte
      \item Git für den Rest
    \end{itemize}
  \end{block}
  \begin{block}{Welche Spielzeuge lass ich links liegen}
    \begin{itemize}
      \item CVS -- wozu noch wo es SVN gibt?
      \item SVN -- wozu noch wenn es DVCS gibt?
      \item darcs -- lohnt sich nicht mehr
      \item monotone, codeville, arch -- obsolete
      \item das selbsgehackte, tolle DVCS deines Nachbarn ;)
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Geschichte}
  In the beginning, there was GNU Arch
\end{frame}

\begin{frame}
  \frametitle{GNU Arch}
  \begin{block}{Die Anfänge von DVCS}
    \begin{itemize}
      \item CVS stinkt, wir brauchen was besseres
      \item SVN ist Evolution, keine Revolution
      \item GNU Arch war das erste DVCS mit dem ich in Kontakt kam (\texttt{larch})
      \pause
      \item fürchterlich kompliziert
      \pause
      \item wurde dann von \texttt{tla} ersetzt
      \pause
      \item immer noch fürchterlich
      \pause
      \item Canonical hat tla 1.2 geforkt und Bazaar, \texttt{baz} genannt
      \item Paralell dazu: revc = Arch 2.0
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Baz als Rettung?}
  \begin{block}{Von heißen Kartoffeln}
    \begin{itemize}
      \item \texttt{baz} war in C
      \item Was passiert: Canonical ruft Bazaar-NG ins Leben, \texttt{bzr},
        lässt \texttt{baz} fallen
      \item Bazaar-NG wird in Bazaar umgetauft
      \item \texttt{baz} ist tot, \texttt{tla} ist tot, \texttt{larch} ist tot,
        \texttt{revc} ist bedeutungslos
      \pause
      \item Hurra, GNU Arch ist endlich tot, es lebe \texttt{bzr}!
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{bzr, der Retter}
  \begin{block}{Was bietet Bazaar?}
    \begin{itemize}
      \item in Python geschrieben, mit einigen Speedups in Pyrex (C)
      \item reguläre Releases (quasi jeden Monat)
      \item Einfache Bedienung
      \item Meist ausreichende Performance
      \item Umfangreiche Dokumentation: Programmmeldungen, Manpages, Wiki, 
        IRC-Channel
	\pause (wenn man Geduld hat)
	\pause
      \item Flexible Einsatzmöglichkeiten (verschiedene Workflows)
        \pause
        \begin{enumerate}
	  \item Git mit Bazaar simulieren
	  \pause
          \item SVN in Bazaar nachbauen
          \pause (für Nostalgiker) \pause
	\end{enumerate}
      \item freier Hoster wo man Code hochladen kann (Launchpad)
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Zeitleiste}
  \begin{block}{2005 war eine aufregende Zeit}
    \begin{itemize}
      \item 26. März 2005: Bzr 0.0.1
      \item 6. April 2005: Git angekündigt
      \item 19. April 2005: Mercurial angekündigt
    \end{itemize}
  \end{block}
  \pause
  \begin{center}
    \includegraphics[height=4cm]{triplet}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Das können doch andere auch?}
  \begin{center}
    \Large{\textbf{JA.}}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Was macht bzr also besonders}
  \begin{block}{Was mir an Bzr gefällt}
    \begin{itemize}
      \item die UI, insbesondere Revisonsnummern wie 632.1.23
      \pause 
        (gemerged in Revision 632, 1. gemergeter Branch, dort die 23 Revision 
        seit dem Fork)
      \pause
      \item einfach zu nutzen (ihr glaubt gar nicht wie schwer es ist Leuten
        Dinge zu erklären sind, die schwerer als SVN sind)
      \item Stacked-Branches um Änderungen nicht hin und her zu übertragen
        (wichtig für branches auf Launchpad)
      \item Shared Repos: ein Repository dass gemeinsame Revisions an einem
        Ort hält. Nützlich wenn man mehrere Branches pullt
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{War das schon alles?}
  \begin{block}{Da kommt noch mehr!}
    \begin{itemize}
      \item versioniert Verschieben von Dateien, Ordnern
      \item versioniert Ordner
      \item funktioniert problemlos unter Windows
      \item recht angenehme API zum programmieren
      \item Tags sind ``ganz ok'' (echte Metadaten)
      \item keine DeprecationWarnings bei Python 2.6
      \item ist nun ein GNU-Projekt und wird vermehrt von anderen 
        GNU-Projekten verwendet
        \pause (Arch kann nun in Rente)
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Wenn das nicht reicht}
  \begin{block}{Es gibt noch Plugins}
    \begin{itemize}
      \item loom -- verwaltet Patchreihen, wie MQ
      \item shelve -- Änderungen erstmal zurückstellen
      \item rebase -- History verändern
      \item noch einige weitere
      \pause
      \item Use the source, luke -- selbst welche schreiben, ist ja Python
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Es ist nicht alles Gold was glänzt}
  \begin{block}{bzr hat aber auch Nachteile}
    \begin{itemize}
      \item langsam bei größeren Repositories
      \item nicht ganz so populär wie Git oder Mercurial
      \item recht häufige Formatänderungen
      \item Tagging und Branching nicht ganz so gelungen wie bei Git
      \item manchmal schwer richtigen Befehl zu finden
      \item Hooks: nur Python-Skripte möglich 
        (leicht nachzubauen, aber warum geht das nicht schon so?)
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Fazit}
  \begin{block}{Es hängt ab was man will}
    \begin{itemize}
      \item Bazaar eher auf Korrektheit fokussiert, Mercurial mehr auf 
        Geschwindigkeit
      \item Von einem auf das andere umsteigen: eher sinnlos
      \item Bazaar ist \emph{gar nicht so übel}, wie einige zu vermitteln
        versuchen
      \item Für größere Projekte eher suboptimal
      \item Für Firmenprojekte: brauchbar
      \item Für kleinere F/OSS-Projekte: durchaus akzeptabel
    \end{itemize}
  \end{block}
\end{frame}

\end{document}
