OpenJDK Governing Board Minutes: 2022/06/16
The OpenJDK Governing Board met via conference call on Thursday, 16 June 2022 at 15:00 UTC with the following agenda:
- Thank you and welcome
- Porter communication
openjdk.org
update- Any other business
Five Board members were present: Georges Saab, Annette Keenleyside, Andrew Haley, Volker Simonis, and Mark Reinhold.
The intent of these minutes is to capture the conversational flow of the Board's discussion and also to record decisions. If you are interested only in the latter then search for the word "AGREED" throughout the text.
1. Thank you and welcome
Georges opened the meeting by observing that there had been some membership changes. On behalf of those who have sat on the Governing Board for a while, he said "thank you" to Samir and Chris for their years of service. The OpenJDK Community particularly appreciated Chris' participation as an At-Large member of the Board for two years and as a senior contributor for many years prior.
Georges welcomed Annette Keenleyside as co-chair and Volker Simonis as the newly elected At-Large member. He then asked the Board members to briefly introduce themselves.
-
Annette has had a wide range of roles at IBM and currently leads the Java runtime developer and support groups. She was happy to join the Board.
-
Volker is from Germany and worked at SAP for almost 15 years. Currently he is at Amazon working on Corretto. He joined OpenJDK very early and thinks it's great.
-
Georges is chair of the Governing Board and Vice President of the Java Platform Group at Oracle. Most Oracle employees who contribute to the OpenJDK Community work for him.
-
Andrew is an At-Large member of the Governing Board. He is the Lead Engineer of the Java team at Red Hat.
-
Mark is the Chief Architect of the Java Platform Group at Oracle. He joined Sun in 1996.
As an introduction to the Board's role in the OpenJDK Community, Georges recommended reading the OpenJDK Bylaws and the Governing Board Group page. He explained that the role of the Board is to make sure that the Community is functioning well; it is not a technical review body. The Board is a body to which issues can be escalated if a conflict or disagreement cannot be handled within a Project or by a Project Lead. Mark added that since the Board was formed in 2011, the need for such mediation has been extremely rare. This is viewed as a positive. Georges said that everyone is nice and is here to help. He encouraged everyone to speak out if they had questions.
Georges hoped that the Board would meet face to face in the future and encouraged members to make themselves accessible to the broader Community. The Board has traditionally hosted panel discussions at events frequented by many OpenJDK contributors such as FOSDEM (Belgium; weekend between Jan/Feb) and the JVM Language Summit (JVMLS) (Santa Clara, CA; late summer Jul/Aug). Georges noted that the Board has not participated in these events in the last few years for obvious reasons but he hoped it would do so again. After Mark observed that the JVMLS was not scheduled to take place in 2022, Volker expressed hope that it would resume in 2023.
Finally, Georges reminded everyone that the Board is required to meet at least once per quarter even if there is no specific agenda.
2. Porter communication
Andrew posited that OpenJDK is in general a very well-functioning community, so he finds it interesting to consider cases where it does not work well. He considers Project Loom an outlier because the virtual threads feature required significant last-minute work from the porters who keep the JDK running on non-mainstream platforms. Andrew did not believe that anyone — even those working on Loom itself — realized how difficult porting virtual threads would be. He observed several problems:
- Virtual threads are a preview feature in their initial release, and the porters did not realize that implementation of preview features is mandatory;
- Loom was not developed in the main line, in contrast to major re-engineering efforts in other communities such as GCC;
- There was a lack of communication to the porters; and
- Finally, some of the ports did not have active maintainers.
In the end, the porters were rescued by a fall-back approach which implements virtual threads directly as platform threads. Andrew wondered what could have been done better.
Georges thanked Andrew for the summary and noted that the trend has been to move away from "big bang" development and deliver small, incremental improvements regularly, citing Project Amber as an example. Unfortunately, adding something like virtual threads is difficult to do in an incremental fashion, although the Loom developers did integrate as much of their preparatory work (e.g., clean-up of native code) as possible ahead of time.
As to communication, Project Loom members did contact the Porters Group via the porters-dev mailing list in September 2021 to advise them that virtual threads were coming. Andrew did not know how many porters read that list and suspected that it was not an effective communication channel. He thought it was possible that some porters simply forgot about it, especially since the handover of ports from one maintainer to the next has not always been smooth. Volker pointed out that the message to the porters did not say it was going into JDK 19; thus, the consequences may not have been considered as carefully as they should have been. Also, the virtual threads feature was proposed to target JDK 19 rather late, in April 2022, making it difficult for the porters to recover. Volker agreed that the handover of some ports had not gone well.
Georges observed that the Loom developers tried to be diligent, but the long time between the September notification and the April proposal may have been a problem. Few people had confidence in September that Loom would be ready in time for JDK 19 and when it was, not everyone was prepared. Volker observed that there was no agreed upon protocol for how porters should react to something like the September communication. Mark said that the Loom team did an amazing amount of communication and coordination, but apparently they should have done more.
Going back to challenges, Georges reminded the Board that preview features are not optional. They must be fully specified and fully implemented, though their owners have the right to make changes in later releases based upon feedback. Volker observed that many developers did not clearly understand the distinction between Preview Features and incubator modules. Andrew thought that this should be clarified broadly.
Mark described this overall situation as having been a perfect storm, a series of unfortunate events. He recalled a policy idea that had been discussed in the OpenJDK Committers' Workshop which might help in the future. We could define a policy for primary and secondary ports that identifies which ports must always work and which ports are the responsibility of the porters, together with guidance on when an unmaintained secondary port should be removed. As part of this policy we could also create a file in the JDK source-code repository that lists the current port maintainers, so that developers of significant features can reach out directly to the porters to coordinate rather than rely upon a mailing list. Mark suggested that the events around integrating virtual threads are motivation to write up and propose such a policy.
Georges asked what the Board's next steps should be. Andrew replied that strictly speaking this issue was outside of the purview of the Board. He did think that it was a topic for Board discussion since it is tasked with monitoring the health of the community. Volker agreed that technical questions should be handled by Projects, but this was a good topic for Board discussion.
3. openjdk.org
update
Mark reported that the initial phase of the
move from openjdk.java.net
to
openjdk.org
was complete. This phase included all
hosts except for hg.openjdk.java.net
and
cr.openjdk.java.net
, which will follow later.
Andrew asked how to report broken links. Mark replied that
redirects are in place from the old domains to the new; if these
don't work, people should send mail to
ops@openjdk.org
.
At this point, the Board adjourned.