[comp.std.unix] Standards Update, IEEE 1003.2: Shell and Utilities

pc@hillside.co.uk (Peter Collinson) (06/06/91)

Submitted-by: pc@hillside.co.uk (Peter Collinson)

USENIX Standards Watchdog Committee
Stephen Walli <stephe@usenix.org>, Report Editor
Report on IEEE 1003.2: Shell and Utilities


David Rowley <david@mks.com> reports on the April 15-19 meeting in
Chicago, IL:

Background

A brief POSIX.2 project description:

   - POSIX.2 is the base standard and deals with the basic shell
     programming language and a set of utilities required for the
     portability of shell scripts.  It excludes most features that
     might be considered interactive.  POSIX.2 also standardizes
     command-line and function interfaces related to certain POSIX.2
     utilities (e.g., popen(), regular expressions, etc.).  This part
     of POSIX.2, which was developed first, is sometimes known as
     ``Dot 2 Classic.''

   - POSIX.2a, the User Portability Extension or UPE, is a supplement
     to the base POSIX.2 standard and standardizes commands, such as
     vi, that might not appear in shell scripts but are important
     enough that users must learn them on any real system.  It is
     essentially an interactive standard, and it will eventually be an
     optional chapter to a future draft of the base document.  This
     approach allows the adoption of the UPE to trail Dot 2 Classic
     without delaying it.

     Some utilities have both interactive and non- interactive
     features.  In such cases, the UPE defines extensions from the
     base POSIX.2 utility.  Features used both interactively and in
     scripts tend to be defined in the base standard.

   - POSIX.2b is a newly approved project which will cover extensions
     and new requests from other groups, such as utilities for the
     POSIX.4 (Realtime) and POSIX.6 (Security) documents.

Together, Dot 2 Classic and the UPE will make up the International
Standards Organization's ISO 9945-2 -- the second volume of the
proposed ISO three-volume POSIX standard.

Summary

POSIX.2 (Shell and Utilities) closed its recirculation ballot on 29
March. The Chair feels there will only be a small number of changes to
the current draft, probably circulated as change pages. There were
some ballot concerns over the internationalization areas, but these
will likely remain intact due to current support. There was also a
concern raised over the ballot period for a 900+ page document.
POSIX.2a closed its recirculation ballot on 24 April.

POSIX.2b has been approved after a number of scope change
recommendations from the PMC.  The POSIX.2 group requests technology
for both a new archive format, and also a new family of compression
utilities.  Much of the Chicago meeting was spent with POSIX.3.2 (Test
Methods for POSIX.2) creating test assertions for the document.

Status of POSIX.2 Balloting

The Draft 11 Recirculation Ballot for POSIX.2 closed March 29th. Some
balloters seemed to forget that it was a recirculation ballot, as
there were a large number of objections on items other than changes.
These were ruled unresponsive.

Hal Jespersen, the POSIX.2 Chair and Technical Editor, believes that
there will only be a small number of actual modifications to the
draft. Draft 12 (which may possibly be called Draft 11.1) will likely
be distributed as a set of changed pages, which he estimates to number
about 200.  (More recent estimates suggest the number of pages to be as
low as 50). Expect it sometime around July.

There were a number of objections to the internationalization part of
POSIX.2, but since Hal has support from X/Open, WG15, etc, he thinks
the current specification will remain largely intact.

There was a problem with the Draft 11 distribution. POSIX.2 is now
over 900 pages. It's balloting period was 30 days, although with a
mailing lead it was about 6 weeks.  Due to postal services, some
members of the balloting group only received their ballot copies two
weeks prior to the closing deadline. Hal Jespersen was as
accommodating as he could be on the deadline, but the extent of these
submissions was definitely affected.  The question rears its head
again.  Should we be balloting POSIX standards the same as we ballot
smaller hardware standards?

The ISO standards process sees a document move through three phases on
its way to standardization -- Committee Document, Draft International
Standard, and finally International Standard.  Draft 9 of POSIX.2 is
currently being used as a committee document.  The ISO has requested
the U.S. Member Body to forward to them another draft once it has
become more stable. The next draft (Draft 12 or Draft 11.1) will be a
likely candidate.  The ISO has delegated responsibility for producing
the POSIX draft standards documents to the U.S. Member Body, ANSI,
which in turn delegated the responsibility to the IEEE.

Status of POSIX.2a Balloting

The Draft 6 Recirculation Ballot of POSIX.2a (UPE) closed April 24th.
Unfortunately the deadline for comments came a mere three days after
the end of the April meeting. There were quite a few comments on the
unfortunate timing of the ballot close. Work on ballot resolution is
ongoing.

New PARs

The Project Management Committee (PMC) has recommended the proposed
PAR (Project Authorization Request) for 1003.2b be split into two
parts. One part will cover extensions and new requests from other
groups, such as the tar, cpio and new pax file formats from POSIX.1
(Kernel) and utilities from POSIX.4 (Realtime) and POSIX.6
(Security).  The timing and alignment issues with the ISO 9945-2
balloting process will be covered by the other part.

The scope of this second PAR is restricted to standardization of
existing industry practice. The group does not want to get into
designing new utilities.

There is also concern over draft stability when discussing the
commands to access the features from the POSIX.4 and POSIX.6
standards. How mature does the feature have to be before the POSIX.2
group goes to the effort of defining a command interface to it ?

Discussion

Donn Terry, the chair of POSIX.1 officially handed off responsibility
of the pax file formats, including the new format currently being
designed, to the POSIX.2 group.

A proposal was examined to reserve the utility status return code 126
to indicate that a utility was found but could not be successfully
invoked.  This would be especially useful in systems with limited
resources, where execution can not be assured even though the utility
has been found. The group generally agreed that this was reasonable.

There was a question as to whether the warning message for getopts
should be specified in the standard or not, so that filters could
parse it. It was decided to not specify the error format, since there
is no precedent for stating the format of something written to
standard error.

There was discussion on removing -e from pax, since charmaps were not
really intended to be used in this manner.  The -e option was intended
to allow filenames to be written out using only characters from the
portable character set.  OSF had already implemented this in their
pax, and agreed that it didn't work out too well.

The $(( notation in the Korn Shell currently can have two widely
different meanings: either spawning a subshell or expressing an
arithmetic operation. The working group agreed that disambiguating by
placing a space between the two parentheses, though inelegant, was the
best approach.

There was some discussion on a proposal on User Controllable Limits,
and whether or not it had relevance to POSIX.2.  The group felt that
there should be a command interface to these services, with the
functional interface to be provided by POSIX.1.  A proposal for the
POSIX.2 interface is now being solicited.

We also discussed the the test command. David Korn proposed fixing the
functionality of test based on the number of arguments given (1, 2 or
3). Invocations with greater than 3 arguments would not be portable.
We generally agreed on this approach.

Richard Hart from POSIX.7 (System Administration) presented the syntax
for a new printing command based on the MIT/Athena Palladium network
printing services. Everyone in the POSIX.2 group agreed that the
proposed syntax was awkward:

        prpr -print-quality draft

            means use draft if you can

        prpr =print-quality draft

            means you must use draft

        prpr =p-q draft

            means the same thing, but ``print-quality''
            has been abbreviated.

The abbreviation mechanism is particularly poor, since it is likely
that new extensions will cause namespace conflicts.

Requests for technology

There is an opportunity now to propose a new archive format.  The only
prerequisites are that it is ISO 1001 tape format compatible, and uses
the ISO 646 character set.  This consists of the invariant codeset
from a variety of character set standards, largely 7-Bit ASCII minus
about 10 contentious characters.  Here's a list of requirements:

   o Should be textual (mailable) if members are all textual

   o Should support filename and file contents mapping (eg.
     for dynamic encryption or compression)

   o Should be extensible

Personally I don't understand why the ISO 1001 tape format needs to be
a restriction. Archive formats have many other uses besides tape
backup and transfer. To embed the tape format in what could otherwise
be a general-use archive format seems overly complex and restrictive.

The group is also looking for a new family of compression utilities,
now that the Lempel-Ziv-Welch family of commands have been removed
from the standard.  The main requirements for a substitute are:

   o The algorithm should be expressed (expressible) in a
     language independent form

   o The algorithm should be free of patent issues

Test Plans and Assertions

A test plan for POSIX.2 and POSIX.2a has been written, and has been
passed to POSIX.3.2 (Test Assertions for POSIX.2) for comment and
approval.

Tuesday to Thursday were spent writing test assertions in a joint
meeting between POSIX.2 and POSIX.3.2 Commands tackled included make,
regular expressions, ln, cp, rm, mv, pax, pathconf, echo and read.

Some members volunteered test assertions written by their companies,
usually to a previous draft. They were almost always unusable, either
because they were out of date (based on previous drafts), or of poor
quality. Writing good test assertions is very difficult, and quickly
points out (the many) ambiguous wordings in the draft.

The POSIX.3.2 group would like to go to a mock ballot after the
October meeting in Parsippany, New Jersey.







































Volume-Number: Volume 23, Number 97

randall@Virginia.EDU (Randall Atkinson) (06/12/91)

Submitted-by: randall@Virginia.EDU (Randall Atkinson)

In article <1991Jun12.034606.16284@uunet.uu.net>, 
	Peter Collinson <pc@hillside.co.uk> writes:

>There was a problem with the Draft 11 distribution. POSIX.2 is now
>over 900 pages. It's balloting period was 30 days, although with a
>mailing lead it was about 6 weeks.  Due to postal services, some
>members of the balloting group only received their ballot copies two
>weeks prior to the closing deadline. Hal Jespersen was as
>accommodating as he could be on the deadline, but the extent of these
>submissions was definitely affected.  The question rears its head
>again.  Should we be balloting POSIX standards the same as we ballot
>smaller hardware standards?

  This is a very real problem.  I ended up abstaining on both the
Ada-bindings and Threads ballots because I didn't have sufficient time
to review the lengthy &/or complex ballots in the time allotted.

  It seems to me that the SEC should consider mandating that future
ballots for the POSIX arena have a longer minimum balloting period
than the IEEE requires.  This would not conflict with the IEEE
requirements and would get better standards in the final result.

>New PARs
>
>The Project Management Committee (PMC) has recommended the proposed
>PAR (Project Authorization Request) for 1003.2b be split into two
>parts. One part will cover extensions and new requests from other
>groups, such as the tar, cpio and new pax file formats from POSIX.1
>(Kernel) and utilities from POSIX.4 (Realtime) and POSIX.6
>(Security).  The timing and alignment issues with the ISO 9945-2
>balloting process will be covered by the other part.
>
>The scope of this second PAR is restricted to standardization of
>existing industry practice. The group does not want to get into
>designing new utilities.

  Such a scope is the only appropriate one.  In particular the
experience of other standards (e.g. ISO Network Protocol
interoperability problems) have made it clear that it is best to
standardise only existing practice and let there be actual implemented
experience with new utlitites or features before putting them in the
standard.

  I am glad to see this made explicit in the POSIX.2b PAR as it has
been an ongoing concern of mine (in particular with regard to
windowing interfaces that there isn't enough experience with).

>There is also concern over draft stability when discussing the
>commands to access the features from the POSIX.4 and POSIX.6
>standards. How mature does the feature have to be before the POSIX.2
>group goes to the effort of defining a command interface to it ?


It seems to me that if a draft hasn't even reached balloting that
it is not sufficiently stable for the POSIX.2 WG to make much effort
devising a suitable command interface for it.  There have been a lot
of cases where changes occurred in balloting as well, so it might
not even be stable enough at ballot-time.

>Discussion

>Richard Hart from POSIX.7 (System Administration) presented the syntax
>for a new printing command based on the MIT/Athena Palladium network
>printing services. Everyone in the POSIX.2 group agreed that the
>proposed syntax was awkward.

The posted examples are pursuasive.  The printing commands should all
be based on widespread existing practice in UN*X systems.  The MIT/Athena
Palladium services are not widespread enough to justify their adoption.

>Requests for technology
>
>There is an opportunity now to propose a new archive format.  

Why is yet another archive format needed ??


Volume-Number: Volume 23, Number 103

brnstnd@KRAMDEN.ACF.NYU.EDU (Dan Bernstein) (06/16/91)

Submitted-by: brnstnd@KRAMDEN.ACF.NYU.EDU (Dan Bernstein)

In article <1991Jun12.034606.16284@uunet.uu.net> pc@hillside.co.uk (Peter Collinson) writes:
> The group is also looking for a new family of compression utilities,
> now that the Lempel-Ziv-Welch family of commands have been removed
> from the standard.  The main requirements for a substitute are:
>    o The algorithm should be expressed (expressible) in a
>      language independent form
>    o The algorithm should be free of patent issues

My compression method, Y coding, appears to be free of all patents,
including LZW. There's nothing language-dependent about the method or
current file format. My reference implementation, yabbawhap (see
comp.sources.unix volume 24), works on a variety of UNIX and non-UNIX
systems, and produces better results than compress at reasonable speed.

Another possibility is Ross Williams' LZRW1, which produces worse
results than compress but is blindingly fast.

---Dan


Volume-Number: Volume 24, Number 9