Re: AW: [Lazy Consensus] Minimum JDK build and run policy (dropping JDK 8)

2023-04-09 Thread Michael Bien

On 10.04.23 06:20, Michael Bien wrote:

Hi Svata,

thanks for your detailed response, my reply is inline


On 10.04.23 01:16, Svata Dedic wrote:


I would also (now) ask to restrict from advocating language goodies


agreed. This whole discussion is almost exclusively about APIs and 
bytecode levels. Language features come just as side effect of a JDK 
upgrade as bonus on top.



Please remember that the published proposal not only covered JDK8's 
fate, which we argue about right now, but also the idea to drop JDK11 
in 2024.


and



There was an idea to basically tell users with requirements for older 
JDKs (now 8, 11 in 2024) they should use the last released platform 
(NB18) that supports their environment. This really mean to *abandon 
the users*, as they will not receive any new features or bugfixes. 
While maintenance effort surely requires work if we still support 
JDK8, porting features (albeit selectively) back to old platform 
requires even usually much more effort. The offer that platform users 
do that for us may seem formally correct, but in reality it requires 
deep knowledge of many parts of the IDE, not just knowledge of the 
'system parts' affected by JDK differences. Exemplified on myself, 
although I could be able to assist to develop bridges for different 
JDK versions for features determined as necessary for the new 
codebase (with possible graceful degradation or function disable on 
old runtimes), I sincerely doubt I would be able to assist with 
backporting a user-facing feature. I believe this is a general case, 
as the 'domain knowledge' is far more scarce than the knowledge of 
system libraries.
So the seemingly positive approach, it turns out to be rather 
offensive in its implications to platform users, which is an outcome 
I do not like.


This could be eventually barely acceptable in case of JDK8, I do not 
see reasonable to set minimum JDK to 11 at all. The reason is that 
while JDK8 has support cycle of 11 years (2015 released, 2026 EOLed 
by RH / IBM), JDK 11 has a super short shorter cycle despite being 
LTS (2021-24) and JDK17 just 6 years (2021-2027). From this 
perspective, forcing the users to upgrade JDK 8 > JDK 11 by NB19 in 
2023, and then again to JDK17 by (even if ve move OUR deadlines) 
right during 2024 given the *upstream support ceases for 11* in 
10/2024, is ... a very bad idea.


I actually disagree here. The worse situation would be to have to 
upgrade from 8 to 21 or take an even larger leap, since we waited so 
long that there are no other LTS releases available under the "new" 
OpenJDK release model.


The "new" OpenJDK release model has several LTS releases at the same 
time. They are shorter, but the migration risk is lower once a project 
escaped JDK 8 - since it was the last big release (by design!).


We can build all clusters and run CV tests on JDK 21 right now already 
btw (#5653) and made progress with some high priority issues, e.g. 
#4952, #4904. Neil's/Geertjan's installers ship with the latest JDK, I 
am also always running NB on a recent JDK for testing purposes. There 
is always the possibility to encounter migration specific issues, but 
I don't see us missing a deadline any time soon because of that - I 
think we can say with good confidence that NetBeans is working fine on 
JDK 11+. (the majority of tests are now also running on JDK 11)


We should move to JDK 11 ASAP since time is running out as you pointed 
out. I don't see any reason to wait longer just so that we forced to 
skip LTS versions.





I've read the thread again, and I must think there's a lot of heated 
feelings, but very little of hard data. Let me say I understand (some 
of) the urge to upgrade and I'd like myself to be able to use some 
JDK11+ APIs in NB platform (but also pretty sure that other upgrade 
proponents are interested in *different* sets of APIs). But there are 
different perspectives - so important IMHO that I am willing to offer 
my personal time to support older JDKs, too.


In fact, *we  all* (IMHO and me explicitly included) never went as 
far as to write down the fact and consolidate the info to get the 
overall picture. The consolidated list is important so the 
maintenance burden could become more obvious even to nonbelievers - 
or, in other hand, the JDK8 preservation may turn not such high 
barrier, and JDK11 features not as critical to outweigh the JDK8 drop


this is not about JDK 11 features specifically. The proposal is about 
an upgrade policy. This goes beyond JDK 11. Even if JDK 11 would be 
not super interesting feature wise, it is simply a step to the next 
LTS release. If it is a boring step - even better for everyone involved.


I don't get why fighting the "new" OpenJDK release model is considered 
a viable option here.



for the whole codebase. We do not have AFAIK such an overview. We did 
not even start to collect such a list, instead of that, the general 
tone of the discussion was exagerrated "march forward, kill all the 

Re: AW: [Lazy Consensus] Minimum JDK build and run policy (dropping JDK 8)

2023-04-09 Thread Michael Bien

Hi Svata,

thanks for your detailed response, my reply is inline


On 10.04.23 01:16, Svata Dedic wrote:


I would also (now) ask to restrict from advocating language goodies


agreed. This whole discussion is almost exclusively about APIs and 
bytecode levels. Language features come just as side effect of a JDK 
upgrade as bonus on top.



Please remember that the published proposal not only covered JDK8's 
fate, which we argue about right now, but also the idea to drop JDK11 
in 2024.


and



There was an idea to basically tell users with requirements for older 
JDKs (now 8, 11 in 2024) they should use the last released platform 
(NB18) that supports their environment. This really mean to *abandon 
the users*, as they will not receive any new features or bugfixes. 
While maintenance effort surely requires work if we still support 
JDK8, porting features (albeit selectively) back to old platform 
requires even usually much more effort. The offer that platform users 
do that for us may seem formally correct, but in reality it requires 
deep knowledge of many parts of the IDE, not just knowledge of the 
'system parts' affected by JDK differences. Exemplified on myself, 
although I could be able to assist to develop bridges for different 
JDK versions for features determined as necessary for the new codebase 
(with possible graceful degradation or function disable on old 
runtimes), I sincerely doubt I would be able to assist with 
backporting a user-facing feature. I believe this is a general case, 
as the 'domain knowledge' is far more scarce than the knowledge of 
system libraries.
So the seemingly positive approach, it turns out to be rather 
offensive in its implications to platform users, which is an outcome I 
do not like.


This could be eventually barely acceptable in case of JDK8, I do not 
see reasonable to set minimum JDK to 11 at all. The reason is that 
while JDK8 has support cycle of 11 years (2015 released, 2026 EOLed by 
RH / IBM), JDK 11 has a super short shorter cycle despite being LTS 
(2021-24) and JDK17 just 6 years (2021-2027). From this perspective, 
forcing the users to upgrade JDK 8 > JDK 11 by NB19 in 2023, and then 
again to JDK17 by (even if ve move OUR deadlines) right during 2024 
given the *upstream support ceases for 11* in 10/2024, is ... a very 
bad idea.


I actually disagree here. The worse situation would be to have to 
upgrade from 8 to 21 or take an even larger leap, since we waited so 
long that there are no other LTS releases available under the "new" 
OpenJDK release model.


The "new" OpenJDK release model has several LTS releases at the same 
time. They are shorter, but the migration risk is lower once a project 
escaped JDK 8 - since it was the last big release (by design!).


We can build all clusters and run CV tests on JDK 21 right now already 
btw (#5653) and made progress with some high priority issues, e.g. 
#4952, #4904. Neil's/Geertjan's installers ship with the latest JDK, I 
am also always running NB on a recent JDK for testing purposes. There is 
always the possibility to encounter migration specific issues, but I 
don't see us missing a deadline any time soon because of that - I think 
we can say with good confidence that NetBeans is working fine on JDK 
11+. (the majority of tests are now also running on JDK 11)


We should move to JDK 11 ASAP since time is running out as you pointed 
out. I don't see any reason to wait longer just so that we forced to 
skip LTS versions.





I've read the thread again, and I must think there's a lot of heated 
feelings, but very little of hard data. Let me say I understand (some 
of) the urge to upgrade and I'd like myself to be able to use some 
JDK11+ APIs in NB platform (but also pretty sure that other upgrade 
proponents are interested in *different* sets of APIs). But there are 
different perspectives - so important IMHO that I am willing to offer 
my personal time to support older JDKs, too.


In fact, *we  all* (IMHO and me explicitly included) never went as far 
as to write down the fact and consolidate the info to get the overall 
picture. The consolidated list is important so the maintenance burden 
could become more obvious even to nonbelievers - or, in other hand, 
the JDK8 preservation may turn not such high barrier, and JDK11 
features not as critical to outweigh the JDK8 drop


this is not about JDK 11 features specifically. The proposal is about an 
upgrade policy. This goes beyond JDK 11. Even if JDK 11 would be not 
super interesting feature wise, it is simply a step to the next LTS 
release. If it is a boring step - even better for everyone involved.


I don't get why fighting the "new" OpenJDK release model is considered a 
viable option here.



for the whole codebase. We do not have AFAIK such an overview. We did 
not even start to collect such a list, instead of that, the general 
tone of the discussion was exagerrated "march forward, kill all the 
old stuff, let the (IT) God sort it 

Re: AW: [Lazy Consensus] Minimum JDK build and run policy (dropping JDK 8)

2023-04-09 Thread Laszlo Kishalmi

Dear Svata,

First of all, I would like you thank you for offering work to support 
keep JDK8 alive!


Though reading through your mail, I'd wonder how JDK was able to evolve 
beyond Java 8 it had 80+ percent usage in 2018.


The secret  is that they forked/branched JDK. As you mentioned there are 
still maintenance releases for JDK8. In the model Neil offered no one is 
prevented to do maintenance releases for NetBeans 18 (or any previous 
version of Apache NetBeans if he/she wishes). It seems there are people 
willing to put work on that. That's really good and appreciated. "Some 
modules that are of independent use (eg. lookup, utilities, etc.) might 
be nominated and advertised to continue JDK 8 support for the time 
being.", that would make the maintenance work easier.


It is also being said that "The IDE will continue to support users 
developing projects for/with JDK 8, for as long as nb-javac and other 
dependencies allow." . I think the team would understand if we keep our 
Gradle Tooling library on JDK8 level for the foreseeable future.


On the you "offer coding help with compatibility bridges, analysis 
and/or migration of the code" could be your next side-gig. Companies 
using aged software shall pay the price. (You can still buy OS/2 named 
Arca OS  at the base price of $129, for a 6 months support). So you can 
think of, with this change we open a possibility to monetize your 
NetBeans knowledge.


On the data to be collected, well it would nice to see such a data, 
though I do not think that should affect the decision. However you can 
use such data to track the importance of keeping the JDK8 (JDK11) 
support alive. That should erode with time.


On 4/9/23 16:16, Svata Dedic wrote:
Please remember that the published proposal not only covered JDK8's 
fate, which we argue about right now, but also the idea to drop JDK11 
in 2024. So take my


* -1 (at the moment) for JDK8 phase out with NB19;
* and ANOTHER -1 to the JDK11 plans as presented in this thread (but 
that should be discussed separately anyway, not hidden in dropping 
JDK8 thread)


Summary:
- I do not think that dropping JDK8 now is a good idea
- I do not think that sufficient relevant data for the decision was 
collected; I think that we did not even start to collect it.

- I do think we can find and reach a reasonable compromise.
- I propose some action items to make the decision better informed and 
based.
- I offer coding help with compatibility bridges, analysis and/or 
migration of the code.


TL;DR:

I'd like to offer some coding support to retain JDK8 as well - but 
(which IMHO did not happened really during past heated exchanges) need 
to agree on support scope before committing. I'd like to emphasize 
that *runtime* compatibility should be treated separately from 
*development* environment requirements. I would also (now) ask to 
restrict from advocating language goodies - as there are different 
options to achieve that, not necessarily requiring the change of the 
codebase runtime requirements.


I will quite from Ernie Rael's post (quoting stats from 2022):

even though Java 11 had been available for more than a year. Since
then, the balance has shifted between these two LTS release versions.
More than 48% of applications are now using Java 11 in production (up
from 11.11% in 2020) with Java 8 a close second, capturing 46.45% of
applications using the version in production.


There was an idea to basically tell users with requirements for older 
JDKs (now 8, 11 in 2024) they should use the last released platform 
(NB18) that supports their environment. This really mean to *abandon 
the users*, as they will not receive any new features or bugfixes. 
While maintenance effort surely requires work if we still support 
JDK8, porting features (albeit selectively) back to old platform 
requires even usually much more effort. The offer that platform users 
do that for us may seem formally correct, but in reality it requires 
deep knowledge of many parts of the IDE, not just knowledge of the 
'system parts' affected by JDK differences. Exemplified on myself, 
although I could be able to assist to develop bridges for different 
JDK versions for features determined as necessary for the new codebase 
(with possible graceful degradation or function disable on old 
runtimes), I sincerely doubt I would be able to assist with 
backporting a user-facing feature. I believe this is a general case, 
as the 'domain knowledge' is far more scarce than the knowledge of 
system libraries.
So the seemingly positive approach, it turns out to be rather 
offensive in its implications to platform users, which is an outcome I 
do not like.


This could be eventually barely acceptable in case of JDK8, I do not 
see reasonable to set minimum JDK to 11 at all. The reason is that 
while JDK8 has support cycle of 11 years (2015 released, 2026 EOLed by 
RH / IBM), JDK 11 has a super short shorter cycle despite being LTS 
(2021-24) and JDK17 just 6 years 

Re: AW: [Lazy Consensus] Minimum JDK build and run policy (dropping JDK 8)

2023-04-09 Thread Svata Dedic
Please remember that the published proposal not only covered JDK8's 
fate, which we argue about right now, but also the idea to drop JDK11 in 
2024. So take my


* -1 (at the moment) for JDK8 phase out with NB19;
* and ANOTHER -1 to the JDK11 plans as presented in this thread (but 
that should be discussed separately anyway, not hidden in dropping JDK8 
thread)


Summary:
- I do not think that dropping JDK8 now is a good idea
- I do not think that sufficient relevant data for the decision was 
collected; I think that we did not even start to collect it.

- I do think we can find and reach a reasonable compromise.
- I propose some action items to make the decision better informed and 
based.
- I offer coding help with compatibility bridges, analysis and/or 
migration of the code.


TL;DR:

I'd like to offer some coding support to retain JDK8 as well - but 
(which IMHO did not happened really during past heated exchanges) need 
to agree on support scope before committing. I'd like to emphasize that 
*runtime* compatibility should be treated separately from *development* 
environment requirements. I would also (now) ask to restrict from 
advocating language goodies - as there are different options to achieve 
that, not necessarily requiring the change of the codebase runtime 
requirements.


I will quite from Ernie Rael's post (quoting stats from 2022):

even though Java 11 had been available for more than a year. Since
then, the balance has shifted between these two LTS release versions.
More than 48% of applications are now using Java 11 in production (up
from 11.11% in 2020) with Java 8 a close second, capturing 46.45% of
applications using the version in production.


There was an idea to basically tell users with requirements for older 
JDKs (now 8, 11 in 2024) they should use the last released platform 
(NB18) that supports their environment. This really mean to *abandon the 
users*, as they will not receive any new features or bugfixes. While 
maintenance effort surely requires work if we still support JDK8, 
porting features (albeit selectively) back to old platform requires even 
usually much more effort. The offer that platform users do that for us 
may seem formally correct, but in reality it requires deep knowledge of 
many parts of the IDE, not just knowledge of the 'system parts' affected 
by JDK differences. Exemplified on myself, although I could be able to 
assist to develop bridges for different JDK versions for features 
determined as necessary for the new codebase (with possible graceful 
degradation or function disable on old runtimes), I sincerely doubt I 
would be able to assist with backporting a user-facing feature. I 
believe this is a general case, as the 'domain knowledge' is far more 
scarce than the knowledge of system libraries.
So the seemingly positive approach, it turns out to be rather offensive 
in its implications to platform users, which is an outcome I do not like.


This could be eventually barely acceptable in case of JDK8, I do not see 
reasonable to set minimum JDK to 11 at all. The reason is that while 
JDK8 has support cycle of 11 years (2015 released, 2026 EOLed by RH / 
IBM), JDK 11 has a super short shorter cycle despite being LTS (2021-24) 
and JDK17 just 6 years (2021-2027). From this perspective, forcing the 
users to upgrade JDK 8 > JDK 11 by NB19 in 2023, and then again to JDK17 
by (even if ve move OUR deadlines) right during 2024 given the *upstream 
support ceases for 11* in 10/2024, is ... a very bad idea.


I've read the thread again, and I must think there's a lot of heated 
feelings, but very little of hard data. Let me say I understand (some 
of) the urge to upgrade and I'd like myself to be able to use some 
JDK11+ APIs in NB platform (but also pretty sure that other upgrade 
proponents are interested in *different* sets of APIs). But there are 
different perspectives - so important IMHO that I am willing to offer my 
personal time to support older JDKs, too.


In fact, *we  all* (IMHO and me explicitly included) never went as far 
as to write down the fact and consolidate the info to get the overall 
picture. The consolidated list is important so the maintenance burden 
could become more obvious even to nonbelievers - or, in other hand, the 
JDK8 preservation may turn not such high barrier, and JDK11 features not 
as critical to outweigh the JDK8 drop for the whole codebase. We do not 
have AFAIK such an overview. We did not even start to collect such a 
list, instead of that, the general tone of the discussion was 
exagerrated "march forward, kill all the old stuff, let the (IT) God 
sort it later".


Also note that we can *lower* the guarantees: e.g. not run JDK8 tests 
every commit, to reduce the resource consumption for the test matrix. 
But such negotiation didn't really happen. So far, the major +1s were 
not based on technical details, but rather on emotions or feelings - 
"new is good", or at least the thread reads.


First of all, the