+WebThing - A modular webkit browser
+
+I. A HISTORICAL TREATISE ON WEB BROWSERS
+
+=====
+ |
+ |
+===== N THE BEGINNING the Web was void and without form. Then came
+Mosaic, which was the first of the graphical web browsers. Descended
+from Mosaic was Mozilla, oft known as Netscape, and their heretical
+offshoot Spyglass Mosaic. Netscape grew in power to become the dominant
+browser, but Microsoft used Spyglass to create Internet Explorer, which
+later Netscape's thunder through underhanded means. This would not be
+the last of Netscape, though.
+
+ The world entered a dark age as Internet Explorer's influence grew
+throughout the land. But in a far away corner of the world, the legacy
+of Mozilla continued. Dwarves toiled in the darkest caves re-tooling
+Mozilla to challenge Internet Explorer, and it was through them that it
+was reborn as Phoenix. Er, Firebird. Wait, no, Firefox. Yes,
+definetly Firefox. As Firefox began to strike back, others emerged from
+the shadows to help fight.
+
+ From the brightly colored fields of KDE came KHTML, which was
+transformed into WebKit by Apple's elves, and packaged into Safari by
+Apple's turtlenecked humans. From the wild north of Norway came Opera,
+which had actually been around since 1996, but nobody noticed it was
+there even though it was small and quick and generally better than
+everything else at the time. And from these a thousand fold have
+spawned: Chrome, Midori, Shiira, Camino, Arora, Epiphany, iCab,
+K-Meleon, Galeon, and many, many others.
+
+
+II. AN INFORMAL INTRODUCTION TO WEBTHING
+
+=====
+ |
+ |
+===== T IS FROM the WebKit line that WebThing descends. It is inspired
+largely by the Firefox add-on Vimperator, and the hyper-minimal WebKit
+browser uzbl. WebThing's strength is that it is highly modular -- parts
+of WebThing can be swapped out for others, or removed entirely.
+WebThing is a browser for tinkerers and hackers, for people who want to
+be able to customize things to the limit, and for anyone who believes
+they could do it better themselves.
+
+
+III. ON THE PROCUREMENT, ASSEMBLAGE, AND EXECUTION OF WEBTHING
+
+=====
+ |
+ |
+ | HE SOURCE FOR WebThing is currently only available from a git
+repository. If you're reading this, you can probably figure out how to
+check out the code.
+
+ There is currently no support for compile-time configuration or
+installation. I'm not a fan of automake, and the project's complexity
+currently doesn't merit such finaglery.
+
+ To compile WebThing, you will need:
+
+* A C compiler (configuration of libsoup cannot yet be done from .NET)
+* Mono 2.0+ (the adventurous may find that .NET works fine, too)
+* GTK# 2.12 (though it may work with previous versions, I have not
+ tested them)
+* WebKit# built on a recent WebKit-Gtk (I used 1.1.8)
+ WebKit requires a lot of things on its own -- you'll have a fun
+ adventure getting it compiled, I'm sure.
+
+ When you build WebKit#, you will have to copy webkit-sharp.dll into
+the same directory as WebThing. It does not seem to link properly
+otherwise. If anyone knows what's going on there, I'd be highly
+appreciative of a fix.
+
+ Once the dependencies are satisfied, type 'make', and some magic
+should happen to produce a WebThingMain.exe with a host of dll files.
+From there, you should be able to run the WebThing script and the
+browser will launch. The default set of plugins creates a Vim-like
+browsing experience reminiscent of Vimperator (but not nearly as
+complete), or uzbl (but slightly less incomplete).
+
+
+IV. EXPLORING THE DARK DEPTHS OF WEBTHING
+
+=====
+ |
+ |
+ | HE source is divided roughly into two sections, the WebThing core,
+and plugins. It is my intent to keep the core as minimal as possible,
+implementing only the barest functionality. The functionality that
+makes up the user experience should be added into plugins. Also,
+plugins allow code to be separated into clean, easy-to-understand
+chunks. Clean separation of code was a failing of the uzbl project that
+in large part inspired WebThing.
+
+The core provides:
+
+* A bare WebKit control
+* Simple tab functionality through a GtkNotebook widget
+* Option parsing
+* Plugin loading
+* Facilities for attaching widgets to points in the window
+
+Here is the plugin set so far:
+
+* DefaultPage
+ Loads a page specified on the command line, or else a default page
+* LoadProgress
+ Places a small widget in the upper right corner that shows page
+ loading progress
+* FFNav
+ Implements Firefox-like navigation keys (Alt-Left and Right,
+ Backspace, Ctrl-T, Ctrl-Tab, and Ctrl-W)
+* Vimish
+ Implements Vim-like navigation keys (HJKL) and a command bar that
+ allows opening URLs and configuring state
+
+
+V. THE ARCHITECTURE OF PLUGINS, AND THEIR REQUIREMENTS
+
+ /~\
+| |
+|---|
+| | PLUGIN IS a subclass of WebThingPlugin, which defines two
+functions that may be of interest to the developer:
+
+* Init(WebThing wt) - Called when WebThing is starting up, and passes a
+ WebThing instance to the plugin
+* InitWebView(WebView wv) - Called when a new WebView is created, and
+ passes a WebView instance to the plugin
+
+The WebThing class contains everything that WebThing is. Since the
+details are still very much in flux, I won't bother describing it just
+yet. At this point I would recommend anyone against writing plugins
+until the plugin API stabilizes. Comments, suggestions, and criticisms
+are welcome.
+
+
+VI. MEANS BY WHICH THE AUTHOR MAY BE CONTACTED
+
+| |
+|\ /|
+| \/ |
+| | Y EMAIL ADDRESS is bytex64@bytex64.net. I'm not yet ready to
+accept general patches, but patches for fixing bugs are welcome.
+
+ Have fun!