\subsection{ESRF Devices}
After studying the MIT Widget model it was decided that although it had
some very attractive features it was not completely suited to the task
at hand - providing network transparent device access.
The MIT Widget model was invented mainly to provide a toolkit for high
level X11 programming. Widgets are created and destroyed locally in
a program. They dont (usually) belong to more than one process at
a time. Their main purpose is to hide the complexity of X11 programming
behind a simple to manage and understand interface.
The Device access problem at the ESRF is a more critical global problem.
It has to provide network access to a wide variety of different devices.
There is only one copy of each device but there may be many clients
at any one time.
Errors from devices have to be treated - it doesn't help to simply 
kill the program and restart it.
There are however similarities between the MIT Widget Model and the
ESRF DSM.
The DSM has been developed 1) to provide a simplified
unified access mechanism to widely differing devices and 2) to
provide a framework for device programmers to develop programs in
a manner so that the programs themselves are 
understandable and easy to maintain.
Instead of reinventing the wheel therefore it was decided to use the
MIT Widget model as much as possible and only write/modify those parts
which either did not exist or were not suited to the Device Server
model

Amongst those items which were adopted were the Widget Naming Convention,
the organisation of the Private include files, Public include files 
and Source code files and the implementation of classes by structures.
A method finder which supported inheritance of methods from superclasses
was added to the Widget model and
the resource database was replaced with a centralised static database accessible
over the network.
