# HG changeset patch # User meillo@marmaro.de # Date 1269696456 -3600 # Node ID f11406a85319390e288a680b899000b0be1ca4c0 # Parent 0b2cf026d93dcd086b8e98a5f2a18c0488cd6055 some minor rework; new content in ch05 diff -r 0b2cf026d93d -r f11406a85319 unix-phil.ms --- a/unix-phil.ms Thu Mar 25 22:18:55 2010 +0100 +++ b/unix-phil.ms Sat Mar 27 14:27:36 2010 +0100 @@ -1173,28 +1173,28 @@ .PP Unlike most other web browsers, uzbl is mainly the mediator between the various tools that cover single jobs of web browsing. -Uzbl listens for commands on a named pipe (fifo), a Unix socket, and on stdin. -It writes events to a Unix socket and to stdout. -Loading a webpage in a running uzbl instance requires not more than: +Therefore, uzbl listens for commands on a named pipe (fifo), a Unix socket, +and on stdin, and it writes events to a Unix socket and to stdout. +The graphical rendering of the webpage is done by webkit, a web content engine. +Uzbl-core is build around this library. +Loading a webpage in a running uzbl instance requires only: .DS .CW echo 'uri http://example.org' >/path/to/uzbl-fifo .DE -The graphical rendering of the webpage is done by webkit, -which is a library that cares about the whole rendering task. .PP Downloads, browsing history, bookmarks, and thelike are not provided by uzbl-core itself, as they are in other web browsers. -Uzbl-browser only provides, so called, handler scripts that wrap -external applications which provide such function. +Uzbl-browser also only provides, so called, handler scripts that wrap +external applications which provide the actual functionality. For instance, \fIwget\fP is used to download files and uzbl-browser includes a script that calls wget with appropriate options in a prepared environment. .PP Modern web browsers are proud to have addons, plugins, and modules, instead. This is their effort to achieve similar goals. -But instead of using existing, external programs, the functions are -integrated into the web browser, just not compiled into it. +But instead of using existing, external programs, modern web browsers +include these functions, although they might be loaded at runtime. .NH 2 Discussion of the design @@ -1203,12 +1203,55 @@ as identified by Gancarz. .PP -.B "Small is beautiful -and -.B "make each program do one thing well" . - +.B "Make each program do one thing well" . +Uzbl tries to be a web browser and nothing else. +The common definition of a web browser is of course highly influenced by +existing implementations of web browsers which are degenerated. +Web browsers should be programs to browse the web, and nothing more. +This is the one thing they should do, as demanded by the Unix Philosophy. +Web browsers should not manage downloads. +This is the job download managers exist for. +Download managers do primary care about being good in downloading files. +Modern web browsers provide download management only as a secondary feature. +How could they perform this job better, than programs that exist only for +this very job? +And how could anyone want less than the best download manager available? .PP -.B "Build a prototype as soon as possible" . +A web browser's job is to let the user browse the web. +This means, navigating through websites by following links. +Rendering the \s-1HTML\s0 sources is a different job, +which is covered by the webkit render engine, in uzbl's case. +Audio and video content and files like PostScript, \s-1PDF\s0, and the like, +should be handled by external applications \(en +ones that exist to handle such data. +Uzbl strives to do it this way. +.I +``Write programs that do one thing and do it well. +Write programs to work together.'' +.R +.PP +The lesser tenet +.B "allow the user to tailor the environment +matches good here. +There was the question, how anyone could want anything less than the +best program for the job. +But as personal preferences matter much, it is also important to ask: +How could anyone want something else than his preferred program for the job? +Usually users want one program for one job. +Hence, whenever the task is, for instance, downloading, +the same download manager should be used. +More advanced users might want to have this download manager in this +situation and that one in that situation. +They should be able to configure it this way. +With uzbl, one can use any download manager the user wants. +To switch to a different one, only one line in the small handler script +needs to be changed. +Alternatively it would be possible to query an environment variable +in the handler script. +As uzbl does neither have its own download manager nor depends on a +specific one, thus uzbl's browsing abilities will not be lowered by having +a bad download manager. +Of course, this applies to all of the other supplimentary tools, too. .PP .B "Use software leverage to your advantage @@ -1220,6 +1263,26 @@ .PP .B "Make every program a filter" . +.B "Small is beautiful +and + +.PP +.B "Build a prototype as soon as possible" . +Plaetinck made his code public, right from the beginning. +Discussion and development was open to everyone interessted. +Within this first year of uzbl's existance, a new version was released, +more often than once a month. +Development version can be optained very simply from the code repository. +Different forks and branches arose, new features were tested for suitability. +The experiences of using prototypes influenced further development. +Actually, all development was community driven. +Plaetinck says: +``Right now I hardly code anything myself for Uzbl. +I just merge in other people's code, ponder a lot, and lead the discussions.'' +.[ +FIXME +%O http://lwn.net/Articles/341245/ +.] .NH 2