Skip to content

Meta: how proposals are developed #163

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
certik opened this issue Mar 2, 2020 · 1 comment
Open

Meta: how proposals are developed #163

certik opened this issue Mar 2, 2020 · 1 comment
Assignees
Labels
meta Related to this repository

Comments

@certik
Copy link
Member

certik commented Mar 2, 2020

@zjibben and I would like to summarize this in the README, so that we are all on the same page what the process is.

In fact, there seems to be a little disagreement how new features should be developed at the Committee. Some members of the Committee prefer to start with writing down requirements, pass it. Then develop specification (specs) based on the requirements. Pass it. Then develop syntax, pass it. And finally edits to the standard and pass it. 4 papers.

@zjibben and I think we should instead use the following approach, which is similar, but different:

  1. Proposal: Develop a proposal that discusses use cases both before and after the feature. It discusses syntax and how the new feature should be used. The proposal does not have to have all the details fleshed out, but it needs to be clear to the reader what the feature should be and it concentrates on syntax and properties of the new feature.

  2. Requirements: From the Proposal, extract Requirements.

  3. Specification: From the Requirements only, logically derive Specification.

  4. Syntax: From the Specification, logically derive and propose Syntax.

  5. Iterate: Does 3. and 4. agree with the Proposal at 1. ? If it does not, then we need to iterate the process 1. - 4. until it agrees and is self consistent.

  6. Edits: Write Edits to the standard.

The advantage of this approach 1. - 6. is that it ensures both:

a) The feature is what the community wants (this is ensured by 1.)

b) The feature is the best way to achieve something, i.e., there is not an alternate way to develop a feature (this is ensured by extracting the abstract requirements in 2. and then ensuring that the feature in 3. and 4. logically follows from it, and that it agrees with 1., as ensured in 5.)

On the other hand, by starting with Requirements right away, we ensure consistent feature, but we cannot ensure we end up with a feature that the community wants. In fact, by observing how features get developed at the Committee, very often we see features that are not what the community wants, because 1. was skipped, and we went straight to 2.

Example:

An example proposal that got recently passed by the Committee that follows this process is #161, where:

1: https://j3-fortran.org/doc/year/18/18-273r1.txt
2, 3, 4: https://j3-fortran.org/doc/year/19/19-201r1.txt
5: In this case 3. and 4. agree with 1.
6: https://j3-fortran.org/doc/year/20/20-116.txt

cc @FortranFan.

@certik certik added the meta Related to this repository label Mar 2, 2020
@FortranFan
Copy link
Member

Please see this: https://mailman.j3-fortran.org/pipermail/j3/2018-July/010806.html

My understanding is the J3 approach has a subtle but important attribute in that items 2 and 3 are "Formal Requirements" and "Formal Specifications" i.e., the term "Formal" brings these 2 aspects closer to the "standardese" used in the IEC ISO document.

But for proposals developed on a forum such as this one, I suggest focusing on simple language during the initial steps and inserting a step after 1 in the list above which is Needs where the proposer can explain in simple terms what the proposal should achieve i.e., add to or extend or not be affected in the language due to proposal e.g., with #156, the Needs section might clearly state "it must be possible to define a variable of a derived type with a protected component in an intrinsic assignment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta Related to this repository
Projects
None yet
Development

No branches or pull requests

3 participants