meillo@0: % @file meillo@0: % @brief speach: uzbl (CCCS) meillo@0: % @author markus schnalke meillo@0: % @since 2009-06-14 meillo@0: meillo@0: meillo@0: \documentclass{beamer} meillo@0: meillo@0: \usepackage[utf8]{inputenc} meillo@0: \usepackage{graphicx} meillo@0: \usepackage[automark]{scrpage2} meillo@0: \setlength{\parskip}{2.0ex plus 1.0ex minus 0.5ex} meillo@0: meillo@0: \title{uzbl} meillo@0: \author{markus schnalke} meillo@0: \date{2009-08-13} meillo@0: meillo@0: \begin{document} meillo@0: meillo@0: meillo@0: \frame{ meillo@0: \vspace{6em} meillo@0: \begin{center} meillo@0: \includegraphics[scale=0.4]{uzbl-logo.png} meillo@0: meillo@0: {a web browser that adheres to the Unix Philosophy} meillo@0: meillo@0: \vspace{5em} meillo@0: meillo@0: { \tiny meillo@0: markus schnalke \textless{}meillo@marmaro.de\textgreater{} meillo@0: } meillo@0: \end{center} meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{better:} meillo@0: \begin{center} meillo@0: {\huge thoughts on sane web browsers} meillo@0: \end{center} meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Recap: The Unix Philosophy (1)} meillo@0: meillo@0: \textbf{Gancarz:} meillo@0: meillo@0: -- small is beautiful meillo@0: meillo@0: -- make each program do one thing well meillo@0: meillo@0: -- use software leverage to your advantage meillo@0: meillo@0: -- avoid captive user interfaces meillo@0: meillo@0: -- make every program a filter meillo@0: meillo@0: \dots meillo@0: meillo@0: } meillo@0: meillo@0: \frame{ \frametitle{Recap: The Unix Philosophy (2)} meillo@0: meillo@0: \textbf{McIlroy:} meillo@0: meillo@0: -- write programs that do one thing and do it well meillo@0: meillo@0: -- write programs to work together meillo@0: meillo@0: -- write programs to handle text streams meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{modern web browsers} meillo@0: meillo@0: \dots\ are not small meillo@0: \hfill\ (huge amounts of code) meillo@0: % how many SLOC meillo@0: meillo@0: \pause meillo@0: meillo@0: \dots\ do not do one thing meillo@0: \hfill\ (include lots of stuff) meillo@0: % browse, bookmarks, download, news feeds meillo@0: meillo@0: \pause meillo@0: meillo@0: \dots\ do not use software leverage meillo@0: \hfill\ (do not use available tools) meillo@0: % no use of wget, newsbeuter meillo@0: meillo@0: \pause meillo@0: meillo@0: \dots\ have captive user interfaces meillo@0: \hfill\ (do not fit into the Unix UI) meillo@0: % explains itself, ^U, ^W meillo@0: meillo@0: \pause meillo@0: meillo@0: \dots\ are no filters meillo@0: \hfill\ (what about html2text?) meillo@0: % no combination, they are monolithic blocks meillo@0: meillo@0: \pause meillo@0: meillo@0: \dots\ do not work together meillo@0: \hfill\ (everything's already included) meillo@0: % as above meillo@0: meillo@0: \pause meillo@0: meillo@0: \dots\ do not handle text streams meillo@0: \hfill\ (have no interfaces anyway) meillo@0: % as above meillo@0: meillo@0: \pause meillo@0: meillo@0: \textbf{$\Rightarrow$ They do completely conflict with the Unix Philosophy!} meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Three problems to solve} meillo@0: meillo@0: 1) user interface meillo@0: meillo@0: 2) size, simplicity meillo@0: meillo@0: 3) software leverage, combination, filters meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Problem 1: user interface} meillo@0: meillo@0: already addressed (e.g. by vimperator) meillo@0: meillo@0: pretty easy to implement meillo@0: meillo@0: but/only a user-side problem meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Problem 2: size, simplicity} meillo@0: meillo@0: suckless community's limit: 10k SLOC meillo@0: \pause meillo@0: meillo@0: meillo@0: but:\\ meillo@0: -- gecko (xulrunner-1.9: 2.6m SLOC)\\ meillo@0: -- webkit (webkit-1.1: 390k SLOC)\\ meillo@0: -- khtml (gtkhtml-2.8: 70k SLOC) meillo@0: meillo@0: (now imagine 0.1--10 bugs/KLOC) meillo@0: \pause meillo@0: meillo@0: simplicity is not possible because of today's web ($\rightarrow$ digression) meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{digression: today's web} meillo@0: meillo@0: \dots\ is broken! meillo@0: \pause meillo@0: meillo@0: -- state in a state-less technology (deep-links, back-button) meillo@0: meillo@0: -- misused technologies (flash) meillo@0: meillo@0: -- totally overloaded, much too complex meillo@0: \pause meillo@0: meillo@0: $\Rightarrow$ simple render engines are not possible anymore meillo@0: meillo@0: $\Rightarrow$ web browsers have no chance -- they are essentially complex meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Problem 3: software leverage, combination, filters} meillo@0: meillo@0: this is the point to put hands on meillo@0: \pause meillo@0: meillo@0: -- why should the bookmark management be \textbf{inside} the browser? meillo@0: meillo@0: -- why does the browser need an \textbf{own} download manager? meillo@0: \pause meillo@0: meillo@0: $\Rightarrow$ better: use external programs that are available! meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: \frame{ \frametitle{How could it look like} meillo@0: meillo@0: -- take one of the bloated render engines (black box) meillo@0: \pause meillo@0: meillo@0: -- wrap it into a small program with software leverage in mind meillo@0: \pause meillo@0: meillo@0: -- have interfaces to refer to \textbf{external} programs meillo@0: \pause meillo@0: meillo@0: -- add a good user interface meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Examples (1)} meillo@0: meillo@0: \textbf{uzbl} meillo@0: meillo@0: \texttt{http://uzbl.org} meillo@0: meillo@0: by Dieter Plaetinck (Dieterbe) meillo@0: meillo@0: since 2009-04 meillo@0: meillo@0: started as {\small \texttt{http://bbs.archlinux.org/viewtopic.php?id=67463}} meillo@0: meillo@0: 2\,700/1\,100 SLOC (2\,300/280 SLOC in May) meillo@0: meillo@0: is quite active (various branches) meillo@0: meillo@0: impressive work was achieved in short time meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \frametitle{Examples (2)} meillo@0: meillo@0: \textbf{surf} meillo@0: meillo@0: \texttt{http://surf.suckless.org} meillo@0: meillo@0: by Enno Boland (Gottox) meillo@0: meillo@0: since 2009-06 meillo@0: meillo@0: 500 SLOC meillo@0: meillo@0: minimalistic reimplementation of uzbl !? meillo@0: meillo@0: like uzbl was in the very beginning meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \frame{ \frametitle{5 steps to improve the software world} meillo@0: meillo@0: 1) understand: the Unix Philosophy! meillo@0: \pause meillo@0: meillo@0: 2) realize: a lot of modern software does not comply meillo@0: \pause meillo@0: meillo@0: 3) realize: it's mostly the same kinds of problems meillo@0: \pause meillo@0: meillo@0: 4) realize: it can be done better meillo@0: \pause meillo@0: meillo@0: 5) do it better! meillo@0: \pause meillo@0: meillo@0: $\Rightarrow$ write, help, use sane software! meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: meillo@0: \frame{ meillo@0: software used:\\ meillo@0: -- Debian GNU/Linux\\ meillo@0: -- LaTeX beamer, latexmk, fbgs\\ meillo@0: -- vim, sloccount, mercurial meillo@0: meillo@0: \begin{block}{} meillo@0: \vspace{7ex} meillo@0: \centerline{\textbf{Thanks for your attention}} meillo@0: \vspace{7ex} meillo@0: \end{block} meillo@0: meillo@0: meillo@0: {\scriptsize The slides are available on \texttt{http://marmaro.de/docs} \hfill 2009-08-13 } meillo@0: meillo@0: } meillo@0: meillo@0: meillo@0: \end{document} meillo@0: