home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / volume.18 / text0013.txt < prev    next >
Encoding:
Internet Message Format  |  1990-03-18  |  15.4 KB

  1. From: Doug Gwyn <gwyn@smoke.brl.mil>
  2.  
  3.  
  4. In article <500@longway.TIC.COM> std-unix@uunet.uu.net writes:
  5. >From: Jeffrey S. Haemer <jsh@usenix.org>
  6. >            An Update on UNIX* and C Standards Activities
  7.  
  8. I have several comments on these issues (and will try to refrain
  9. from commenting on the ones I don't track closely).
  10.  
  11. >1003.1
  12. >An example is the recent flap over transparent file access, in which the
  13. >group defining the standard (1003.8/1) was told, in no uncertain terms,
  14. >that NFS wouldn't do, because it wasn't consistent with dot one semantics.
  15.  
  16. This is an important point; 1003.1 did very much have in mind network
  17. file systems, and we decided that the full semantics specified in 1003.1
  18. were really required for the benefit of portable applications on UNIX
  19. systems (or workalikes), which is what 1003 was originally all about.
  20.  
  21. Having run into problem after problem with the lack of full 1003.1
  22. semantics in our NFS-supporting environment, I fully agree with the
  23. decision that applications should be able to rely on "UNIX semantics"
  24. and that NFS simply does not meet this criterion.  (There are other
  25. network-transparent file system implementations that do; the design
  26. of NFS was constrained by the desire to support MS/DOS and to be
  27. "stateless", both of which run contrary to UNIX filesystem semantics.)
  28.  
  29. >One wonders if things like the dot six chmod dispute will finally be
  30. >resolved here as well.
  31.  
  32. Fairly late in the drafting of Std 1003.1, consultation with NCSC and
  33. other parties concerned with "UNIX security" led to a fundamental
  34. change in the way that privileges were specified.  That's when the
  35. notion of "appropriate privilege" and the acknowledgement of optional
  36. "additional mechanisms" were added, deliberately left generally vague
  37. so as to encompass any other specification that would be acceptable
  38. to the 1003.1 people as not interfering unduly with the traditional
  39. UNIX approach to file access permissions.
  40.  
  41. Upon reviewing the chmod spec in IEE Std 1003.1-1988, I see no reason
  42. to think that it would interfere with addition of ACL or other similar
  43. additional mechanisms, the rules for which would be included in the
  44. implementation-defined "appropriate privileges".  Remember, the UNIX-
  45. like access rules of 1003.1 apply only when there is no additional
  46. mechanism (or the additional mechanism is satisfied).
  47.  
  48. >A key to success will be keeping enough of the original dot one
  49. >participants available and active to insure consistency.
  50.  
  51. Good luck with this.  Personally, I couldn't afford to pay the dues
  52. and limited my membership to 1003.2 once Std 1003.1-1988 was published.
  53.  
  54. >1003.2
  55. >The dot two draft currently in ballot, ``dot-two classic,'' is
  56. >intended to standardize commands that you'd find in shell scripts.
  57. >Unfortunately, if you look at dot-two classic you'll see things
  58. >missing.  In fact, you could have a strictly conforming system that
  59. >would be awfully hard to to develop software on or port software to.
  60.  
  61. >From my point of view, 1003.2 unfortunately included TOO MUCH, not
  62. too little, for portable application support.  (My views on the
  63. proper set of commands and options were spelled out in a very early
  64. 1003.2 document.)
  65.  
  66. >To solve this, NIST pressured dot two into drawing up a standard for a
  67. >user portability extension (UPE).  The distinction is supposed to be
  68. >that dot-two classic standardizes commands necessary for shell script
  69. >portability, while the UPE standardizes things that are primarily
  70. >interactive, but aid user portability.
  71.  
  72. NIST apparently thinks that all the horrible existing tools they're
  73. familiar with should be forced upon all environments.  I think this
  74. does interactive users a DISservice.  For one thing, many interesting
  75. architectures require different tools from the traditional ones, and
  76. requiring the traditional ones merely makes it difficult or impossible
  77. for better environments to be provided under contracts that require
  78. conformance to the UPE.  (This probably includes most future U.S.
  79. government procurements, which means most major vendor OSes.)
  80.  
  81. >The two documents have some strategic problems.
  82. >   o+ Many folks who developed dot-two classic say the UPE is outside
  83. >     of dot two's charter, and won't participate in the effort.  This
  84. >     sort of behavior unquestionably harms the UPE.  Since I predict
  85. >     that the outside world will make no distinction between the UPE
  86. >     and the rest of the standard, it will actually harm the entire
  87. >     dot-two effort.
  88.  
  89. But they're right.  The UPE effort should be STOPPED, immediately.
  90. There IS no "right" way to standardize this area.
  91.  
  92. >   o+ The classification criteria are unconvincing.  Nm(1) is in the
  93. >     UPE.  Is it really primarily used interactively?
  94.  
  95. "nm" is precisely the sort of thing that should NOT be standardized
  96. at all, due to widely varying environmental needs in software
  97. generation systems.  There have been numerous attempts to standardize
  98. object module formats (which is similar to standardizing "nm" behavior),
  99. and none of them have been successful over anywhere near the range of
  100. systems that a 1003 standard should properly encompass.
  101.  
  102. >   o+ Cc has been renamed c89, and lint may become lint89.  This is
  103. >     silly and annoying, but look on the bright side: at least we can
  104. >     see why c89 wasn't put in the UPE.  Had it been, it would have
  105. >     had to have a name users expected.
  106.  
  107. "cc" (and "nm") is not sufficiently useful to APPLICATIONS to merit
  108. being in 1003.2 at all.  Certainly its options cannot be fully specified
  109. due to the wide range of system-specific support needed in many
  110. environments.  Thus, "cc options files" where options include just -c
  111. -Iwherever -Dname=value and -o file and files includes -lwhatever is all
  112. that has fully portable meaning.  Is there really any UNIX implementation
  113. that doesn't provide these so that a standard is needed?  I think not.
  114.  
  115. >   o+ Who died and left NIST in charge?  POSIX seems constantly to be
  116. >     doing things that it didn't really want to do because it was
  117. >     afraid that if it didn't, NIST would strike out on its own.
  118. >     Others instances are the accelerated timetables of .1 and .2, and
  119. >     the creation of 1003.7 and 1201.)
  120.  
  121. The problem is, NIST prepares FIPS and there is essentially no stopping
  122. them.  Because FIPS are binding on government procurements (unless
  123. specific waivers are obtained), they have heavy economic impact on
  124. vendors.  In the "good old days", NBS allowed the computing industry
  125. to develop suitable standards and later blessed them with FIPS.  With
  126. the change in political climate that occurred with the Reagan
  127. administration, which was responsible for the name change from NBS to
  128. NIST, NIST was given a more "proactive" role in the development of
  129. technology.  Unfortunately they seem to think that forcing standards
  130. advances the technology, whereas that would be true only under
  131. favorable circumstances (which unsuitable standards do not promote).
  132. (Actually I think that the whole idea of a government attempting to
  133. promote technology is seriously in error, but that's another topic.)
  134.  
  135. I don't know how you can tone down NIST.  Perhaps if enough congressmen
  136. receive enough complaints some pressure may be applied.
  137.  
  138. >   o+ Crucial pieces of software are missing from dot two.  The largest
  139. >     crevasse is the lack of any form of source-code control.  People
  140. >     on the committee don't want to suffer through an SCCS-RCS debate.
  141. >     POSIX dealt with the cpio-tar debate.  (It decided not to
  142. >     decide.) POSIX dealt with the vi-emacs debate.  (The UPE provides
  143. >     a standard for ex/vi.) POSIX is working on the NFS-RFS debate,
  144. >     and a host of others.  Such resolutions are a part of its
  145. >     responsibility and authority.  POSIX is even working on the
  146. >     Motif-Open/Look debate (whether it should or not).
  147.  
  148. The problem with all these is that there is not a "good enough"
  149. solution in widespread existing practice.  This should tell the
  150. parties involved that standardization in these areas is therefore
  151. premature, since it would in effect "lock in" inferior technology.
  152. However, marketing folks have jumped on the standardization
  153. bandwagon and want standards even where they're inappropriate.
  154. (This is especially apparent in the field of computer graphics.)
  155.  
  156. >     At the very least, the standard could require some sort of source
  157. >     code control, with an option specifying which flavor is
  158. >     available.  Perhaps we could ask NIST to threaten to provide a
  159. >     specification.
  160.  
  161. Oh, ugh.  Such options are evil in a standard, because they force
  162. developers to always allow for multiple ways of doing things, which is
  163. more work than necessary.
  164.  
  165. You shouldn't even joke about using NIST to force premature decisions,
  166. as that's been a real problem already and we don't need it to get worse.
  167.  
  168. >As a final note, because dot two (collective) standardizes user-level
  169. >commands, it really can provide practical portability across operating
  170. >systems.  Shell scripts written on a dot-two-conforming UNIX system
  171. >should run just fine on an MS-DOS system under the MKS toolkit.
  172.  
  173. I hope that is not literally true.  1003 decided quite early that it
  174. would not bend over backward to accommodate layered implementations.
  175. For MS-DOS to be supported even at the 1003.2 level would seem to
  176. require that the standard not permit shared file descriptors,
  177. concurrent process scheduling, etc. in portable scripts.  That would
  178. rule out exploitation of some of UNIX's strongest features!
  179.  
  180. >On the surface, it seems logical and appealing that documents like
  181. >1003.1 be re-written as a language-independent standard, with a
  182. >separate C-language binding, analogous to those of dot five and dot
  183. >nine.  But is it really?
  184.  
  185. I don't think it is.  UNIX and C were developed together, and C was
  186. certainly intended to be THE systems implementation language for UNIX.
  187.  
  188. >First, it fosters the illusion that POSIX is divorced from, and
  189. >unconstrained by its primary implementation language.  Should the
  190. >prohibition against nul characters in filenames be a base-standard
  191. >restriction or a C-binding restriction?
  192.  
  193. The prohibition is required due to kernel implementation constraints
  194. (due to UNIX being implemented in C and relying on C conventions for
  195. such things as handling pathname strings).  Thus the prohibition is
  196. required no matter what the application implementation language.
  197.  
  198. >It would be nice if this push for language-independent POSIX would go
  199. >away quietly, but it won't.
  200.  
  201. As I understand it, it is mainly ISO that is forcing this, probably
  202. originally due to Pascal folks feeling left out of the action.
  203. Because many large U.S. vendors have a significant part of their
  204. market in Europe, where conformance with ISO standards is an
  205. important consideration, there is a lot of pressure to make the
  206. U.S.-developed standards meet ISO requirements, to avoid having to
  207. provide multiple versions of products.  I think this is unfortunate
  208. but don't have any solution to offer.
  209.  
  210. >X3J11
  211. >A single individual, Russell Hansberry, is blocking the official
  212. >approval of the ANSI standard for C on procedural grounds.  At some
  213. >point, someone failed to comply with the letter of IEEE rules for
  214. >ballot resolution.  and Hansberry is using the irregularity to delay
  215. >adoption of the standard.
  216.  
  217. This is misstated.  IEEE has nothing to do with X3J11 (other than
  218. through the 1003.1/X3J11 acting liaison, at the moment yours truly).
  219.  
  220. Mr. Hansberry did appeal to X3 on both technical and procedural
  221. grounds.  X3 reaffirmed the technical content of the proposed
  222. standard and the procedural appeal was eventually voluntarily
  223. withdrawn.  The ANSI Board of Standards Review recently approved
  224. the standard prepared by X3J11.
  225.  
  226. The delay in ratification consisted of two parts:  First, a delay
  227. caused by having to address an additional public-review letter
  228. (Mr. Hansberry's) that had somehow been mislaid by X3; fortunately
  229. the points in the letter that X3J11 agreed with had already been
  230. addressed during previous public review resolution.  (Note that
  231. X3J11 and X3 do NOT follow anything like the IEEE 1003.n ballot
  232. resolution/consensus process.  I much prefer X3J11's approach.)
  233. Thus through expeditious work by the editor (me again) and reviewers
  234. of the formal X3J11 document responding to the issues raised by the
  235. late letter, this part of the delay was held to merely a few weeks.
  236. The second part of the delay was caused by the appeal process that
  237. Mr. Hansberry initiated (quite within his rights, although nobody I
  238. know of in X3J11 or X3 thought his appeal to be justified).  The
  239. net effect was to delay ratification of the ANSI standard by
  240. several months.
  241.  
  242. >This has had an odd effect in the 1003 committees.  No one wants to
  243. >see something like this inflicted on his or her group, so folks are
  244. >being particularly careful to dot all i's and cross all t's.  I say
  245. >odd because it doesn't look as though Hansberry's objections will have
  246. >any effect whatsoever on either the standard, or its effectiveness.
  247. >Whether ANSI puts its stamp on it or not, every C compiler vendor is
  248. >implementing the standard, and every book (even K&R) is writing to it.
  249. >X3J11 has replaced one de-facto standard with another, even stronger
  250. >one.
  251.  
  252. That's because all the technical work had been completed and the
  253. appeal introduced merely procedural delays.  Thus there was a clear
  254. specification that was practically certain to become ratified as the
  255. official standard eventually, so there was little risk and considerable
  256. gain in proceeding to implement conformance to it.
  257.  
  258. You should note that no amount of dotting i's and crossing t's
  259. would have prevented the Hansberry appeal.  I'm not convinced that
  260. even handling his letter during the second public review batch would
  261. have forestalled the appeal, which so far as I can tell was motivated
  262. primarily by his disappointment that X3J11 had not attempted to specify
  263. facilities aimed specifically at real-time embedded system applications.
  264. (Note that this sort of thing was not part of X3J11's charter.)
  265.  
  266. >1201
  267. >someone smart will show us a better way to do graphics, and X will
  268. >become a backwater.
  269.  
  270. Someone smart has already shown us better ways to do graphics.
  271. (If you've been reading ACM TOG and the USENIX TJ, you should have
  272. already seen some of these.)
  273.  
  274. There is no doubt a need for X standardization, but it makes no
  275. sense to bundle it in with POSIX.
  276.  
  277. >If 1201.1 ignores X and NIST, can it do anything?  Certainly.  The
  278. >real problem with the occasionally asked question, ``are standards
  279. >bad?'' is that it omits the first word: ``When.'' Asked properly, the
  280. >answer is, ``When they're at the wrong level.'' API's XVT is example
  281. >of a toolkit that sits above libraries like Motif or the Mac toolbox,
  282. >and provides programmers with much of the standard functionality
  283. >necessary to write useful applications on a wide variety of window
  284. >systems.  Even if XVT isn't the answer, it provides proof by example
  285. >that we can have a window-system-independent, application programming
  286. >interface for windowing systems.  1201.1 could provide a useful
  287. >standard at that level.  Will it?  Watch and see.
  288.  
  289. This makes a good point.  Standards can be bad not only because of
  290. being drawn up for the wrong conceptual level, but also when they
  291. do not readily accommodate a variety of environments.  1003.1 was
  292. fairly careful to at least consider pipes-as-streams, network file
  293. systems, ACLs, and other potential enhancements to the POSIX-
  294. specified environment as just that, enhancements to an environment
  295. that was deliberately selected to support portability of applications.
  296. If a standard includes a too-specific methodology, it actually will
  297. adversely constrain application portability.
  298.  
  299. By the way, I could use more information about API's XVT.  How can
  300. I obtain it?
  301.  
  302. Volume-Number: Volume 18, Number 13
  303.  
  304.