*** This is a detail of OAF internals. You do not need to know this information
in order to write programs that use the OAF API. ***

This whole setup is to allow finding objects that give us initial
entry to a universe of CORBA objects. The references to these initial
objects must be bootstrapped out of thin air, so we use well-known
locations to check if they are running and to make their existence
known when started.

OAFRegistrationCategory:
	Attributes that an initial object needs to have.

	'name' is the repo ID of the object that would need
	bootstrapping - IOW the object type. Currently this would be
	either IDL:OAF/ActivationContext:1.0 or IDL

	'session_name' is to allow things like two different OD's on the same
	user/host/domain for different $DISPLAY.

	'username', 'hostname' - in the traditional UNIX sense.

	'domain' - I think this was supposed to work like 'session_name'.
	So broken and confusing - need to run through the usage in some
	sample cases to get it right.

OAFRegistrationLocation:
	Provides the implementation of a "well-known location". liboaf comes
	with one that looks in local files in /tmp/orbit-sopwith. gnome-libs
	HEAD has one that looks at a root window property.

OAFServiceActivator: A function that can get called to start an
initial object if it can't be found by any of the
OAFRegistrationLocations. gnome-libs defines one of these that tries
to start oafd on a remote machine via rsh/ssh, but I think I forgot to
write the accompanying OAFRegistrationLocation that checks for an
existing one. Or something like that.

OAF handles multiple OAFRegistrationLocations and OAFServiceActivators
internally.

BUGS:

. You really want to be able to do things like use the
ActivationContext listed on $DISPLAY even if you aren't in a GUI
program, or be able to have remote ObjectDirectorys activated even in
a local non-gnome-libs-HEAD program. The only solution that has
presented itself so far is to install a shared library for each
regloc/serviceactivator, then have liboaf run a small program that
checks all the reglocs and returns the object requested. This is
slow. This would also have problems if the non-GUI program was run as
a daemon or something else (e.g. what if you have a BIFF-like program
that gets run from procmailrc and tries to talk to Your Favorite Mail
Check Program? $DISPLAY won't be set for /usr/bin/corbabiff)

. Yes, the naming really sucks, but people writing OAF-using programs
don't have to use this API so it's not too bad.

- ECL
