\documentclass[10pt]{beamer}
\include{macros}

\usepackage[active]{srcltx}

\mode<presentation>
{
  \usetheme{Warsaw}
\usecolortheme{rose}
%\usecolortheme{seahorse}
  \setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}


\usepackage[english]{babel}
% or whatever

\usepackage[latin1]{inputenc}
% or whatever

\usepackage{times}
\usepackage[T1]{fontenc}
% Or whatever. Note that the encoding and the font should match. If T1
% does not look nice, try deleting the line with the fontenc.


\title{SAGE Days 3: Status Report}

\author{William Stein}

% - Use the \inst command only if there are several affiliations.
% - Keep it simple, no one is interested in your street address.

\date[Feb 17, 2007] % (optional)
{\vspace{-6ex}
February 17, 2007, SAGE Days 3
}

\subject{Talks}

% 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}

\section{Social Aspects of SAGE}

\begin{frame}
\vfill
\begin{center}
{\dred \LARGE Social Aspects of SAGE}
\end{center}
\vfill
\begin{enumerate}
\item The Goal
\item Size of SAGE
\item Developers
\item Growing pains
\end{enumerate}
\vfill
\end{frame}

\begin{frame}
\frametitle{The Goal: Mission Statement}

{\Large {\dred THE GOAL:} Create a viable completely free 
open source alternative to
Magma, MATLAB, Maple, and Mathematica.}
\vfill
Thus SAGE aims to be the analogue for mathematics
research of 
Firefox for web browsing and Linux for operating
systems. 

\vfill 
{\dred This is incredibly frickin' hard.}  I
think  nobody has ever come close.  When I think
about how hard this is, I realize it is basically
impossible.  Solution: Do not think about it.

\vfill
But we {\dred must} create SAGE.  Otherwise a few people and
corporations will {\em continue to exert undue control}
over mathematical research, especially as use
of computers in math research becomes increasingly 
important (as it will). 

\end{frame}

\begin{frame}
\frametitle{How big is SAGE?}
Short answer -- 85MB in source form.
\begin{itemize}
\item {\dred 57 standard packages:}  This is close
to the limit of what I can maintain.  I plan
to add IML (integer matrix library), a sparse
numerical linear algebra package (e.g., SuperLU),
pytables, lie, and scipy. 
\vfill
\item {\dred 27 optional packages:} 
Lesson learned -- 
\begin{enumerate}
\item The build-from-source optional packages are a
{\bf maintenance nightmare}, since testing that they
work on a wide range of systems is incredibly hard.
\item 
In the long run all build-from-source 
optional package should either
disappear or become standard.  
(The ones that don't should be 
installed via standard tools, e.g., fink, apt-get,
Cygwin, etc. )
\item 
The goal with SAGE is having a {\em complete
uniform well-tested working system}, and optional
packages break this, since often they do {\bf not} just work.

\end{enumerate}

\item The {\dred core SAGE library} contains 
{\dred 115,322 unique} lines of code and docstrings. 
This is still quite manageable. 
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{The Current Active Developers}
\begin{itemize}
\item {\dred 21 people have had patches
to the SAGE library accepted during the last 
two months (many have submitted thousands
of lines of code):}\\
\vfill
Martin Albrecht, 
Nick Alexander,
Tom Boothby, 
Robert Bradshaw,
Iftikhar A. Burhanuddin,  
Alex Clemesha,
Didier Deshomme,
David Harvey,
Josh Kantor,
Emily Kirkman, 
David Kohel, 
Robert Miller,
Joel B. Mohler,
Bobby Moretti, 
Andrey Novoseltsev,
Dorian Raymer, 
Yi Qiang, 
Steven Sivek,
Jaap Spies, 
William Stein,
Carl Witty...\\
\vfill
This is a huge amount
of work.  Applause!
\vfill

\item Many people have contributed 
packages, bug fixes to packages, code snippets, etc. 
 
 \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Growing Pains}

\begin{itemize}
\item I spend a huge amount of time just
getting other people's patches to work right 
and have enough doctests, etc.   So far I
have had essentially no help, and soon I will
be very busy with teaching, etc.
\vfill
\item So establishing a patch 
refereeing system is crucial for SAGE; otherwise,
a lot of great patches simply won't make it into
SAGE, which will discourage potential developers.

\vfill
\item This will unfortunately slow down the inclusion of
new code into SAGE, but will in the long run raise
quality and scales well as SAGE grows.

\end{itemize}
\end{frame}

\begin{frame}
\frametitle{SAGE Patch Referee System}
\begin{itemize}
\item I would officially like the following people
to become the first group of patch referees: 
{\dgreen Martin Albrecht, Nick Alexander, 
Robert Bradshaw}, and {\dgreen David Harvey.}
\item Proposed Workflow (a nag
programs is needed for this):
\begin{enumerate}
\item I receive a patch.  I {\dred send it} to one of the
referees. 
\item The referee applies the patch, reads through
all relevant code added in the patch, and adds {\dred comments
specifically asking} for more doctests, asking for
explanations about how/why things are coded in a
certain way, asks for coding conventions to be met, etc.
\item The {\dred referee records as a new patch} the commented
code.
\item The {\dred patch author answers} in
the form of another patch.
\item The above three steps are iterated until the
{\dred referee is happy}.
\item I receive the patch, read it, and apply it
unless there are still problems. 
\end{enumerate}

\item This process would {\em not} be anonymous.  
\item  Contributors would be strongly encourage to list
refereed patch contributions as such in a section
of their CV's.
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{Funding}

Why?  
\begin{itemize}
\item So faculty and grad student can work on SAGE more and
teach less (or do teaching more related to either
SAGE or their research).
\item So undergraduates can work on mathematics related
software as a job instead of other departments or
companies. (E.g., the UW undergrads working on
SAGE all had jobs in web page design and biology
support before working on SAGE). 
\item To fund SAGE Days workshops.
\end{itemize}
\end{frame}

\begin{frame}

\begin{itemize}
\item I still have some startup money left -- enough
to keep things going for at least 1 more full year,
and possibly 2 years, even if I get no funding
I've applied for.
\item  I have applied for a lot of grants...
\item  Please -- if you can apply for something, do!
\item SAGE Days 4?  Probably in late August at UW.
\item Possibilities for SAGE Days 5 -- CRM in Vancouver 
(Nils Bruin); Leiden in Netherlands.
\end{itemize} 
\end{frame}

\section{SAGE Development Status}

\begin{frame}
\frametitle{SAGE Development Status}
\vfill
\begin{center}
{\dred \LARGE  SAGE Development Status}
\end{center}
\vfill
\end{frame}


\begin{frame}[fragile]
\frametitle{The Components of SAGE: What and Why}
\begin{enumerate}
\item cddlib-094b -- program to generating all vertices and extreme rays of a general convex polyhedron in $\mathbf{R}^d$ given by a system of linear inequalities
\item clisp-2.41
\item conwa\_polynomials-0.1
\item cremona\_mini-0.1
\item doc-2.1.3
\item ecm-6.1.2
\item examples-2.1.3
\item extcode-2.1.3
\item flintqs-20070102
\item freetype-2.1.10
\item gap-4.4.9
\item gd-2.0.33.p4
\item gdmodule-0.56.p2
\item genus2reduction-0.3
\item gfan-0.2.2.p1
\item givaro-3.2.6
\item gmp-4.2.1.p4
\item gsl-1.8
\item ipython-20061028
\item ipython1-20070130
\item lcalc-20070107
\item libpng-1.2.8.p0
\item linbox-20070214
\item matplotlib-0.87.7
\item maxima-5.11.0
\item mercurial-0.9.3.p1
\item moin-1.5.6
\item mpfi-1.3.4-rc3.p2
\item mpfr-2.2.1
\item mwrank-20061123
\item networkx-0.33
\item ntl-5.4.1
\item numpy-1.0.1.p1
\item openssl-0.9.8d.p1
\item palp-1.1
\item pari-2.3.1.cvs-20061215
\item pexpect-2.0
\item pycrypto-2.0.1
\item pyopenssl-0.6
\item pyrexembed-0.1.1-20060517
\item pysqlite-2.3.2
\item python-2.5.p4
\item readline-5.2
\item sage-2.1.3
\item sage\_c\_lib-2.1.3
\item sage\_scripts-2.1.3
\item sagex-20070126
\item singular-3-0-2-20070105
\item sqlite-3.3.11
\item sympow-1.018.1.p1
\item tachyon-0.97.p1
\item termcap-1.3.1
\item twisted-2.5.0.p2
\item twistedweb2-0.2.0
\item weave-0.4.9
\item zlib-1.2.3.p1
\item zodb3-3.6.0.p1
\end{enumerate}

\end{frame}

\begin{frame}


\frametitle{Linear Algebra: Status}

{\dred Goal:} We need modern fast optimized implementations
of algorithms for linear algebra over $\Z$, $\Q$, $\F_q$, $\Q_p$, number fields, 
certain polynomial rings, and double-precision real and
complex fields. {\dblue Both dense and sparse with
identical functionality.}

{\dred Status:} The pieces are in place but the
current linear algebra implementation is 
often embarrassingly slow.  Needs systematic
work. 

\begin{itemize}
\item (done) {\dred Initial Python implementation} so what functionality is needed is clear, and a package
that {\em uses} linear algebra in a highly nontrivial way (namely modular symbols).  
\item (done) {\dred Rewrite using SageX} -- compiled language, and restructure implementation to make
it possible to systematically create optimized matrix classes for different base rings. 
\item {\dred Incorporate linbox and IML} into SAGE (in progress); fix bugs, optimize, discover gaps, etc. 
IML is GPL'd but Linbox is LGPL'd (so I am reluctant 
to give back my work to Linbox). 
\item {\dred Implement advanced optimized algorithms} in the context of SAGE (in progress);
fix bugs, etc. 

\end{itemize}

\end{frame}


\section{Research Problems}

\begin{frame}
\frametitle{Research Problems}
\vfill
\begin{center}
{\dred \LARGE  SAGE Development Status}
\end{center}
\vfill
\end{frame}

\begin{frame}
\frametitle{How can SAGE be faster than Magma/Maple/Mathematica/MATLAB?}
\end{frame}

\begin{frame}
\frametitle{How can SAGE best leverage techniques
for parallel computation?}
\end{frame}

\begin{frame}
\frametitle{How can one use several math software systems
together?}
\end{frame}



\end{document}
