% $Header: /cvsroot/latex-beamer/latex-beamer/solutions/generic-talks/generic-ornate-15min-45min.en.tex,v 1.4 2004/10/07 20:53:08 tantau Exp $

\documentclass{beamer}
%\documentclass[handout]{beamer}
%\usepackage{pgfpages}
%\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm,landscape]

% This file is a solution template for:

% - Giving a talk on some subject.
% - The talk is between 15min and 45min long.
% - Style is ornate.



% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
%
% In principle, this file can be redistributed and/or modified under
% the terms of the GNU Public License, version 2.
%
% However, this file is supposed to be a template to be modified
% for your own needs. For this reason, if you use this file as a
% template and not specifically distribute it as part of a another
% package/program, I grant the extra permission to freely copy and
% modify this file as you see fit and even to delete this copyright
% notice. 


\mode<presentation>
{
  \usetheme{Warsaw}
  % or ...

  \setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}


\usepackage[english]{babel}
% or whatever

\usepackage[utf8]{inputenc}
% or whatever

\usepackage{graphicx}

\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{url}

% Or whatever. Note that the encoding and the font should match. If T1
% does not look nice, try deleting the line with the fontenc.

% Per l'output di source-highlight
% Questo purtroppo non funziona
%\usepackage[usenames,dvipsnames]{color}
% Ergo li copio qui da /usr/share/texmf-tetex/tex/latex/graphics/dvipsnam.def
\DefineNamedColor{named}{Blue}          {cmyk}{1,1,0,0}
\DefineNamedColor{named}{BrickRed}      {cmyk}{0,0.89,0.94,0.28}
\DefineNamedColor{named}{Brown}         {cmyk}{0,0.81,1,0.60}
\DefineNamedColor{named}{ForestGreen}   {cmyk}{0.91,0,0.88,0.12}
\DefineNamedColor{named}{Purple}        {cmyk}{0.45,0.86,0,0}
\DefineNamedColor{named}{Red}           {cmyk}{0,1,1,0}
\DefineNamedColor{named}{Black}         {cmyk}{0,0,0,1}
\DefineNamedColor{named}{RoyalBlue}     {cmyk}{1,0.50,0,0}

\title{Debtags is ready}

\subtitle
{How to add Debtags to your everyday Debian work} % (optional)

\author
{Enrico Zini \\ \texttt{enrico@debian.org} }

%\institute[ARPA-SIM] % (optional, but mostly needed)
%{
%  Agenzia Regionale Prevenzione e Ambiente (ARPA) \\
%  Servizio Idro-Meteorologico (SIM)
%}

\date[21/06/2007] % (optional)
{21 June 2007}

\subject{Talks}
% This is only inserted into the PDF information catalog. Can be left
% out. 



% If you have a file called "university-logo-filename.xxx", where xxx
% is a graphic format that can be processed by latex or pdflatex,
% resp., then you can add a logo as follows:

% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
% \logo{\pgfuseimage{university-logo}}



% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
\AtBeginSubsection[]
{
  \begin{frame}<beamer>
    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command: 

%\beamerdefaultoverlayspecification{<+->}


\begin{document}

\begin{frame}
  \titlepage
\end{frame}

%\begin{frame}
%  \frametitle{Outline}
%  \tableofcontents
%  % You might wish to add the option [pausesections]
%\end{frame}


% Since this a solution template for a generic talk, very little can
% be said about how it should be structured. However, the talk length
% of between 15min and 45min and the theme suggest that you stick to
% the following rules:  

% - Exactly two or three sections (other than the summary).
% - At *most* three subsections per section.
% - Talk about 30s to 2min per frame. So there should be between about
%   15 and 30 frames, all told.

%%%\section{Dalla lezione precedente}

%%%\subsection{Ripasso}

\begin{frame}
  \frametitle{What is Debtags}

  \begin{itemize}
  \item A vocabulary of categories (\emph{tags} for short).
  \item A database associating packages to \emph{multiple} tags.
  \item \emph{Cleverness}. Lots of cleverness.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Faceted classification}
  \framesubtitle{Clever tag vocabulary}

  \begin{itemize}
  \item Packages are classified from different points of view.
  \item A point of view is called a \emph{facet} of a package.
  \item Every facet has a set of tags.
  \item Every tag answers the question: ``what does the package look like from
        this point of view?''
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Example vocabulary 1/2}

  \begin{semiverbatim}
  \tiny
  admin::accounting - Accounting

  admin::automation - Automation and scheduling

  devel::bugtracker - Bug Tracking

  devel::buildtools - Build Tool

  field::arts - Arts

  field::astronomy - Astronomy

  game::adventure - Adventure

  game::arcade - Action and Arcade

  interface::commandline - Command Line

  interface::text-mode - Text-based Interactive

  interface::web - World Wide Web

  interface::x11 - X Window System

  role::devel-lib - Development Library

  role::documentation - Documentation

  role::program - Program

  role::shared-lib - Shared Library

  use::browsing - Browsing

  use::chatting - Chatting

  use::checking - Checking

  use::compressing - Compressing

  ...
  \end{semiverbatim}
\end{frame}

\begin{frame}
  \frametitle{Example vocabulary 2/2}

  \begin{semiverbatim}
  \tiny
  Tag: role::program

  Description: Program

  \ Executable computer program.


  Tag: scope::utility

  Description: Utility

  \ A narrow-scoped program for particular use case or few

  \ use cases.

  \ It only does something 10-20\% of users in the field will need.

  \ Often has functionality missing from related applications.


  Tag: protocol::ethernet

  Description: Ethernet

  \ Ethernet is the most popular networking technology

  \ for creating local area networks (LANs).

  \ .

  \ The computers in an Ethernet network communicate over

  \ twisted-pair or fibre cables and are identified by their

  \ MAC address. Several different types of Ethernet exist,

  \ distinguishable by the maximum connection speed.

  \ The most widespread types today are 100MBit/s

  \ (100BASE-*) or 1GBit/s (1000BASE-*).

  \ .

  \ Link: http://en.wikipedia.org/wiki/Ethernet
  \end{semiverbatim}
\end{frame}

\begin{frame}
  \frametitle{Example tag database}

  \begin{semiverbatim}
  \tiny
  oaf: devel::library, devel::rpc, network::client, network::server, role::program,

  \ \ suite::gnome, works-with-format::xml

  obconf: interface::x11, role::program, scope::utility, special::not-yet-tagged,

  \ \ special::not-yet-tagged::o, uitoolkit::gtk, use::configuring, x11::application

  obexftp: admin::file-distribution, network::client, role::program,

  \ \ special::not-yet-tagged, special::not-yet-tagged::o

  ocaml: devel::compiler, devel::lang:ocaml, implemented-in::ocaml,

  \ \ role::metapackage, works-with::software:source

  ocaml-base: devel::lang:ocaml, devel::runtime, implemented-in::ocaml,

  \ \ interface::x11, role::shared-lib, uitoolkit::tk, x11::application

  ocaml-base-nox: devel::lang:ocaml, devel::runtime, implemented-in::ocaml,

  \ \ interface::text-mode, role::shared-lib, uitoolkit::ncurses

  ocaml-book-en: devel::doc, devel::lang:ocaml, implemented-in::ocaml,

  \ \ role::data, role::documentation
  \end{semiverbatim}
\end{frame}

\begin{frame}
  \frametitle{The official debtags data source}

  Tag workflow:

  \begin{enumerate}
  \item Tags are entered at \url{http://debtags.alioth.debian.org/todo.html},
        or through an e-mail submission bot.
  \item Unreviewed tags can be downloaded from
        \url{http://debtags.alioth.debian.org/tags/tags-current.gz}
  \item Tag submissions are manually reviewed and committed to
        \url{svn://svn.debian.org/debtags/tagdb/tags}
  \item The reviewed tag database is converted into an override file and
        uploaded to the archive as an automatically processed byhand upload.
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{The official debtags data source}

  Vocabulary workflow:

  \begin{enumerate}
  \item The vocabulary is maintained at \url{svn://svn.debian.org/debtags/vocabulary}.
  \item It can be downloaded from \url{http://debtags.alioth.debian.org/tags/vocabulary.gz}.
  \item It is also included in the \texttt{debtags} package.
  \end{enumerate}
\end{frame}


\begin{frame}
  \frametitle{More data sources}

  There are things that people want but do not fit in the official tag source:
  \begin{itemize}
  \item Subjective tags, such as ratings.
  \item Tags specific to one use target, that CDDs or big local
        installations may want to provide for their users.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{More data sources}

  It can already be done:
  \begin{enumerate}
  \item Tag sources are listed in \texttt{/etc/debtags/sources.list}
  \item \texttt{debtags update} will acquire tags from the various sources and
        merge them together
  \item The merged, validated and indexed tag database is stored in
        \texttt{/var/lib/debtags/package-tags}
  \item The merged, validated and indexed tag vocabular is stored in
        \texttt{/var/lib/debtags/vocabulary}
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{More data sources}

  Example \texttt{/etc/debtags/sources.list}:

  \begin{semiverbatim}
  \scriptsize
  \# Reviewed tag data from the APT Packages file

  tags apt://


  \# Unreviewed tags from Alioth

  \#tags http://debtags.alioth.debian.org/tags/


  \# Package rating from http://www.iterating.org

  \#tags http://www.iterating.org/tags


  \# Example of locally maintained custom tag data

  \#tags file:/etc/debtags/mytags
  \end{semiverbatim}
\end{frame}

\begin{frame}
  \frametitle{The web-based tagging interface}

  Lots of clever goodies:

  \begin{itemize}
  \item Tips.
  \item Editable diff.
  \item Context-sensitive tips.
  \item \emph{Really clever} tag search.
  \item Suggestions inferred from package descriptions.
  \item TODO-list view with more popular packages first.
  \item Search-as-you-type view of the entire vocabulary.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{The web-based tagging interface}

  An experiment in getting the maximum quality out of the maximum freedom:

  \begin{enumerate}
  \item Tags are freely added.
  \item Suggestions from expert taggers are encoded in tips and
        context-sensitive tips.
  \item Structure is automatically inferred and fed back to the taggers through
        autogenerated context-sensitive tips.
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{Nice things to do with tag data}

  Some things that have already been done:

  \begin{itemize}
  \item Providing info that would be better outside of the package description
	(e.g. ``contact list written in Python with GTK.'').
  \item Cleaning up search results (e.g. hiding shlibs and -data packages).
  \item Simple filtering (GUI packages, games, commandline programs, C++ development...).
  \item Domain-specific package views (e.g. a game browser).
  \item Smarter keyword searches (you can look for ``image editor'' and actually \emph{find} gimp).
  \item Finding similar packages.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Software}

  For users:

  \begin{itemize}
  \item apt-cache
    \begin{itemize}
    \item Shows tags.
    \end{itemize}
  \item aptitude
    \begin{itemize}
    \item Shows tags.
    \item Has an experimental tag browser.
    \end{itemize}
  \item ept-cache
    \begin{itemize}
    \item Tag filters.
    \item Tag-enhanced keyword searches.
    \end{itemize}
  \item debtags
    \begin{itemize}
    \item Maintenance of the local tag database.
    \item \texttt{debtags smartsearch}
    \end{itemize}
  \item \url{http://debtags.alioth.debian.org}
    \begin{itemize}
    \item Smart search at \url{http://debtags.alioth.debian.org/ssearch.html}
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Software}

  For programmers:

  \begin{itemize}
  \item libept-dev
    \begin{itemize}
    \item easy to use C++ library (hint: aptitude, synaptic and adept are
          written in C++).
    \item does not mandate a way of using APT, so it can be used without
	  changing the program infrastructure of existing software (such as
	  aptitude, synaptic and adept).
    \item designed to be easily bindable to other programming languages.
    \end{itemize}
  \item python-debian
    \begin{itemize}
    \item does not use the indexed database, and loads all the tag data into
          memory.
    \item excellent for prototyping Debtags-based ideas thanks to Python having
          fast native set types.
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Future}

  Future directions discussed during DebConf:

  \begin{itemize}
  \item Automated maintenance of tags not yet edited by humans.
  \item A new facet of level-of-support tags.
  \end{itemize}
\end{frame}

\section*{Conclusion}

\begin{frame}
  \frametitle<presentation>{Conclusion}

  % Keep the summary *very short*.
  \begin{itemize}
  \item 70\% of the packages are already tagged.
  \item The dataset is already useful.
  \item It used to be an experiment.
  \item Now it's ready.
  \item Use it.
  \end{itemize}
\end{frame}

\end{document}
