RFR: Updated section on Code Conventions.
Alex Buckley
alex.buckley at oracle.com
Mon Jun 29 17:45:26 UTC 2020
On 6/27/2020 1:21 AM, Jesper Wilhelmsson wrote:
>> On 27 Jun 2020, at 00:42, Alex Buckley <alex.buckley at oracle.com
>> <mailto:alex.buckley at oracle.com>> wrote:
>> 1. The OpenJDK Bylaws define "social infrastructure" -- roles, voting,
>> groups, projects. Where is the definition of "technical
>> infrastructure" -- repositories, bug trackers, mailing lists, test
>> fleets? Answer: Locked up in the current OpenJDK Developer's Guide. It
>> seems to me that a good start would be: throw all the chapters in the
>> current Guide up in the air, and catch only the ones which let you
>> write a dry, factual manual about the technical infrastructure. Such a
>> manual relies on the social infrastructure from the Bylaws, notably
>> the idea of a Project. ...
>
> There are parts like this in the current guide and there will be more of
> this kind going forward. The mailing lists recently got a new
> description [0]. It hasn't been released to the webserver yet, but it's
> in GitHub.
Yes, I saw mailingLists.md, but it and the other RFRs on guide-dev are
all bottom-up changes that preserve the oddball structure of the current
Guide. I'm suggesting top-down changes -- write out a new Table Of
Contents so as to categorize (1) the normative, uncontroversial content
about technical infrastructure (e.g., mailing list suffixes); (2) the
normative, controversial content about development practices where (say)
different Projects have different views and you need to set expectations
in general; and (3) informative background material (e.g. timeline of
feature releases by the JDK Project; history of leadership in the JDK
6/7u/8u Projects).
> I'm not sure that I have any good examples of "informative content that
> every OpenJDK Participant is free to ignore without consequence", that
> would as you exemplifies here be just stories. I'm not even sure how to
> interpret the word "informative" here since our process JEPs which are
> clearly meant to be followed strictly are "informative JEPs".
To clarify: a "Process JEP" is normative. JEP 3: JDK Release Process is
a Process JEP because it authoritatively describes a protocol which must
be followed.
An "Informational JEP" is harder to characterize. Despite the name
suggesting informative status, the reality is that almost all
Informational JEPs are normative policy documents:
- JEP 11: Incubator Modules
- JEP 12: Preview Language and VM Features
- JEP 182: Policy for Retiring javac -source and -target Options
- JEP 293: Guidelines for JDK Command-Line Tool Options
- JEP draft: javadoc tags to distinguish API, implementation,
specification, and notes
- JEP draft: Disable experimental features by default
- JEP draft: Guidelines for documenting system properties
- JEP draft: Keyword Management for the Java Language
(A document can be normative even if the penalty for non-conformance is
softer than the hard-edged JLS penalty of "A compile-time error occurs
...". For example, the penalty for not following the guidelines for
documenting system properties might be more time spent on getting your
changeset accepted, as you seek to convince Reviewers that your system
properties really are special and you really do know what you're doing.
The only Informational JEP which is strictly informative is JEP 188:
Java Memory Model Update.)
I'm not sure if Mark if saying this exactly, but I can see the
Informational-means-normative angle serving as a feature, not a bug. An
Informational JEP "Java Style Guide for OpenJDK Projects" which is
normative for OpenJDK Projects will be taken as normative for ordinary
Java programs around the world, but the JEP "wrapper" is a great
mechanism for stopping outright misrepresentation and confusion.
Alex
More information about the jdk-dev
mailing list