\documentclass{beamer}

\usepackage{beamerthemesplit}

\title{Towards a better FreeDesktop.org platform}
\author{Will Stephenson and Rodrigo Moya (with lots of ideas from Michael Meeks)}
\date{\today}

\begin{document}

\frame{\titlepage}

\section{Outline}{}
\frame{\tableofcontents}

\section{Why?}
\frame
{
  \frametitle{GNOME/KDE}
  
  \begin{itemize}
    \item Both desktops deserve respect for their achievements
    \item Both desktops following the same goal, with different visions
    \item Lots of duplicated functionality
    \item Competition vs co-operation
  \end{itemize}
}
\frame
{
  \frametitle{Principles of software engineering}

  \begin{itemize}
    \item Code duplication sucks
    \item 3rd parties have a hard time deciding which desktop they support...leading them to just support one, while others see the Linux desktop as a disperse development platform, thus not supporting it
    \begin{item}
      Lots of software engineering issues
      \begin{itemize}
        \item a11y, l10n, power management, security, remote management, lock down, translations, performance, hardware support, ABI management, scripting bindings, documentation, documentation translations...
        \item Release scheduling, bug tracking, maintenance, code review, consistency
      \end{itemize}
    \end{item}
    \item Data duplication/incompatibility is the worst for users
  \end{itemize}
}

\section{Historical View}
\subsection{Before}
\frame
{
  \frametitle{What we used to have}
  
  \begin{itemize}
    \begin{item}
      GNOME 2.low.x:
      \begin{itemize}
        \item GTK+, esd, gnome-vfs, CORBA, gnome-keyring, gconf
      \end{itemize}
    \end{item}
    \begin{item}
      KDE 3.x:
      \begin{itemize}
        \item QT, arts, KIO, D-COP, kwallet, kconfig
      \end{itemize}
    \end{item}
    \begin{item}
      Shared bits:
      \begin{itemize}
        \item Menu/WM specs, .desktop
      \end{itemize}
    \end{item}
  \end{itemize}

}
\subsection{Now}
\frame
{
  \frametitle{The world today: increased sharing}
  
  \begin{itemize}
    \begin{item}
      GNOME 2.high.x:
      \begin{itemize}
        \item GTK+, GIO, gnome-keyring, gconf
      \end{itemize}
    \end{item}
    \begin{item}
      KDE-4.x:
      \begin{itemize}
        \item QT, KIO, kwallet, kconfig
      \end{itemize}
    \end{item}
    \begin{item}
      Shared bits:
      \begin{itemize}
        \item Menu/WM/icon theme/MIME specs, .desktop, systray, scim, fontconfig, D-Bus, HAL, poppler, gstreamer, pulseaudio, PackageKit
      \end{itemize}
    \end{item}
  \end{itemize}
}
\subsection{Future}
\frame
{
  \frametitle{The future?}
  
  \begin{itemize}
    \begin{item}
      GNOME FUTURE.x.x:
      \begin{itemize}
        \item GTK+
      \end{itemize}
    \end{item}
    \begin{item}
      KDE FUTURE.x.x:
      \begin{itemize}
        \item QT
      \end{itemize}
    \end{item}
    \begin{item}
      Shared bits:
      \begin{itemize}
        \item Menu/WM/icon theme/MIME specs, .desktop, systray, scim, fontconfig, D-Bus, HAL, poppler, gstreamer, pulseaudio, PackageKit, SharedConf, SharedIO, SharedKeyManager, SharedSessionManager, Shared*
      \end{itemize}
    \end{item}
  \end{itemize}
}

\section{The plan}
\frame
{
  \frametitle{What to do?}
  
  \begin{itemize}
    \item Do we agree sharing more is needed?
    \begin{item}
      We need ways to get over:
      \begin{itemize}
        \item Political issues
        \item Religious issues
        \item Technical issues
      \end{itemize}
    \end{item}
  \end{itemize}
}
\frame
{
  \frametitle{Phase I - Sharing ideas}
  
  \begin{itemize}
    \item Create the infrastructure to make more sharing possible
    \begin{item}
      Attempt to synchronize desktop release schedules/roadmaps:
      \begin{itemize}
        \item Ubuntu/Fedora releases slaved from GNOME ATM, they could include KDE also at the same time
        \item Necessary for true, deep cross-desktop sharing
        \item Requires political initiative
      \end{itemize}
    \end{item}
    \item Or at least shared release/roadmap for shared bits for a good start
  \end{itemize}
}
\frame
{
  \frametitle{Phase II - Sharing data}
  Sharing data between KDE and GNOME applications is sometimes very hard:
  \begin{itemize}
    \item Define well known places to store specific data (Music, Desktop)
    \item Define standard formats to use for data, so that any Free Desktop-app can use it
    \item Icon themes, web browser caches, metadata
  \end{itemize}
}
\frame
{
  \frametitle{Phase III - Code sharing}
  Wins when sharing implementations:
  \begin{itemize}
    \item Quicker development for new features
    \item More people to look at bugs
    \item Increased trust
    \item A Free desktop platform for 3rd parties, regardless of desktop environment
    \item Bring each other's features
  \end{itemize}
}
\frame
{
  \frametitle{Phase III - What to share? (1)}
  
  \begin{itemize}
    \item gnome-keyring / kwallet - KeyWallet credential store
    \item KIO / GIO - SharedIO
    \item GConf / kconfig - SharedConfig
    \item KDM/GDM (very little GUI but lots of (security, etc) concerns - SharedDM
    \item gnome-session / ksmserver - SharedSM
    \item ConsoleKit, PackageKit, PolicyKit
  \end{itemize}
}
\frame
{
  \frametitle{Phase III - What to share? (2)}
  
  \begin{itemize}
    \item Telepathy, shared help
    \item Thumbnail cleanup, .desktop file caching
    \item Hot plug / volume management, power management / screensaver core
    \item Open With file selector service
    \item Shared system monitor core
    \item Shared complex file formats handlers
    \item PIM pieces
  \end{itemize}
}
\frame
{
  \frametitle{Problems with sharing implementations}

  Religious problems:
  \begin{itemize}
    \item "I don't want to use that g* library"
    \item "No way I'm using that C++ thing"
    \item These should really not influence technical decisions at all
  \end{itemize}
  Technical problems:
  \begin{itemize}
    \item Only real issue is the GUI part, that cannot be shared, but this is easily fixable with signals trapped by each desktop environment to show the GUI parts (like "battery critical" notifications, password dialogs, etc)
    \item ...and sharing implementations means quicker development for all
  \end{itemize}
}

\section{Questions and debate}
\frame
{
  \frametitle{Questions and debate}

  \begin{itemize}
    \item Who do we need to convince to start this rolling on each desktop?
    \item Are we, as free software developers who like sharing code, going to be able to share a free desktop platform?
  \end{itemize}
}
\end{document}
