Thank you Sváťa for writing this email. It open another "can of worms" in the "lazy consensus" thread - in my opinion clearly rendering the "lazy consensus" as obsolete.
I still need a bit of time to think about using your email strategically, but in any case I'm happy. I am no longer the only one who gets all the hater! Thank you Sváťo! -jt Dne po 10. 4. 2023 1:16 uživatel Svata Dedic <svatopluk.de...@gmail.com> napsal: > 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 general idea that "JDK8 is dead" does not seem > correct. It's true that Oracle stopped public updates - I do not have > knowledge of the details, but the Internet chatters about a business > needs, so be it. Anyway RedHat took the role of JDK8 steward and does it > well: 6 updates in 2022, 1 update in 2023 so far - not only strictly > security updates, but also other maintenance/bugfixes. IBM, AdoptJDK, > Azul, Redhat, Amazon - they all are releasing JDK8. Redhat, Adoptium and > IBM (now) declares maintenance (not just security) till 2026; even > longer (!!) than maintenance for JDK 11 - which is also a LTS release. > JDK8 is also the last release that can be really installed on Windows XP > - don't laugh !! There may be perfectly valid reasons NOT to update - > e.g. tool or hardware dependencies and it is the *last* release not > twisted by the JDK module system. While the JDK modules can be seen as a > benefit, it's true it complicated (and continue to complicate) life for > all other modular approaches: NetBeans, OSGi, JBoss, ... > > As NetBeans platform, and to lesser degree ide cluster, parts of java > cluster (maybe other parts as well) form *application platform*, not a > development environment - any policy change made here will directly > affect these applications. Again it should be noted that the issue is > NOT language goodies, the preferred runtime, or the compilation > environment - but the runtime required to run NetBeans (extended) > Platform - based applications. Not necessarily the minimum runtime for > NetBeans IDE. > > Next, the external conditions that would require us ultimately to move > to newer runtime come (considering Java cluster) from Maven and Gradle. > So far, Gradle 8 still declares runtime support for JDK8; Maven 4 alpha, > so far declares the same. I am not aware of plans from those two to drop > JDK8 runtime support soon (but see the action items). > So until JDK8 upstream support really ceases (which is now scheduled to > 2026), I propose to make a policy to either keep the ability to *run* on > JDK8 for > - platform, as it forms a base for non-IDE applications in general > - for java cluster: java build tools themselves still support that > - in base technology modules whenever possible > ... or have a solid technical explanation why it is not possible, or not > feasible - an explanation written down, agreed on or voted. > > I'll go through some examples of why I think we do not decide based on > facts, but rather than feelings: > To give an example of my own area: I'd love to have > CompletableFuture.defaultExecutor() method for final rewrite of > RequestProcessors to completable futures. But it can be overcomed with > some limitations and ugly implementation. It is not a hard barrier, but > "only" requires significant effort. > > Similarly (but speaking just from a shallow understanding, MBien > hopefully kindly forgives and/or corrects), Maven Indexer: it is not > *mandatory* not even for Java development (especially if gradle is > involved). The experience will surely degrade, as IDE won't be able to > suggest versions, or suggest libraries based on symbols. But that's the > choice of user and/or packager, and we can safely leave the choice open > instead of making it *instead* of our users. Not to mention that there > are other possibilities - like create a thin internal layer that allows > to call Lucene 8.11.2 (on JDK8) or Lucene 9.5.0 (on JDK11). Or - if we > consider now omnious online presence - online queries for symbols, > package names and versions that could completely replace the indexer > (and maybe this should be offered as an alternative even on new system, > as downloading the gig size maven central content is horrible). > The question here is again, whether we need Lucene 9.5.0 because of new > APIs, or because of its implementation progress. And even if it was for > APIs, the approach can be different, if > - the new API is only used (for example) to configure / setup Lucene > engine. This could be more or less easily bridged for different Lucene > versions, or > - the new APIs are used extensively throughout the codebase, and a > delegation layer is not feasible. > Here, I miss an analysis why it is _necessary_ or _highly desirable_ to > mandate Lucene 9.x -- in what parts it offers significant API advantage > over 8.x line (that supports JDK8) so it justifies dropout of older > platform. If it is for better *implementation behaviour* then heck, I am > hands-in for creating a bridge layer to work with Lucene 8.x (JDK8) > *and* Lucene 9.x (JDK11+). Just give me some initial guidance and some > time - but nobody asked for that, or gave such analysis (or at least I > do not know about one; apologies if I missed it). > > Similarly *other* parts that press us to upgrade JDK *runtime* should be > clearly articulated, analysed and possibilities evaluated; and ideally > decided upon. And maybe some contributor appears to help with both the > analysis and/or the necessary bridge. Maybe - but certainly not when the > idea is just waved off in absence of presentable data. > > So before concluding on anything, I propose these action items: > > - (?) anyone in regular touch with Gradle / Maven developers, so they > could share longer-term JDK support plans in their project ? > - (*) get JDK platform stats out of AutoUpdate server logs, should be > available on netbeans vm > - determine critical (unavoidable) external dependencies for platform > cluster; collect their JDK runtime support plans > - collect (non-exhaustive, just known) list of non-platform modules that > are already known to serve as application library. > - collect list of APIs from JDK11, JDK17 desirable to be actually used > in the codebase. > > (*) I volunteer to do this one. (?) I might be able to take this one if > noone else is willing to do so. > > I am sure others could (should) add their own action items, in their > areas of knowledge. It would be helpful not only to decide on JDK8 fate, > but also on designing the migration path from JDK11 later. We should > decide for the best outcome of project users, anyway. > > -Svata > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@netbeans.apache.org > For additional commands, e-mail: dev-h...@netbeans.apache.org > > For further information about the NetBeans mailing lists, visit: > https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists > > > >