JDK 9 is not (yet) Feature Complete -- how will we get there?

The JDK 9 schedule [1] lists a date for the Feature Complete milestone of 2016/5/26, about two weeks ago. There's been some concern that this means that the JDK 9 (and hence Java SE 9) feature set is somehow frozen, but that's not the case. The milestones listed in the JDK 9 schedule are condition-driven rather than date-driven, as noted along with the milestone definitions [2]. We try our best to reach the goal of each milestone by its scheduled date. If we miss a date then we don't just blindly constrain further work so as to fit the date, we instead manage the remaining changes relevant to the milestone so as to reach its goal in a reasonable time frame without putting the final GA date at undue risk. When we finally do reach the goal then we declare the milestone on that date. The goal of the Feature Complete milestone is to get all of the planned features, i.e., JEPs, and smaller enhancements integrated into the JDK 9 master forest, together with their unit tests. As of today most JEPs targeted to JDK 9 have been completed [3]. Fifteen JEPs remain, and a number of small enhancements are listed as intended for JDK 9 but are still either open or in progress. To manage the remaining JEPs and small enhancements so that we can reach the Feature Complete state in a timely fashion I hereby propose the following process: - If you own a JEP or a small enhancement that is not yet complete then you can request an FC extension as follows: Update the JBS issue to add a comment whose first line is "FC Extension Request". In that comment describe the remaining work to be done, the risk level, a brief justification, and your best estimate of the date by which the feature will be complete. Add the label "jdk9-fc-request" to the issue. - The Area Leads, relevant Group Leads, and I will review such requests on a regular basis, at least weekly if not more often. One of us will take one of the following actions: - Approve the request by adding the label "jdk9-fc-yes". - Reject the request by adding the label "jdk9-fc-no", along with a comment describing the reason for this action. - Request more information by adding the label "jdk9-fc-nmi" ("nmi" = "needs more information"), along with a comment describing what information is requested. - If you're asked to provide more information for an FC extension request then please do so in a new comment in the issue, and then remove the "jdk9-fc-nmi" label so that we see that it's ready for re-review. - If your request is approved then update the issue's due date to the expected completion date. - If you own a JEP that's targeted to JDK 9, but won't make it, then please propose to drop it [4]; this will move the JEP back to the Candidate state unless there are strong objections. If you own a small enhancement whose fix version is 9, but won't make it, then please clear the fix-version field. If a JEP has been granted an FC extension then enhancement issues that block the JEP's issue are automatically considered to have FC extensions. If a JEP has not yet been targeted to JDK 9 then you can still propose to target it to the release, but going forward the bar for accepting new features will be increasingly high. For the record, the Area Leads are Mikael Vidstedt (VM) and Brian Goetz (Language and Libraries). The relevant Group Leads are as follows, per the Census [5]: Artem Ananiev - AWT Alan Bateman - Core Libraries Tim Bell - Build Daniel D. Daugherty - Serviceability Jonathan Gibbons - Compiler Vladimir Kozlov - HotSpot Michael McMahon - Networking Sean Mullan - Security Masayoshi Okutsu - Internationalization Pavel Porvatov - Swing Phil Race - 2D Graphics & Sound Dalibor Topic - Porters JDK 9 Committers are invited to comment on this process proposal. If no serious objections are raised in one week's time, by 15:00 UTC on 17 June 2016, then this is the process that we'll use. In anticipation that we will use this process, more or less, I encourage owners of not-yet-complete JEPs and small enhancements to go ahead and request extensions as described above, if desired, so that we can move quickly once the process is in place. - Mark [1] http://openjdk.java.net/projects/jdk9/ [2] http://openjdk.java.net/projects/jdk8/milestones#definitions [3] http://j.mp/jdk9-features-jbs [4] http://cr.openjdk.java.net/~mr/jep/jep-2.0-02.html#Proposed-to-Drop [5] http://openjdk.java.net/census