\documentclass[12pt]{beamer}


\usetheme{Octave}
\usepackage{thumbpdf}
\usepackage{wasysym}
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
\usepackage{verbatim}

\pdfinfo
{
  /Title       (What is Octave?)
  /Creator     (TeX)
  /Author      (Jordi Gutiérrez Hermoso)
}


\title{What is Octave?}
\author{Jordi Gutiérrez Hermoso}
% \date{September 6th 2006}

\begin{document}

\frame{\titlepage}

\section*{}
\begin{frame}
  \frametitle{Outline}
  \tableofcontents[section=1,hidesubsections]
\end{frame}

\AtBeginSection[]
{
  \frame<handout:0>
  {
    \frametitle{Outline}
    \tableofcontents[currentsection,hideallsubsections]
  }
}

\AtBeginSubsection[]
{
  \frame<handout:0>
  {
    \frametitle{Outline}
    \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/shaded/hide]
  }
}

\newcommand<>{\highlighton}[1]{%
  \alt#2{\structure{#1}}{{#1}}
}

\newcommand{\icon}[1]{\pgfimage[height=1em]{#1}}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%% Content starts here %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

\section{What is it?}
\begin{frame}
  \frametitle{What is Octave?}
  \begin{block}{Our motto}
    \begin{quote}
      \Huge A free numerical environment mostly compatible with \sc{Matlab}
    \end{quote}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{What is Octave?}
  \begin{block}{What is compatibility?}
    \begin{itemize}
      \item A point of much debate...
      \pause
      \item My personal viewpoint, shared by some: if it works in
      {\sc{Matlab}}, it should work in Octave. If it works in Octave, it can
      break in {\sc{Matlab}}.
      \pause
      \item Does this also mean it has to look exactly like {\sc{Matlab}}? Can
      we deviate at all?
      \pause
      \item The perils of ``compatibility flags''
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{The interface}
  \begin{itemize}
    \item Primarily a CLI interface (BYOTE)
    \pause
    \item Most requested feature: GUI! (we're finally listening)
    \pause
    \item Tons of existing GUIs, though.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Lines of code}
  The stuff Octave is made of...
  \pause
  \begin{block}{Core}
    \begin{itemize}
      \item About 600,000 lines of C++
      \item About 100,000 lines of m-scripts
      \item About 50,000 lines of Fortran
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Octave-Forge}
    \begin{itemize}
      \item About 200,000 lines of C++
      \item About 330,000 lines of m-scripts
      \item About 50,000 lines of Fortran
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Features}
  \begin{block}{Current features}
    \begin{itemize}
      \item N-d arrays, linear algebra, sparse matrices
      \item Nonlinear equations
      \item Differential equations
      \item Image processing
      \item Signal processing
      \item Statistics
      \item Control theory
      \item Special functions
      \pause
      \item Many more...
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Features}
  \begin{block}{Features in development}
    \begin{itemize}
      \item JIT compiling
      \item classdef OOP
      \item GUI
      \item Least squares spectral analysis
    \end{itemize}
  \end{block}
\end{frame}

\section{History}

\begin{frame}
  \frametitle{In the beginning... }

  
  \begin{itemize}
    \item Chemical reactor textbook needed companion software
    \item John W. Eaton (hereafter, jwe) started coding in 1993
  \end{itemize}
  \pause

  \begin{block}{Rawlings said...}
    \begin{quote}
      \center
      \huge Why don't you call it ``Octave''?
    \end{quote}
  \end{block}
  
\end{frame}

\begin{frame}
  \frametitle{jwe is a lone wolf...}

  jwe works almost completely alone for first four or five years.

  \pause
  
  \begin{block}{In the very beginning...}
  \begin{itemize}    
    \item No mailing lists
    \item No widespread announcements
    \item No VCS (these were dark times)
  \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Contributions slowly trickle in}
  \begin{block}{Timeline}
    \begin{itemize}
      \item[1989] Planning stages
      \item[1992] Development begins
      \item[1993] First public announcement
      \item[1994] Version 1.0
      \item[1996] Version 2.0
      \item[1998] Version 2.1 development
      \item[2004] Version 2.9 in preparation for 3.0 release
      \item[2007] Version 3.0 major upgrade
      \item[2010] Version 3.2.4, last before using hg branchily
      \item[2011] Version 3.4.0
      \item[2012] Version 3.6.0
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Contributions slowly trickle in}
  \begin{block}{Milestones}
  \begin{itemize}
    \item[1994] Most of the current basic functionality already in.
    (Much was written during its first two years!)
    \pause
    \item[1995] Structs, {\sc{Matlab}}-style plot() command.
    \item[1998] Original sparse matrix implementation
    \item[2001] Octave-Forge's first commit
    \item[2006] MEX interface in core
    \item[2007] Implementation of handle graphics
    \item[2009] OpenGL plotting
    \item[2010] -forge option for pkg.m
    \item[2012?] Nested functions
    \pause
    \item[2013?] GUI? JIT compiling?
  \end{itemize}
  \end{block}
\end{frame}


\section{Community dynamics}

\begin{frame}
  \frametitle{Communication}
  \begin{block}{Casual users}
    \begin{itemize}
      \item Mailing lists
      \item \#octave channel in Freenode
      \item Octave wiki
      \item Savannah bug tracker
    \end{itemize}
  \end{block}
  \pause
  \begin{block}{Developers}
    \begin{itemize}
      \item All of the above
      \item Mercurial and svn repositories
      \item Octave-Forge list
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Social structure}
  \begin{itemize}
    \item Like all free projects, every user is a potential developer.
    \pause
    \item Tiny minority of users are responsible for almost all of the
    code (but does this reflect true involvement...?)
    \pause
    \item 12 current core developers (with write access to repo)
    \pause
    \item 296 total contributors over all time
    \pause
    \item How many users? Thousands? Millions?
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{From user to developer}
  This is a FAQ
  \pause
  \begin{block}{How can I contribute?}
    \begin{itemize}
      \item code (obviously)
      \pause
      \item Documentation (especially examples)
      \item Wiki maintenance
      \item Help in the mailing list
      \item Bug reporting
    \end{itemize}
  \end{block}
  \pause
  Stick around this conference if you want to learn more about how to get involved!
\end{frame}

\end{document}
