Objects: ActivationContext: One per session. Performs queries on object directories. Gets an amalgamated list ObjectDirectory: Normally, one per user-system tuple. Maintains a database of objects. Activates objects upon request. ImplementationID (pseudo): Uniquely identifies an implementation. ActivationID (pseudo): ImplementationID, plus whatever other contextual information is necessary to activate the server (hostname, OD class, etc.) Use cases: Panel applet 1. User wants a new panel applet. 2. Panel asks ActivationContext->activate("impl_id") 3. AC asks ODs who has impl_id available. 4. AC looks through OD query results, looks for one that matches the requirements and preferences. (a) Narrow down list to those which match requirements. (b) Sort by preferences. (c) Choose first on list. 5. AC asks OD to activate server. 6. AC returns result. Bonobo component 1. User gets list of bonobo components (a) Query the AC for all objects that meet requirements, sort by preferences. 2. User chooses. 3. Proceed similar to above case from step 2. Editor 1. App says "give me an IDL:Editor:1.0". 2. AC searches through ODs (a) Narrow down list to those which match requirements. (b) Sort by preferences. (c) Choose first on list. XXX how to use defaults?