1. I want to make a code browser for RubyLanguage. 1. I want it to include most of the good features of the SmalltalkLanguage code browser. 1. I want the code browser to be WebBrowser-based (i.e., to use a web browser as its WindowingSystems [singular]). So what is the big deal? Well, in addition to the above, I want to discover a simple building block, or SystemMetaphor, that allows me to construct the browser using a bunch of similar, simple pieces. Why don't I just start doing ExtremeProgramming, and DoTheSimplestThingThatCouldPossiblyWork? Well, I am confused. I am my own customer, and the (researchy) customer part of me wants the browser to emerge from loosely-coupled pieces. No central logic (although perhaps a central dispatcher). Given this constraint, I want to do XP. ---- Code browser metaphors I have seen used in the past: * Each pane registers for events from, and sends events to, a central event processor principles / patterns / concepts that may be of use: * Headless application - the application should work without its interface - in other words the application should be able to be run from the interpreter window * StateMachine - the response to events depends on the current state * Ping Pong processing - two, three, or more objects act together to determine the response to an event - usually by sending gradually more specific messages back and forth to each other like a multi-person Ping Pong volley. AKA DoubleDispatch. * Explicit object ranking - give objects rank, and have the higher ranking object do the processing (used with VisualWorksSmalltalk DoubleDispatch) * Blackboard - agents work independently (either asynchronously, or one at a time) on a common data structure. ---- I just went to the couch to think about this for ten minutes. Here is my current candidate SystemMetaphor: CollectionPlateState --------------- This sounds like BrowserAbuseSyndrome. What about complex text features such as auto-indent, auto-fill, hiliting keywords, etc? And web browsers lack standardized widgets such as tree browsers, grids, tabs, etc. ---- See also ClassBrowser ---- CategoryMetaphor