Clem, you have a good memory of the early days of the
UNIX standards. Here is the set that I was involved with:
1. The /usr/group Proposed Standard published in January 1984
2. The /usr/group Standard published in November 1984
3. IEEE Trial Use Standard for POSIX published in April 1986
4. IEEE POSIX Standard P1003.1 published in August 1988
Heinz
On 6/26/2024 1:32 PM, Clem Cole wrote:
Note: I am a founding and voting member of both the
original
/usr/group, IEEE P1003 (a.k.a. POSIX), and a commenter for ANSI
X3.159-1989 (/a.k.a./ C89). Heinz Lycklama who is also on this list,
was chair of the former and also a founder of P1003.
Below are, of course, my opinions and my memory of times. Heinz
please add color/corrections as appropriate.
On Wed, Jun 26, 2024 at 1:56 PM segaloco via TUHS <tuhs(a)tuhs.org> wrote:
Good morning, I was wondering if anyone has the scoop on the
rationale behind the selection of standards bodies for the
publication of UNIX and UNIX-adjacent standards. C was published
via the ANSI route as X3.159, whereas POSIX was instead published
by the IEEE route as 1003.1.
Different groups and functions. More in a minute.
Was there every any consideration of C through IEEE or POSIX
through ANSI instead?
Not really; each>>generally<< had a role that the other did not,
although those lines can and have blurred.
Is there an appreciable difference suggested by the difference in
publishers?
Yes -- again, more shortly.
In any case, both saw subsequent adoption by ISO/IEC, so the track
to an international standard seems to lead to the same organizations.
Right, but you are ahead of yourself.
Per Wikipedia:
ANSI was most likely formed in 1918, when five engineering
societies and three government agencies founded the American
Engineering Standards Committee (AESC).[8] In 1928, the AESC
became the American Standards Association (ASA). In 1966, the ASA
was reorganized and became United States of America Standards
Institute (USASI). The present name was adopted in 1969.
Prior to 1918, these five founding engineering societies:
* American Institute of Electrical Engineers (AIEE, now IEEE)
* American Society of Mechanical Engineers (ASME)
* American Society of Civil Engineers (ASCE)
* American Institute of Mining Engineers (AIME, now American
Institute of Mining, Metallurgical, and Petroleum Engineers)
* American Society for Testing and Materials (now ASTM
International) had been members of the United Engineering
Society (UES).
Leaving out a >>lot<< of detail, but under ASA was their directive:
the /*Accredited Standards Committee X3 */
This means that the US government, particularly the US War Department
(late DoD), would accept their recommendations. However, a published
set of rules for how standards would be created, agreed upon, /etc/.,
for the USA became established.
One of their early roles was creating standards for the computer
industry, such as what would become ASCII,/a.k.a./, ASA X3.4-1963, and
ASA X3/INCITS 40-1966 - 9-track mag tape.
One of the things the folks at X3 had started working on we standards
that allowed program/interchange/ between different manufacturers,
although allowing manufacturers to be independent and add their own
features but keep a core that a programmer could rely upon. So,
their purvey included creating standards for FORTRAN, Algol, Cobol,
and later C. They also developed test suites for many of their
standards and offered services to firms like computer manufacturers to
certify that their products meet the standard. Thus, a program that
worked when compiled under different manufacturer compilers could be
written.
Note that AIEE/IEEE was a founding member of ASA, but it eventually
became an accredited standards body independent of ASA/ANSI. The
subtle difference was the idea of "sameness," which said this is
functionally the same as something else made by two different
electrical manufacturers and, as a result, could interoperate between
them. This was important to the US DoD because they wanted more than
one place to get similar products, at least ones that could play well
together. So, they became where things like networking, power,
/etc./, were defined and agreed upon. Of note, independent of IEEE, we
were testing groups, but if you made an error, it was basically
self-correcting -- people stopped using your product when it was
discovered you could not handle back-back ethernet packets at full speed.
So what happened...
We graduated a bunch of young engineers of my generation who know C
and UNIX. AT&T has made the sources to both technologies "open" and
freely available (libre as opposed to beer). We take the knowledge
with us, and they both start to be cloned. Since the microprocessor
came in vogue around the same time, retargeting the C compiler at many
places like Universities made sense - I did it (poorly) for the
Dennis' compiler for what would become the 68000 @Tektronix in the
summer of 1979. But if you look at the USENIX tapes from those times,
you will see many different developer tools for those processors.
However, since the AT&T tools were licensed, several implementations
grew that were mostly, if not 100%, clean of any AT&T's IP.
Since there was no standard for the language itself, and the
processors were not PDP-11, many differences crept into the different
compiler implementations. The biggest was support for the x86 and
target platforms such as CP/M and DOS, which did not store files in
the same format as UNIX and differentiated between text files and
binaries like earlier 12/18/36-bit systems from DEC had.
In the early 1980s, a group of compiler firms, originally from the PC
business, applied to set up and create the ANSI X3.159 committee.
[Thank the Lord, Dennis agreed to join it too, as he could rein in
several of the worst proposals like near/far pointers, although the
terrible text file support leaked]. It was a very slow process since
a standard did not come about a vote until 1989 and was agreed upon
until 1990.
Meanwhile, in UNIX land there, USENIX had started [see my paper: C.T.
Cole, UNIX: /A View from the Field as We Played the Game/, October 19,
2017, Le CNam – Laboratoire, Paris France], but that was primarily an
academic organization. Firms like manufacturers DEC, HP, Tektronix,
and IBM, as well as ISVs such as Heinz's Interactive System
Corporation and Microsoft, needed an organization that focused more on
their needs as commercial ventures. /usr/group (which was later
re-branded as Uniforum) was created. For many reasons (many of which
have been discussed here), the manufacturer's versions of UNIX had
begun to differ. But they had a common language C, since many, if not
most, used AT&T licensed C compilers, the compilers' input syntax was
already mostly common, but one of the things that this group realized
was it was still "work" for an ISV to move their UNIX based
application between systems and they needed something more than just a
language standard.
To address this need /usr/group, formed a standard committee under
Heinz's leadership. In 1985, we published the first UNIX standard.
One of the members of the group, Jim Issak, who then was from another
small manufacturer building a system with a UNIX-like OS, Charles
River Data Systems (CRDS - BTW: pronounce that and smile -- marketing
people are wonderful), realized that a /usr/group created standard
was helpful to us in the USA marketplace since /usr/group was not
accredited and thus our work would not be useful to be sent to the US
Gov much less and alter International standards body such as ECMA or ISO.
BTW: since our OS's were already getting different beyond the system
call layer, we decided to start with just the system call API which
was mostly common, plus agree to an interface standard to exchange
magnetic media. But this is where things like the file <unistd.h> come
from to help make the differences contained in a manner that a
recompile allowed code to move from one vendor's system to another.
By the early 1980 my former colleague, Maurice Graubie from Tektronix,
had been the chair of the IEEE 802 committee, which had published its
set of standards. BTW the number.Xstuff raised huge hackles at IEEE
at the time. It had never been done. Maurice had come up with
solutionas a way to keep the 801 standard together when it was
beginning to diverge and fall apart with the Ethernet folks on one
side and the IBM token ring folks on the other.
Since the OS was similar to other electrical standards, allowing one
manufacturer to build something the US government buys and knowing
they could get something similar from someone else, Maurice introduced
Jim to the folks at IEEE. Jim succeeded in putting together all of the
paperwork, getting the proper sponsorship from IEEE institutional
members, and forming a committee to create IEEE Proposal 1003.
As the next /usr/group meeting approached, we were already starting to
work on a revision. Jim explained the formal IEEE process. We
officially voted to disband that meeting and reconvene as IEEE P1003,
where Heinz graciously handed the gavel to Jim. It also set us back a
bit because the /usr/group document was not in a form that IEEE could
accept. So the first task was the rewrite (and use their voting
process) to have it accepted. But because of Maurice's great
compromise for the 802 committee, we started by saying this would be
the first of N standards,/i.e/., 1003.1 for the system calls, and we
would (like 802) create later standards for things like the commands.
I know that both Maurice and Jim had a little pushback by IEEE NYC,
but I am thankful that a good idea prevailed.
It's possible ANSI might able to do the same thing that IEEE did. But
the difference is that members of the/usr/group were all institutional
members of IEEE, and the style of things we needed to do at the time
was really the sort of thing IEEE was already accustomed to doing. As
for the language, since ASA/ANSI was already doing things there - that
made sense.
BTW: it has been observed that IEEE is behind VHDL - which is a
hardware description language. But against this more in their world
-- it pushed to silicon manufacturers, so you know IP can be moved
between different fabs. We can argue that it's a language, and ANSI
would have been a good place for it.