<div dir="ltr"><div>Thank you Kevin for restarting the discussion!</div><div><br></div>Adding to what others said (very valid feedback from Michael/John), I specifically want to add a comment about Nir's remark where he mentioned Metal/DX12 pipelines.<div>I am a bit worried about the difference between the openjfx sandbox repository and the incubating modules. There are currently (at least) 4 very important branches in the sandbox, that imho are much more important than adding more functionality in the controls (which can be added in userspace):<div>* Metal pipeline</div><div>* Wayland pipeline</div><div>* Direct3D12 pipeline</div><div>* Headless glass platform</div><div><br></div><div>Those projects do not add new functionality, but they are crucial for maintaining OpenJFX. They are the foundation of existing and new features. They are less visible to end-developers, as they don't change/add external API's. That combination (being critical for OpenJFX and not being attractive to get tested because it's not new functionality) is a bit dangerous, so I believe we must give this high priority, make sure they get reviewed in the OpenJFX community and tested outside the OpenJFX community. </div></div><div><br></div><div>At least with a number of incubating modules in OpenJDK, there was initial sandbox development, which really allows for testing/feedback. If we allow incubating modules to skip this sandbox stage, then I'm not sure there is more value left in the sandbox repository.</div><div><br></div><div>- Johan</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 6, 2024 at 1:59 PM Nir Lisker <<a href="mailto:nlisker@gmail.com">nlisker@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Being able to add an API without the guarantee for backwards compatibility (temporarily) is obviously alleviating to the developers and will ensure a better end result. My only concern is the amount of usability this can get. Incubating modules usually offer a substantial amount of code. In the JDK there are only a handful of incubating modules, like FFM and Vector API. JavaFX hardly has these huge changes. RTA is perhaps the first one and it seems like incubating modules in JavaFX are added ad-hoc for that. What other uses are envisioned as an incubating module?<div>Are various platform-related changes like platform preferences, customizable window headers etc. suitable for an incubating module? The Metal/DX12 pipelines? One of the many CSS proposals? Behavior/Skin/Input splitting proposals? From what I know, an incubating module is suitable for independent features that can be "nailed on the side" for a while until they are seamlessly integrated, but I don't see JavaFX having many of those.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 6, 2024 at 12:22 AM Andy Goryachev <<a href="mailto:andy.goryachev@oracle.com" target="_blank">andy.goryachev@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
<div lang="EN-US">
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">I think the incubator module is a great idea: it allows us to elicit feedback from the platform consumers (the actual target group) rather than a small subset of developers
active on the mailing list, however great those people might be. And being an incubator module, it allows us to send two clear signals:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">- the proposed API and implementation are not final<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">- you, the developers, have a chance to have your voice heard and acted upon by the platform<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">I think it's a win-win for everyone involved.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">-andy<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u></u> <u></u></span></p>
<div id="m_417328484365177146m_6695130465001093369mail-editor-reference-message-container">
<div>
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal" style="margin-bottom:12pt"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">openjfx-dev <<a href="mailto:openjfx-dev-retn@openjdk.org" target="_blank">openjfx-dev-retn@openjdk.org</a>> on behalf of Kevin Rushforth <<a href="mailto:kevin.rushforth@oracle.com" target="_blank">kevin.rushforth@oracle.com</a>><br>
<b>Date: </b>Friday, November 1, 2024 at 15:18<br>
<b>To: </b>openjfx-dev <<a href="mailto:openjfx-dev@openjdk.org" target="_blank">openjfx-dev@openjdk.org</a>><br>
<b>Subject: </b>Re: Proposal: JavaFX Incubator Modules<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt"><span style="font-size:11pt">I'm restarting the discussion from an earlier thread [0], along with a
<br>
PR to get the support for JavaFX incubator modules integrated ahead of <br>
any particular feature that might use them.<br>
<br>
JEP 11 [1] defines a process for delivering non-final JDK APIs in <br>
incubator modules.<br>
<br>
Similarly, some JavaFX APIs would benefit from spending a period of time <br>
in a JavaFX release prior to being deemed stable. I propose JavaFX <br>
incubator modules as a means of putting non-final API in the hands of <br>
developers, while the API progresses towards either finalization or <br>
removal in a future release. This is especially useful for complex <br>
features with a large API surface.<br>
<br>
The JavaFX proposal is largely the same as the JDK one, but has some <br>
important differences that are listed in the JEP.<br>
<br>
Please take a look at the updated proposal [2] and PR 1616 [3] that adds <br>
the needed support for incubator modules.<br>
<br>
I have also created a Draft PR [4] with an example module, for <br>
illustrative purposes only, to show how this might work. This Draft PR <br>
is based on PR 1616.<br>
<br>
Please reply to this message with any feedback, or add PR comments in PR <br>
1616.<br>
<br>
Thank you.<br>
<br>
-- Kevin<br>
<br>
[0] <a href="https://mail.openjdk.org/pipermail/openjfx-dev/2024-February/045508.html" target="_blank">
https://mail.openjdk.org/pipermail/openjfx-dev/2024-February/045508.html</a><br>
[1] <a href="https://openjdk.org/jeps/11" target="_blank">https://openjdk.org/jeps/11</a><br>
[2] <br>
<a href="https://github.com/kevinrushforth/jfx/blob/jfx.incubator/INCUBATOR-MODULES.md" target="_blank">https://github.com/kevinrushforth/jfx/blob/jfx.incubator/INCUBATOR-MODULES.md</a><br>
[4] <a href="https://github.com/openjdk/jfx/pull/1616" target="_blank">https://github.com/openjdk/jfx/pull/1616</a><br>
[5] <a href="https://github.com/openjdk/jfx/pull/1617" target="_blank">https://github.com/openjdk/jfx/pull/1617</a><u></u><u></u></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div></blockquote></div>
</blockquote></div>