Add first-draft README and .gitignore
authorChip Black <bytex64@bytex64.net>
Fri, 5 Jun 2009 08:47:51 +0000 (03:47 -0500)
committerChip Black <bytex64@bytex64.net>
Fri, 5 Jun 2009 08:47:51 +0000 (03:47 -0500)
.gitignore [new file with mode: 0644]
README [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..818493c
--- /dev/null
@@ -0,0 +1,6 @@
+*~
+*.dll
+*.mdb
+*.exe
+*.so
+cookies.txt
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..66e99d0
--- /dev/null
+++ b/README
@@ -0,0 +1,148 @@
+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!