home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / volume.28 / text0039.txt < prev    next >
Encoding:
Text File  |  1992-08-17  |  16.6 KB  |  332 lines

  1. Submitted-by: stephe@usenix.org (Stephen R. Walli)
  2.  
  3. Kevin Lewis <klewis@gucci.enet.dec.com> reports on the April
  4. 8-12, 1992 meeting in Dallas, TX:
  5.  
  6. POSIX.0: Guide to Open Systems Environments.AU "Stephe Walli
  7.  
  8. [Warning - Profiles are poorly understood, ill-defined specifications
  9. that are being drafted as full standards in various corners of the
  10. standards community. If at first the article seems twisty and
  11. convoluted, that is because the topic is twisty and convoluted, mired
  12. in a lot of historical context. The article presents the historical
  13. context for profiling activities, and the traps lying in wait for
  14. unsuspecting applications developers. It finishes with a few
  15. recommendations. --poster ]
  16.  
  17. Profiles are the latest confusion to appear on the open systems
  18. standards scene. They are supposed to define a view on one or more
  19. standards in a coherent way to fulfill a general need. This need may
  20. be something like: ``a programming platform for general multi-user,
  21. multi- processing business applications''; or maybe:  ``supercomputing
  22. applications typically require the following services''. This seems
  23. reasonable. It also seems to feel right. So what happened?
  24.  
  25. In the Beginning ...
  26.  
  27. The POSIX.1 (ISO/IEC 9945-1:1990 == IEEE Std. 1003.1-1990) standard
  28. standing alone is not enough. By its own definition, it requires C
  29. language support. This can be either Common Usage C or Standard C
  30. (ISO/IEC 9899:1989 == ANSI X3.159-1989). These two standards
  31. together provide a reasonable programming environment. They are not
  32. complete, there are many things missing. To move the standard
  33. forward, things were left out that were too contentious at the time.
  34. It was better to have a some kind of standard than none at all.
  35.  
  36. POSIX.1 also has optional functionality. Some of this functionality
  37. is called out by ``Big-O'' options, such as {NGROUPS_MAX},
  38. {_POSIX_JOB_CONTROL}, or {_POSIX_CHOWN_RESTRICTED}. These are
  39. implementation level options, and a vendor could choose to not
  40. implement them and still be conforming. There are other named
  41. options, such as {_POSIX_NO_TRUNC}, and {_POSIX_SAVED_IDS}, which may
  42. or may not be implemented. A strictly conforming application should
  43. never count on such functionality being present.
  44.  
  45. Using this simple model, the National Institute of Standards and
  46. Technology (NIST) created the U.S. government procurement document,
  47. FIPS PUB 151-1. In it, NIST specified what options and limits must be
  48. supported from POSIX.1, and how the C language support should be done.
  49. The intent was to provide as functional a platform as possible by
  50. mandating as much of the POSIX.1 standard as possible. Something upon
  51. which U.S. government applications developers could depend. Simple.
  52.  
  53. A long time ago, relatively speaking, X/Open was formed. It described
  54. a collection of specifications that all of its member vendor
  55. organizations would adhere to. Thereby it provided a Common
  56. Application Environment (CAE) for applications portability. This
  57. specification of a platforms functionality was written down in the
  58. X/Open Portability Guide (XPG). They have made a point of adopting
  59. POSIX standard interfaces where possible, moving away from the
  60. original SVID definitions. Perhaps not complete, but still relatively
  61. simple. Both FIPS and the X/Open XPG feel kind of like something you,
  62. as an applications developer, might want to point to when describing
  63. the environment you want.
  64.  
  65. Now let's move on to where things start getting messy. A number of
  66. things start happening in parallel, which means the confusion factor
  67. goes up exponentially. POSIX began doing some things. ISO was doing
  68. others. The industry consortia were doing something else. And
  69. remember, the industry consortia are the ones backed by vendor money,
  70. and have a stake in selling you their solution. Industry consortia
  71. = A vendor once removed.
  72.  
  73. POSIX
  74.  
  75. A few years ago, at the beginning of the Great Project Proliferation
  76. in POSIX, two projects began which would develop Applications
  77. Environment Profiles (AEPs) for Supercomputing (POSIX.10) and
  78. Transaction Processing (POSIX.11). The intent was to describe how to
  79. use POSIX in building applications in these two particular domains. In
  80. the last two years, two more AEP projects developed in POSIX, one for
  81. Real-time applications (POSIX.13) and one for Multi-processor
  82. applications (POSIX.14).
  83.  
  84. These last two are illustrative of many of the problems encountered.
  85. The POSIX.4 (Real-time) and POSIX.4a (Threads) standards will become
  86. addendums to the POSIX.1 base standard. All function interfaces
  87. defined by POSIX.4 and POSIX.4a will need to be provided by future
  88. implementations of POSIX.1, although they may be just stubs returning
  89. ENOSUPPORT (or some such), if the implementation does not support the
  90. added functionality. This functionality will be called out by named
  91. options. Hmmmm. Getting a little muddy.
  92.  
  93. POSIX.13 and POSIX.14 would hopefully define an applications domain
  94. that must be provided by an implementation, for the appropriate class
  95. of applications. By pointing at the appropriate base standards and
  96. choosing options, we can clearly define the requirements of a class of
  97. real-time or multi-processing applications. It is unclear whether the
  98. base standards are POSIX.1, POSIX.4, and POSIX.4a, or some future, as
  99. yet completed ISO/IEC 9945-1:2001.
  100.  
  101. That's perplexing enough. Now consider the following. POSIX.6
  102. (Security), POSIX.8 (Transparent File Access), POSIX.12 (Protocol
  103. Independent Interfaces), POSIX.15 (Batch), and POSIX.17 (Directory
  104. Services) functions will all be grafted onto POSIX.1, with options, as
  105. they are approved. All of these base API standards, some of which are
  106. nothing more than option-labelled ``diffs'' to POSIX.1 (i.e. POSIX.8),
  107. will somehow be fit together into one BIG book. (And people thought
  108. POSIX.2 was big!)
  109.  
  110. Remember, all of the function interfaces will need to be provided by
  111. an implementation, even if only as stubs because the ``option'' is not
  112. provided by the implementation. A portable application will spend all
  113. of its start-up time querying sysconf() to determine if the underlying
  114. support is present. Profiles, which strategic management believes will
  115. provide some wonderful shorthand notation to discuss procurement
  116. packages with vendors, will do nothing for the applications developers
  117. actually writing applications.
  118.  
  119. Application Environment Profiles
  120.  
  121. I made reference to AEPs defining an environment that must be provided
  122. by an implementation to support an application domain. This is another
  123. source of confusion. Are we specifying an application domain where
  124. the implementation supports far more?  It likely does anyway, but in a
  125. non- standard fashion. Or are we specifying a ``platform''
  126. environment, so it provides a broad base of functionality typically
  127. required by an application domain. I believe this ambiguity lies at
  128. the heart of the ``sub-setting'' problem between POSIX.1 and POSIX.13.
  129.  
  130. The ``sub-setting'' argument arises because the real-time AEP
  131. (POSIX.13) wants the ability to call out parts of POSIX.1 as options,
  132. (e.g. the file system.) Some people feel this is a horrible idea,
  133. since POSIX.1 specifies a good general purpose base upon which to
  134. build applications. The profile specifiers however don't need the rest
  135. of the standard to describe their application domain. This has been a
  136. constant source of argument and confusion in the POSIX world. What can
  137. a profile point to, and how?
  138.  
  139. And then there are other specifications, outside of POSIX and TCOS,
  140. that would be obvious to include in certain application domain
  141. profiles. The POSIX.14 Multi-processing AEP would like to point the
  142. X3 parallel language extensions work. The IEEE has no problem with
  143. pointing to other specifications, even incomplete early drafts such is
  144. the case here. It might even be an algorithm in a textbook.
  145.  
  146. If the point is to define a standards based environment, why would
  147. anyone want a profile standard to point to an indeterminate draft of a
  148. standard which is very unstable, even once it is mature enough to
  149. ballot?  De facto specifications from vendors and vendor consortia
  150. (such as PostScript or OSF/Motif) are more stable than this!
  151.  
  152. ISO, on the other hand, has very strict rules about what can be
  153. pointed to in a profile. This leads us to another fine source of
  154. information and confusion. Let's look at ISO's contribution.
  155.  
  156. ISO and the OSI Stack
  157.  
  158. ISO has a little more experience with profiles, or maybe one should
  159. say longer experience. If I understand things correctly [salt
  160. warning]:
  161.  
  162.    - The ISO SC21 working groups defined the now famous seven layer
  163.      stack. This was an anticipatory model, telling us how things
  164.      should/would be done in the future, rather than one cluttered by
  165.      implementations.
  166.  
  167.    - Vendors were somewhat horrified when governments started leaning
  168.      in this well defined, robust direction. They still wanted to be
  169.      able to play in the lucrative government sandbox. They started
  170.      demonstrating how, if you interpret things in one light, their
  171.      product fits the model here, or really fulfills these two layers
  172.      together over there, and so on. The stack mutated a little.
  173.  
  174.    - The wonderful situation arose, that it was now possible to draw
  175.      an entire path through the stack, top to bottom which wouldn't
  176.      communicate with another line through the stack. People even
  177.      gave this a name: conforming incompatible implementations.
  178.  
  179.    - The procurement agencies weren't too thrilled by this turn of
  180.      events, and profiles were born. U.S. GOSIP (Government OSI
  181.      Profile) specified a known implementable path through the maze,
  182.      and they used this for procurement specifications to ensure that
  183.      one government OSI installation could communicate with another.
  184.  
  185. So we now have this concept of a profile. Choose a set of API and
  186. protocol specifications that will work together, to form the OSI
  187. communications models. ISO even developed a document specifying how to
  188. do this. Technical Report 10000 (TR10000, or TR10K) defines a set of
  189. rules for how to define an OSI profile.
  190.  
  191. TR10K has very strict ideas about how OSI profiles are to be
  192. constructed, what they can point to and how. Profiles can only point
  193. to ISO standards (or other ISO profiles), if they are to have
  194. normative weight. Otherwise, the references are just informative.
  195.  
  196. Chaos Sets In ...
  197.  
  198. When the full complexity of this profiling problem began to appear, a
  199. number of different working groups began investigating the problem
  200. from various angles.
  201.  
  202. The profiling groups within POSIX were identifying problems as they
  203. built their drafts almost from the time they started meeting. The
  204. groups operated fairly autonomously, however, and initially never got
  205. together.
  206.  
  207. Appeals were made to the POSIX.0 working group for help. The POSIX.0
  208. Guide to Open Systems Environments defines a model for how strategic
  209. management views standards being used, identifies many standards and
  210. where they fit into the model, and even has a couple of chapters on
  211. profiling activities and how they should be done. The POSIX.0 working
  212. group argued, however, that it was not responsible for setting
  213. profiling policy. Go figure.
  214.  
  215. After much pain and gnashing of teeth by the four POSIX profiling
  216. groups, a TCOS steering committee was formed to help solve the
  217. problems they had been having for about two years at this point. The
  218. group is made up officially of one member from each of the working
  219. groups defining profiles, and a few members of POSIX.0. Really.
  220.  
  221. The Profiling Steering Committee has been meeting for a year now. They
  222. were immediately lost in a forest of liaison points, and information
  223. gathering, trying to determine what the state of profiling in the
  224. world. Now to my poor naive way of thinking, someone is not doing
  225. their job here. If the POSIX.0 members of the PSC did not already have
  226. all of the profiling documents that could be found, upon what is the
  227. profiling material in POSIX.0 based?  Conversely, if they did have the
  228. profiling information and experience, then why has it taken a year to
  229. define a set of rules by which IEEE POSIX working groups should be
  230. defining profiles?
  231.  
  232. And even with a Profiling Steering Committee, they were so busy
  233. investigating what everyone else was doing, no one noticed that the
  234. POSIX.13 Real-time profiles were in ballot. Takes your breath away.
  235.  
  236. On the ISO front, things aren't much better. True to their
  237. anticipatory nature of late, a few different groups have been formed
  238. to investigate and comment upon something which doesn't yet exist.
  239. Technical Specification Group 1 (TSG1) has taken a kick at the cat.
  240.  
  241. The Special Group on Functional Specifications (SGFS) is also giving
  242. it a try. SGFS is attempting to take the TR10K document and modify it
  243. in a couple of places so as to make it applicable to the functional
  244. API standards, such as POSIX.
  245.  
  246. The European Workshop on Open Systems (EWOS), a CEN/CENELEC sponsored
  247. body, has set-up a working group to investigate a Common Application
  248. Environment (CAE). This work may be the most pertinent to date.
  249. There are people in this working group that have actually spent time
  250. attempting to specify real profiles in the commercial world. X/Open
  251. is involved in the work, lending its experience with defining
  252. specifications such as XPG3.
  253.  
  254. The EWOS work attempts to define a method of investigating the user
  255. requirements, building up the definitions and interfaces
  256. (informational rather than actual programming interfaces), and only as
  257. the very last step investigating how standards might be applied to the
  258. requirements model.
  259.  
  260. I was careful in the last paragraph to not say what type of profile
  261. was being defined. There is still a lot of discussion with respect to
  262. what is an application environment profile, versus a platform
  263. environment profile, and there is even a new concept of a component
  264. profile. There is grey, and then there are shades of grey.
  265.  
  266. Wrap Up
  267.  
  268. > GET SENSE
  269. I SEE NO SENSE HERE.
  270. > XYZZY
  271. XYZZY DOES NOT WORK HERE.
  272. > DROP THE BIRD
  273.  
  274. Where do we go from here?
  275.  
  276. Profiles are poorly defined specifications (despite the many attempts
  277. at writing rules for their creation,) based for the most part on
  278. unstable documents in ballot, and there is no real experience at
  279. defining and implementing formal profiles in the open systems world.
  280. (The OSI profiles appear to be a well defined, well structured set of
  281. specifications which developed after there was experience with the
  282. stack - not before.)
  283.  
  284. Why do people feel that these documents should be standards?  Why
  285. build castles on foundations of sand?  We do NOT know what shape some
  286. of the key standards will be in, until they finish ballot. Simply
  287. pointing to an interim draft of a document in ballot, (even if the
  288. IEEE is willing to archive the draft,) is silly.
  289.  
  290. The point is to specify an environment (application specific or not)
  291. which applications developers can count on. These environment
  292. specifications are supposed to be standards based. That's the whole
  293. point!  The draft documents in ballot will change. Saying we'll modify
  294. the profile standard later, when the base documents complete ballot is
  295. naive!  People will have used it in procurements. Applications will
  296. have been written. What if the functionality in the base standard is
  297. gone? Or mutated so as to be useless to the profile? What's the rush
  298. for a useless standard?
  299.  
  300. There is the desire to specify how a set of standards can be used
  301. together to define a known environment to solve a set of applications
  302. portability problems. The simple extremes of a single standard profile
  303. (FIPS PUB 151-1), or a suite of specifications (X/Open's Portability
  304. Guide), have proven to be useful. It is useful for people to put down
  305. on paper the definition of a set of requirements for a particular
  306. applications domain, as is described by documents like the EWOS CAE
  307. working group's work. This should be done in a less formal way.
  308.  
  309. The Paul Masson Method should be applied. (We will define no standard
  310. before its time.) Make the profiling work either ``guidelines'' or
  311. ``recommended practices'' at the IEEE level, or ``technical reports''
  312. at the ISO level. Until people have REAL experience putting these
  313. complex, subtle API definitions together with appropriate other
  314. functional and language standards, many of which are still in ballot or
  315. under definition, profiles should not be given the weight of full
  316. standards.
  317.  
  318. If you're an application developer, get involved. Follow the POSIX
  319. mailings. Determine what your national standards organisation is
  320. doing. Ask questions, or make yourself heard through your
  321. institutional representatives to POSIX. (USENIX, EurOpen, Uniforum,
  322. DECUS, CUG, and SHARE are all represented in IEEE TCOS. X/Open, Unix
  323. International, and the OSF are also present.)
  324.  
  325. Before some strategic thinking manager above you makes the decision
  326. for you, you should fully appreciate the enormity of the confusion
  327. being unleashed on you as you quietly contemplate that POSIX.1 and
  328. ANSI C are probably useful afterall.
  329.  
  330. Volume-Number: Volume 28, Number 31
  331.  
  332.