 Welcome everyone. It's the 16th of June 2022. This is the platform special interest group meeting agenda items for today open action items require Java 11 status and Java 17 support status any other topics that need to be added to the agenda. Yeah. Okay. So, open action items this plugin installation manager docs action item continues as an open item because I just don't have time right now to approach it. It's that we want to document the plugin installation manager a particular way. And it makes sense, but it means extracting that and putting it into the plugin repository or plug in the GitHub repository. So that I don't expect any change even over the next month given the amount of work that's I've got other places. Next topic require Java 11. So, June 2028 is the new date for require Java 11, because we have an upcoming security release and new LTS Jenkins 2.346.1 and Jenkins 2.332.4 and Jenkins 2.357 will each be released. That's a weekly previous LTS current LTS release with security fixes next Wednesday. Buzzle anything you want to report in terms of the blog post I saw a really cool graph that I am now charmed and fascinated by. Yeah, I've been kind of researching the adoption rate of various previous Java upgrades that the Jenkins project has done but so far the only thing I've really learned is that we're what we're doing with Java 11 is on par with what we've done previously. And so far as, you know, we, one thing I discovered is we've always required a new version of Java. You know, that's, we've always required a new version of Java while people were still using the old one, but we were, but we always did so when usage was declining of the old version rather than increasing and we're doing the same thing with Java 11. So far everything I've learned is that we're kind of on par with previous with past precedent, which is good. That's excellent. Well, I'm that's really cool that you found data to support that that's great. Thank you. So looking forward to that, and then we will in September switch the long term support release to require Java 11 as well. So how's your sense in terms of the tooling Basel, are we okay on the tooling where it'll be relatively straightforward to make the transition after June 22 to be ready for June 28. Yeah, I'm ready to go. All right, excellent. Thank you. Thanks very much. So next topic then Java 17 support. Basel why don't you share with us there what the plan is. As part of this blog post that I'm writing I'm also going to announce that Java 17 is going from preview into general availability. And, you know, right now, there are very few people using Java 17, I think mostly because of Prince a very scary warning if you try to do that and requires a special flag to enable Java 17 support. We're taking that flag away in the upcoming LTS release next week. So you don't need to do anything special to run in Java 17. And hopefully that will encourage a lot more people to, in addition to writing in the blog post that it's no longer preview mode that we generally recommend it hopefully that will motivate people to start running with Java 17 if they are so so motivated to rather than let's say Java 11. And my sense is that Java 17 is overall a better release than Java 11, given that I think I found at least two or three bugs, if not more that have been fixed in 17 that I've had to backport to Java 11. If I were a user I would be, I would be choosing Java 17 myself, given that it seems like a more stable release to me. So, hopefully with our official blessing and recommendation. And with the removal of that special flag that more people will start using Java 17. And there is a small risk that there are issues we haven't discovered the Java 17 yet. We have run the plugin compatibility tester on all of the top, basically the top 100 plugins more or less. But there's still many more plugins than that that have not yet been tested so that there is a risk that your favorite plugin might not work with Java 17. And typically that's because it would be the issues that we've seen in the past that we fixed already have been related to plugins using extreme to serialize certain types of built in concurrent Java types. So things like like concurrent hash map or I think that's the big one that we've seen, where if you're, if there's a plugin that's trying to serialize those with extreme, that doesn't work out of the box in Java 17. And generally indicates a either a bug or maybe a design flaw of your original code, because these concurrency safe types are, it's probably not what you intended to serialize to an XML file right most of the time when you're using these, these data structures. You're trying to synchronize usage of some object in memory at runtime. And what's important is not that you write out all of these concurrency data structures to disk rather what's important is that you know these two current threads aren't going to race with each other and to access the same memory at runtime so when we've seen these problems in the past what we've done to fix them and I fixed a few pipeline plugins this way was just to convert the field from a concurrent data structure to a regular data structure, and to find some other way of doing the concurrency that doesn't involve serializing that to disk. So, you know, changing the changing the concurrent hash map to a regular hash map and then finding some other way of doing the locking so that you don't need to concur and hash maps and those are those have been the, the plugins, those have been the types of issues that we've seen in the past. I'm pretty aware, because we only saw a handful of those, and they were only in relatively obscure scenarios, you know, rather than very common scenarios. So I wouldn't anticipate a huge number of Java 17 specific problems, but there is there is always a risk of that. So, I think those will naturally be discovered as we, as people start to to use Java 17. And especially as plugin maintainers start to run their test suites with Java 17 assuming that they have a test suite. But it's one of those things that's very difficult to scan for unfortunately, since, you know, there's, there's, there's no, there's no easy way to determine without tons of false positives there's no easy way to scan through the plugin looking for serializable products that have these concurrency classes in them and even if you find them. There's no guarantee that that would be serialized with extreme in the first place. Rather than for example through remoting where it's fine to do that. So, it's, yes, it's going to be one of the I mean, maybe if it becomes a very big problem we could spend some effort and try to scan and set through the very many false positives. It doesn't seem like it's justified at the current point in time. I would be willing to reconsider that if more data comes to light. So we really don't have any today where there aren't any big terrible known issues for Java 17 it's rather, I think what you just described are things that are possible risks and possible risks with a code base that's as rich and versus Jenkins is someplace that's got to be have those those things right most every problem has existed somewhere in the code base so. Yeah, yeah. Great. Yeah I mean right now I don't know if any of any specific issues that are still affecting users. I mean there is, we do know about, we do know about a bug in a groovy views that specifically groovy jelly views that could affect plugins that are using using certain types. I mentioned this bug in the past as being a fun programming languages bug, but there's only one known manifestation of that bug and we worked around it in that case. So there may be others. That's that's probably that's that's another potential issue that again should be very rare. And again we could reconsider addressing the root cause of that if it becomes something that's more common. And we don't know if any other cases of that besides the, the one that we worked around and the work around is also very easy for that one. So, those are the two basically those are the only two categories of possible issues that we know about and we don't and I don't know if any concrete manifestations of either of those issues in any plugin today. Any any concrete manifestations of those issues that we have discovered already have either been worked around or fixed in every case. So the only thing that remains are these general issues and for the for the jelly issue there is a general solution to that which was known as implemented yet. And for the extreme issue. I don't believe that there's a general issue I think that requires case by case fixes, right detailed detailed look at the specific situation because, as you noted, if it's a design flaw. It's probably best to correct the design correct the implementation rather than attempt some work around. Right. Excellent. Thank you. Anything else on Java 17 Basel. No, that's all. Any other topics that have come to mind in in while we've been working. That's all from my side. All right, well let's call it a close for today. Thanks very, very much. And we'll meet again in two weeks. Bye.