Here begins the part of my trip report that talks about the reason for the trip. I’ll probably combine several days into single posts since I might not have much to say that would be of interest to a general audience.
This week I’m attending meetings of ISO/IEC JTC1 SC22 WG21 and INCITS/C++, the standards committees for the C++ programming language. (It’s not a joint meeting, but the two committees meet at the same place at the same time. Ask the lawyers, I don’t understand it.)
I’ll begin by briefly describing how these meetings work, and then “below the fold” I’ll have a bunch of geeky info for folks who really like organizational charts (although I won’t have any actual charts).
We meet in full committee three times per year, although it was pretty much all Zoom during COVID. The first post-COVID face-to-face meeting was in November in Kailua-Kona, Hawaii (which I missed). This week we’re meeting in Issaquah, Washington, a suburb of Seattle. The summer meeting will be in June in Varna, Bulgaria.
We meet for five and a half days. Monday morning is a plenary session where we handle a bunch of administrivia (approve the agenda, approve the previous meeting’s minutes, stuff like that). After lunch, we break into subgroups where most of the actual work gets done. Saturday morning is another plenary session where we take formal votes. By the time we get to Saturday, everything is pretty much a done deal; and with the odd exception here and there, all motions pass by unanimous consent.
A couple hundred people from around the world show up at the meetings, and we’d never get anything done if we tried to do the real work in plenary sessions. Also, nobody knows everything, so we tend to gravitate to smaller groups where we might have some useful input. I, for example, will probably participate mostly in the Library Evolution Working Group which considers changes to the standard library.
We’ve adopted a very aggressive schedule of publishing a new version of the C++ standard every three years; and since
OK, now for the boring organizational stuff:
There are basically two kinds of organizations that promulgate international standards.
First are consortia whose members tend to be big companies.
- You might have heard of IEEE. They have one standard that’s of interest to computer geeks like me, IEEE 754, which specifies the format for floating point numbers.
- You might also have heard of The Unicode Consortium, the folks who write the Unicode standard.
- You might not have heard of The Austin Common Standards Revision Group, commonly called just “the Austin Group”, which promulgates the POSIX standard.
I’m not a member of any of those.
There are two organizations, the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), whose members are national standards bodies like the American National Standards Institute (ANSI), the Standards Council of Canada (SCC), the British Standards Institution (BSI), the Deutsches Institut für Normung (DIN)…you get the idea.
ISO and IEC have a bit of overlap in the area of IT, so they have Joint Technical Committee 1 (JTC1) which promulgates IT standards.
JTC1 has a number of subcommittess, and one of interest in this discussion is SC22, the subcommittee for “programming languages, their environments and system software interfaces” where “their…interfaces” is generally taken to mean operating systems.
SC22 is further divided into working groups: WG5 for Fortran, WG14 for C, WG21 for C++…there are several others. (No, there’s no international standard for Java, a proprietary language of Oracle Corp. Java is whatever Oracle says it is at present.)
The United States has several organizations that kind of mirror the above.
ANSI is divided into several organizations including the InterNational Committee for Information Technology Standards (INCITS) which is the U.S. technical advisory group (US TAG) to JTC1.
INCITS is further divided into several technical committees including PL22 for programming languages, the US TAG to SC22. PL22 is what I’m a member of.
PL22 is further divided into several task groups including what I just learned to call INCITS/C++, the US TAG to WG21. (I always thought it was called PL22.16…you learn something new every day.)
Did you really care about all of that? Seriously?
Software developer here, and yes, I found that interesting.