Workplace Shell



The Workplace Shell (WPS) is an object-oriented desktop shell (also called desktop environment) produced by IBM's Boca Raton development lab for OS/2 2.0. It is based on Common User Access and made a radical shift away from the Program Manager type interface that earlier versions of OS/2 shared with Windows 3.x or the application-oriented WIMP interface of the Apple Macintosh. The Workplace Shell was also used in OS/2 Warp 3 and Warp 4, and the OS/2-based operating systems eComStation and ArcaOS.

IBM originally intended to deliver the Workplace Shell as part of the OfficeVision/2 LAN product, but in 1991 announced plans to release it as part of OS/2 2.0 instead.

Although mostly written in C, under the covers the Workplace Shell is implemented as an object-oriented class library, basing on the System Object Model (SOM). The WPS classes are glued together with an interface definition language (IDL). SOM and its IDL was developed by IBM in their Austin, Texas lab. The classes can easily be manipulated by sending simple settings strings (like "KEYWORD=VALUE;") to them both via a C and a Rexx API.

When implementing a new WPS class, it is derived from an existing class from within the WPS class hierarchy. For modifying, extending or removing certain functionality of the parent class, often only a few methods of the parent class need to be overwritten by the developer. All other functionality of the parent class can safely remain unchanged, ensuring the seamless integration of the added or modified functionality and with that the consistency of the remaining user interface.

The resulting object class is shipped in DLL form. Once the new object class implemented by it is registered with the Workplace Shell and an instance of this class is created, it can be acted on by the user or other programs as every other Workplace Shell object.

A part of the WPS design allows for the developer of a class Y which extends or modifies a class X to execute an additional API on installation which will let the WPS 'replace' class X by class Y. This will make even all existing instances of class X behave as instances of the modified class Y; i.e., almost a retroactive inheritance. This allows for many useful third-party desktop utilities that add or modify functionality to or of existing objects without access to IBM's source code. Where the IDL and class headers also of derived classes are published, these classes can as well be extended in turn in the same way.