% @file
% @brief	 speach: uzbl (CCCS)
% @author	markus schnalke <meillo@marmaro.de>
% @since	 2009-06-14


\documentclass{beamer}

	\usepackage[utf8]{inputenc}
	\usepackage{graphicx}
	\usepackage[automark]{scrpage2}
	\setlength{\parskip}{2.0ex plus 1.0ex minus 0.5ex}

	\title{uzbl}
	\author{markus schnalke}
	\date{2009-08-13}

\begin{document}


\frame{
	\vspace{6em}
	\begin{center}
		\includegraphics[scale=0.4]{uzbl-logo.png}

		{a web browser that adheres to the Unix Philosophy}

		\vspace{5em}

		{ \tiny
		markus schnalke \textless{}meillo@marmaro.de\textgreater{}
		}
	\end{center}
}



\frame{ \frametitle{better:}
	\begin{center}
		{\huge thoughts on sane web browsers}
	\end{center}
}





\frame{ \frametitle{Recap: The Unix Philosophy (1)}

\textbf{Gancarz:}

-- small is beautiful

-- make each program do one thing well

-- use software leverage to your advantage

-- avoid captive user interfaces

-- make every program a filter

\dots

}

\frame{ \frametitle{Recap: The Unix Philosophy (2)}

\textbf{McIlroy:}

-- write programs that do one thing and do it well

-- write programs to work together

-- write programs to handle text streams

}



\frame{ \frametitle{modern web browsers}

\dots\ are not small
\hfill\ (huge amounts of code)
% how many SLOC

\pause

\dots\ do not do one thing
\hfill\ (include lots of stuff)
% browse, bookmarks, download, news feeds

\pause

\dots\ do not use software leverage
\hfill\ (do not use available tools)
% no use of wget, newsbeuter

\pause

\dots\ have captive user interfaces
\hfill\ (do not fit into the Unix UI)
% explains itself, ^U, ^W

\pause

\dots\ are no filters
\hfill\ (what about html2text?)
% no combination, they are monolithic blocks

\pause

\dots\ do not work together
\hfill\ (everything's already included)
% as above

\pause

\dots\ do not handle text streams
\hfill\ (have no interfaces anyway)
% as above

\pause

\textbf{$\Rightarrow$ They do completely conflict with the Unix Philosophy!}

}


\frame{ \frametitle{Three problems to solve}

1) user interface

2) size, simplicity

3) software leverage, combination, filters

}



\frame{ \frametitle{Problem 1: user interface}

already addressed (e.g. by vimperator)

pretty easy to implement

but/only a user-side problem

}



\frame{ \frametitle{Problem 2: size, simplicity}

suckless community's limit: 10k SLOC
\pause


but:\\
-- gecko (xulrunner-1.9: 2.6m SLOC)\\
-- webkit (webkit-1.1: 390k SLOC)\\
-- khtml (gtkhtml-2.8: 70k SLOC)

(now imagine 0.1--10 bugs/KLOC)
\pause

simplicity is not possible because of today's web ($\rightarrow$ digression)

}




\frame{ \frametitle{digression: today's web}

\dots\ is broken!
\pause

-- state in a state-less technology (deep-links, back-button)

-- misused technologies (flash)

-- totally overloaded, much too complex
\pause

$\Rightarrow$ simple render engines are not possible anymore

$\Rightarrow$ web browsers have no chance -- they are essentially complex

}



\frame{ \frametitle{Problem 3: software leverage, combination, filters}

this is the point to put hands on
\pause

-- why should the bookmark management be \textbf{inside} the browser?

-- why does the browser need an \textbf{own} download manager?
\pause

$\Rightarrow$ better: use external programs that are available!

}



\frame{ \frametitle{How could it look like}

-- take one of the bloated render engines (black box)
\pause

-- wrap it into a small program with software leverage in mind
\pause

-- have interfaces to refer to \textbf{external} programs
\pause

-- add a good user interface

}


\frame{ \frametitle{Examples (1)}

\textbf{uzbl}

\texttt{http://uzbl.org}

by Dieter Plaetinck (Dieterbe)

since 2009-04

started as {\small \texttt{http://bbs.archlinux.org/viewtopic.php?id=67463}}

2\,700/1\,100 SLOC (2\,300/280 SLOC in May)

is quite active (various branches)

impressive work was achieved in short time

}


\frame{ \frametitle{Examples (2)}

\textbf{surf}

\texttt{http://surf.suckless.org}

by Enno Boland (Gottox)

since 2009-06

500 SLOC

minimalistic reimplementation of uzbl !?

like uzbl was in the very beginning

}


\frame{ \frametitle{5 steps to improve the software world}

1) understand: the Unix Philosophy!
\pause

2) realize: a lot of modern software does not comply
\pause

3) realize: it's mostly the same kinds of problems
\pause

4) realize: it can be done better
\pause

5) do it better!
\pause

$\Rightarrow$ write, help, use sane software!

}





\frame{
software used:\\
-- Debian GNU/Linux\\
-- LaTeX beamer, latexmk, fbgs\\
-- vim, sloccount, mercurial

\begin{block}{}
	\vspace{7ex}
	\centerline{\textbf{Thanks for your attention}}
	\vspace{7ex}
\end{block}


{\scriptsize The slides are available on \texttt{http://marmaro.de/docs} \hfill 2009-08-13 }

}


\end{document}

