cjh@datlog.co.uk (Chris Harding) (06/28/91)
Submitted-by: cjh@datlog.co.uk (Chris Harding) I participate in the POSIX .17 work as technical editor and previously participated in the production of the base document from which the POSIX standard is being derived. I am concerned that some of the comments which I understand Scott Guthery recently posted to comp.stds.unix may give the wrong idea of what is going on and would like to set the record straight. Scott seems to have two objections: 1) that the "object management" mechanism used by the emerging P1003.17 and P1224 standards is extensible by vendors but not by users 2) that these standards do not effectively constrain the vendor, so that the user must "impedence match" between different (but still compliant) implementations. Although the first of these objections is untrue as stated, there is a valid point behind it. I will come to this later. The second objection, however, is not only wrong but is arguing against a feature which, rather than limiting the user, actually makes the API more "open". Let me justify this last statement. The movement towards "open" systems arose largely from the desire of users not to be "locked in" to vendors' proprietary implementations. The concept evolved of an "open" system as one in which there was a standard interface to applications programs. An applications program written to this interface would then be portable between different vendors' systems and the user would no longer be "locked in". But this, the original "open systems" concept, is actually somewhat naive, since it (implicitly) assumes that the user will just buy one system and write one application program to run on it. What he really wants to do is to buy several different systems and also buy - from several different vendors - several different software packages to run on them. The concept of "open" system must be expanded to address these needs. The "object management" mechanism used by P1003.17 and P1224 (it isn't really anything to do with Object Management in the sense of Smalltalk etc. and use of the phrase is a bit confusing) provides a standard representation of information that can be used by different software packages running on the same system. It also allows for the fact that different implementations may include different options from the same standard (and how many standards are there that don't have any options?) and for the fact that a software package may be released in several versions, each with different features (and how many software packages are there that don't have several versions? - only the unsuccessful ones where nobody bought the first version). In fact, it really addresses the issues that arise when trying to run different software packages (possibly from different vendors) on a single system. It is in this sense that the emerging P1003.17 and P1224 standards are more "open" than most "open systems" standards and, far from limiting the users, are really giving users much more freedom of choice. Although they provide this extra flexibility, it is not true to say that the emerging P1003.17 and P1224 standards fail to constrain the implementation properly. They define behaviour on which the application can rely. They force the implementation, where it provides a feature, to provide it in an exactly and unequivocally specified way. In short, they do constrain the implementation in the way that standards should. Coming back to the first objection, the point at issue is, who can extend the classes of object used by P1003.17 and P1224? The answer is, and sensibly can only be, that the standards bodies responsible for defining P1003.17 and P1224 are the only people who can extend them in a way that is binding on the whole community of vendors and users. Having said this, either a vendor or a user may also extend these classes to describe a proprietary feature (in the case of a vendor) or a specific requirement (in the case of a user). It is true that vendors are more likely than users to make such extensions but there is nothing in the methodology that would prevent a user from doing so. So (for example) the Military might introduce some new classes of object if it wished to define a special version of the X.400 API for Military use. The valid point behind the objection is that the "object management" methodology used by P1003.17 and P1224 does not have a "class" concept with the properties of extensibility enjoyed by the "class" concepts of Smalltalk and some other languages. This is a fair criticism. However, the methodology does have (as I have tried to show above) other properties which Smalltalk classes do not have and which are far more valuable in the context of the sophisticated "open-ness" requirements with which we now have to deal. Although it is an elegant feature, a real need for "extensibility" has yet to be demonstrated. Let's get the "open-ness" requirements sorted out first. Perhaps "extensibility" can be added later. Regards, Chris ------------------------------------------------------------------------- Chris Harding Tel: +44 81 863 0383 Data Logic Fax: +44 81 861 2010 Queens House Telex: 888103 Greenhill Way APIA SprintMail: C.HARDING HARROW HA1 1YR X/Open E-mail: c.harding@xopen.co.uk U.K. Other E-mail: cjh@datlog.co.uk Volume-Number: Volume 24, Number 28