The Fortran standardization process

Several people have asked for an explanation of how the Fortran standard gets made, and how to participate. Here’s my take on it.

This first part is taken from the “About WG5” section on WG5 Fortran Standards Home (wg5-fortran.org)

The production and maintenance of International Standards in the field of Information Technology is carried out by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) through their Joint Technical Committee 1 (JTC1). Most of the work of JTC1 is, however, delegated to one of 20 Sub-Comittees (SCs) which, in turn, normally delegate the detailed work to permanent Working Groups (WGs).

SC22 is the JTC1 Sub-Committee responsible for “programming languages, their environments and system software interfaces”, and carries out most of its work through its Working Groups. WG5 is the Working Group responsible for the development and maintenance of Fortran language standards.

WG5, like all other JTC1 Working Groups, consists of a Convenor and one or more Project Managers, all appointed by the parent Sub-Committee (SC22 in WG5’s case), together with a number of individual members who are nominated by their National Member Bodies. It is not possible to apply directly to become an individual member of a Working Group without the support of an appropriate Member Body.

WG5 currently operates a two-tier development structure whereby the Working Group itself determines the broad technical content of the Standards and other formal documents that it is working on, but delegates much of the detailed work to “development bodies” who are charged with assisting the Project Manager for a particular project to create the actual text for the document. For the Fortran 95 and later Standards, the US Fortran Committee (INCITS/Fortran) was given the role of Primary Development Body. All WG5 working documents are available on the WG5 Electronic Document Archive.


INCITS/Fortran is the current name of what we informally call J3 and is the US National Body formerly known as ANSI X3J3 and INCITS PL22.3.

Once a draft standard is developed and approved by WG5, it is submitted to ISO for publication. It goes to a vote by SC22 members by country, and there are also (always) comments and requests for changes by the ISO Editor. There are several rounds of this: Committee Draft, Draft International Standard and Final Draft International Standard, before publication. This process itself takes up to a year.

To participate at the WG5 level, you must be a member of a National Body (NB), such as INCITS/Fortran for the US, DIN for Germany, JIS for Japan, BCS (I think) for UK. How you become a voting member of an NB varies by country - some countries make it more difficult than others.

For J3, to become a voting principal you must reside in or have some business connection to the United States, and pay an annual fee to INCITS, which starts (currently) at $1350 for organizations with less than $1 million in annual revenue; there are no lower tiers. However, INCITS (at least, I don’t know about other NBs), allows the principal to name alternate representatives, with no known limit on how many. There is no cost to this and no requirement on a connection to the US. Alternates may fully participate in the process, with the only limitation being that only one member of an organization may vote at the INCITS level. At the WG5 level, all NB members are “individual experts”, not representing their organizations or countries, so alternates can participate in WG5 votes. At J3 meetings, many of the attendees are alternates!

How do you become a J3 alternate if you don’t work for a member organization? Approach a current member and ask. Corporations tend to not make non-employees as alternates, but they are a minority on the committee. There’s no cost to you or to the member.

The way we work is that WG5 votes on which features or changes are to be included in the revision under development. This is at a conceptual level, for example, “Generics and Templates”. Suggestions and requests are gathered for about two years starting a year or more before the current revision is published. Most suggestions are gathered by J3 (often from suggestions by users), and there are usually smaller lists that come from other NBs. Suggestions are categorized and prioritized by J3 and then WG5. The result is a “Work Item List”, with each item identified by the submitting country and a number (for example, US23).

While I have been WG5 Convenor (since late 2017), WG5 creates a preliminary work item list, and then the following year, the “final” list. I put “final” in quotes because it is subject to change; sometimes items get dropped if found unworkable, or deferred (as Generics did from F2023). It is still possible to add items to the “final” list, but the bar to do so is very high.

The actual development of the work items is done by J3 (though as most non-US WG5 members are also J3 alternates, there is considerable participation by non-US members.) Each feature or change requires one or more J3 papers describing the specification, syntax (if any) and edits (changes to the previous standard text to implement the new feature). For small changes these are often just a single paper, but others will tend to have one or more papers for each step.

Most papers get written during J3 meetings, though more complex features may have work done between meetings. When papers get reviewed, and more eyes on them, we often notice issues and may suggest improvements. This is an iterative process - just because a paper passes a vote, that doesn’t mean it isn’t subject to revision at a future meeting should a problem come to light.

At the J3 level, formal votes are by organization, but we also do “straw votes” where any attendee can vote. This happens when the paper author(s) offer multiple options on how to solve a particular problem; this results in a “direction” and the paper is then revised to reflect the consensus view. (Consensus does not mean unanimous agreement - there are sometimes dissenting views.)

J3 currently holds meetings three times a year, typically February, June, and October. Most meetings are hybrid (in-person and virtual), some are virtual-only. WG5 meets annually as a hybrid meeting. For many years, the WG5 meeting has been joint with J3, which makes sense since they overlap so much, but this year INCITS forbade its committees to meet at the same time and place as any other committee, so for the 2024 meeting in Berkeley, CA, we structured it so that J3 met Monday through Thursday morning, and WG5 met Thursday afternoon through Friday. It’s a silly restriction, but we made it work.

Feel free to ask questions if there’s something I didn’t cover.

24 Likes

Thank you Steve for writing this. I would also mention we have an “incubator repository” at: GitHub - j3-fortran/fortran_proposals: Proposals for the Fortran Standard Committee where ideas can be rehashed and papers written collaboratively (just send a PR), before submitting to the committee. Many committee members participate there.

I should mention that, while participation in J3 meetings is limited to members and alternates, both J3 and WG5 publish their documents publicly. (ISO and INCITS don’t like this, but so far, they have not complained.) The only exception is the published standard, for which ISO is very protective of its copyright. There is, however, an “Interpretation Reference Document” that the committee uses for reference instead of the published standard - look for J3 “Standing document 007”. While meetings are going on, you can follow along with papers as they are uploaded.

1 Like

I thinks it is also worth explaining a bit of the mechanics of how the work actually gets done. One does not need to be in attendance at a meeting to submit a paper to J3 for consideration. The subgroup heads are then responsible for ensuring that papers with topics relevant to their group are considered. The current subgroups, their topics, and their heads are:

Subgroup Topic(s) Head
Data Data types, values and declarations Malcolm Cohen
Journal of Requirements (JoR) Control constructs and intrinsics Lorri Menard
HPC Parallel and performance features Bill Long
Edit Making actual edits to the standard Malcolm Cohen
Interp Addressing ambiguities or inconsistencies Malcolm Cohen

Once a paper has been discussed by subgroup, either the paper is revised, a response is written, or it is brought to plenary (the whole of J3) for a vote. Passed papers with proposed edits give clear direction to the editor (Malcolm) as to what the text of the standard should become. Other passed papers simply affirm the design and direction of the features being proposed such that subgroup can continue work developing proposed edits. A paper that fails to pass does not necessarily reject a feature or design, but indicates that a different design or better arguments may need to be developed if the feature is to move forward.

If I got anything incorrect or missed something feel free to correct me.

5 Likes

I’ll just add that, for historical reasons, C interoperability is also handled by the HPC subgroup. JOR also handles I/O.

3 Likes