 There we go. All right. Welcome everybody to November 11, 2020. The usual agenda review and agree on agenda topics. Of course, we can add things. It looks like everyone who's here has been here before. So let's jump right in. Felix, do you want to speak to the table to give status? Oh, yeah, me and Tim. It has emerged, merged two weeks ago. It's in and as expected, there are fireworks and explosions everywhere, lots of stuff. First of all, this in the epic. Most of you are aware there's the list of affected clients. There are lots of the reported issues that we knew beforehand. Basically, there's an entry for each plugin affected. And I think it's very interesting if you can, if you can open the second link, which it's a dashboard that team created. I think that you told us a bit about that dashboard. I've been troubled with it. Sorry. Maybe you cannot. Maybe you need to log in? Yeah, let me. It might be logged in users, maybe I'm guessing. Let me quickly fix that. Anyway, here in the progressions that we are tracking that are appearing, we are putting them under that epic. I'm sorry, under that word, dashboard, and then we sometimes we may link them to actual non-issues. For example, we have a, if we have an issue that relates to another ticket that we have on the main epic, we just link it. Okay, great. Awesome. Thank you all for driving that forward. Yeah, do we want to try any of these, Tim? What are those? Do we want to what, sorry? Do we ask any of the issues, something that we can think this is not the one we should pay special attention to? I think the major ones are all fixed except for Artifactory plug-in. Can you just give like a feeling, I mean, if your plug-in is broken by this, I mean, I know it's different plug-in by plug-in, but I mean, it's a kind of sense that you're looking at, you know, 10, 20 minutes, are we looking at a day or two's work or, I mean, I mean, I know that's a how long is a piece of string question, but still, I mean, but what's the rain variability? Most of it's no more than 20 or 30 minutes. Right. So there was only three major plug-ins that were broken. Branch API, CloudBees folder and HTTP request and Artifactory, so four major plug-ins that were used by quite a lot. Artifactory plug-in was the only one we were aware of before we shipped it. And the rest of them are all 1000 users or less, pretty much. So the conditional build step and how broken are they? I mean, do they look ugly or is it impossible to configure plug-in? It's not just that plug-in, it breaks the whole page. Ah, okay. Yeah. In quite a few cases, the users have said that I'm not actually using that plug-in and they've uninstalled it. Right. Many of the cases, to be honest. Sorry, breaks the whole page. Again, does that mean that it's ugly and hard to use or does it mean that it's impossible without, you know, blindly tabbing free stuff? Sorry, it's flat out impossible. Yeah, okay. We will have to modify XML files. Yeah, okay. So the plug-ins need to be fixed if and quite a few plugins have been fixed. The only one with pending once, I think there's two with pending reviews, post-build task, which appears to have been up for adoption in like 2012 and then adopted in 2017 and then nothing done. And the current maintainer is not replying. So it's about, I think next Monday, the adoption time out expires. So, and then Raihan's seen a PR for conditional build step. Yeah, I haven't really been looking at the ones that have a thousand less users. I've just been triaging them. So it's only one thousand years of plug-in that hasn't been fixed yet. I think so, yeah. There's one, there's at least, and the difficulty is more in triaging the issues. If a new plugin comes up, you basically got to disable plugins until you find the right one. And getting users to report it in a way that you can read the list. Tried to have them report it in a standard way, but they're quite often not reading it. And then you have to ask them again. And then you have to look through the list and see if there's one. Well, everything's already linked on the epic. I updated the description of the, the main issue that people are reporting issues to this morning. I put a big header at the top of it saying, look through these issues first and always include your full plugin list. So hopefully that will help. And then it's just, if they haven't checked the list, checking if one of those plugins is one of the known ones, because the last three ones have all been artefactory ends. There was two using the conditional build step plugin, I think. No, so not that one, the post build task. So I haven't found any new plugins in the last few days that have issues. Right. And yesterday was when the branch API and CloudBees folder was released with the fixes. All right. Sorry, sorry. And the release of CloudBees folders happened in the end. Sorry, what was that? Did you manage to get a review on CloudBees folders? Yeah. So branch API, we updated the baseline because there was some weird edge case in the jelly, not resolving variables properly. Both myself and Devon weren't able to figure it out. So we just updated the baseline. CloudBees folder, we used the standard. Keep compatibility with both old and new. And that was fine. Okay. Yeah. And regarding, well, regarding CloudBees, with CloudBees we are going to start fixing and working on all our supported plugins soon the following weeks. We will probably start next week. There are quite a few of them. So, but we are paying attention to everything. We are also monitoring the, any possible stuff in general score that you also think, for example, I may just come up maybe a lot of there. Yeah. And yeah, I know you, of course, even if some plugins are not supported, we will help try Ash. And, you know, diagnose and point users to the documentation and stuff, which point maintainers starts full request recipes and documentation. So the whole thing. Yeah. So that's what we are going to do. Yeah. I think. Okay. As there's also effects when I'm saying the core weekly as well. And to look in the latest one that went out yesterday. So I think this should be a lot better after the releases went out yesterday, both core and branch API and CloudBees folder. Most of the issues are now fixed. That would be great. Yeah. Okay. Any more questions regarding the also this. Okay. Okay. Then I would like to give you a brief update, updating the equity work update. Well, as I mentioned, one month ago on the last, on the last exit meeting, we're probably start working on updating the equity versions, all the equity versions to 3.5, many of the most notable plugins. And the reason for that, the huge security vulnerabilities. We're probably using the equity in touch. In as many places as I can. So this would be the most, this was the most difficult one. And pipeline stage view. I just wasn't able to update it to, from this really to Webpack. I, and I needed to comment out one unit test. I will try to, to make it work with that unit test, but it's one unit test. After out of 39. It's difficult to test. I updated the equity, it's the blackest of boxes. It's just impossible to be inside. To see what's going on in that test. So I would read the money on the replicated to see that, or if that, that test is just covers a normal user flow. A test is just something users would normally see if they interact normally with the plugin. And yeah, then I would reduce reviews. So that's, yeah. So that's sort of the last thing query. I agree. It has been updated in game game score. So we will be releasing 266. So yeah, that's it. Just hope it's a good update. What was the reason you couldn't migrate this to Webpack? Was it just too complicated? Just complicated. It was a rabbit hole of, it was even worse than migrating Jenkins and more files, changing a lot of imports, then changing handlebar, the important handlebar templates didn't work because of the helpers. And also there's an extension point that depends on the AS modules. It just wasn't able to meet for like 10 hours or more. And it couldn't match. I wasn't even halfway done. It's on soldier storm. Yeah. Yeah, I think maybe you're going to shine. Plugging manager performance improvements. Yep. And just opening it up. Yeah. So basically I've gone, they got sick of sitting there waiting for plugin manager to load while I've been installing plugins. So it takes between like three and five seconds for me locally, just sitting there waiting, which isn't very nice. So every work to do the, so the major problem really is that it loads all of the plugins into the browser. All like 15, 1600. And it's all on the page just hidden and then it searches them client side. Whereas what I've changed it to do basically is load is not as to only load like 20 plugins or sorry, the top 20. Loading loading. I was not lazy loading as such loads like 20 and then you just have to search in the box. I think a follow-on improvement would be pretty. Well, you could add an infinite scroll sort of thing. Whereas you scroll, you could add more and you just go from a popular ones down, but you could do that as a follow-on. I can quickly just show it to show it working and so other people can see it. Sure. It'd be great. So this is the old so this is on. This is 2.265. So this is just the regular one. Just show you how long it currently takes. So for me here, I'm just going to start loading the available plugin page. Actions looking good. So it's just finished now. And that took 16.8 seconds for a complete page load. So more than the three to five seconds I was talking about. But let me just go back to here. And so this is this is my custom built version. And if I go to available, I've just got a complete load time of 556 milliseconds, which is like a 35 times improvement based on that previous one that you just saw. So then here, so you see here that there's some plugins are loaded. So I think these are some of the most popular plugins, a lot of them, a lot of them are very old ones that just to be installed by default and all things. What's about MapDB API? Maybe it's not quite doing it based on popularity, right? If I go here and I search Slack, all the Slack plugins are there. If I go like pipeline, you see the pipelines and I want to get a user interface plugin. It's as simple as user interface plugins that just loaded. Another improvement that I did was I kept selected plugins. So what I had in the previous version is that if you say I want Slack, you take that and then you go, I want pipeline. You don't know what's still selected. It's actually still selected. And when you click install, it will get installed. But you've got no context of what you've got. There's no way to tell what you have currently selected. Whereas here, I've changed it when you update your search. It will always keep the selected ones. So if I go here and then search pipeline, you'll see that these have always stayed. Oh, that's amazing. Yeah, that's a big shift. Seriously. Nicely done. Yeah. And you also see that the striping is still working. Yeah, the striping. I actually commented that one. Yeah. There was a completely burden on the old one. Yeah, this one, Daniel, recorded in 246 or something like that in the beginning of summer. So it's nice to see this one. So to fix. Now it's a shame that it's not in the other one, right? Yeah. Is it still possible to search for meta labels? So labels like deprecated or adopt this plugin? I think I'm filtering those out. I think that's a bug. But why? Yeah. I don't know why you'd want to search for deprecated plugins. Well, it's showing the query. Why are you showing the deprecated notice? That's only going because it's in. It's probably in the, I don't know why it's showing up. That looks actually good. Could you search for adopt? It is working. Yeah. Could you search for adopt? Okay. So that one doesn't look like it would work. Interesting because they should actually behave alike. Cool. But yeah, this is a huge improvement. So thank you for taking care of this. Yeah, thank you. And did you, did you think on taking the chance and to move it to the, to the, to the blockchain? Sorry to develop a blockchain. Yeah. That's a little about it. Because my reasoning is that you can, if you keep it in, in Webpack, then you can split common for Javascript utility functions for the, also the, for the Javascript, that's on the other two pages. There are some stuff that you could reuse. I don't know. Maybe filtering for example, and the retention of the, of the selections. Yeah. Maybe. Yeah. I think I'll say. I mean, that's something that can come after of course. Yeah, that's one thing. So I haven't touched the, the updates page or install pages. I avoid touching them. They're still using the same functionality. Yeah. And basically just validating it. I'm not sure if it's the most, you can see what I'm doing it. It's very much basically constructed HTML in the Javascript. I mean, the only alternative would be to use hunger or something. It's just not good. Right now to use it outside of work. So I mean, it works. Without, without bringing a framework and I couldn't see a way. I think this is above anything that Jenkins has built in. I could say. Yeah. It was already. This is how I used to do it back when I did Javascript in about 2004. Yeah. Yeah. It still works. Yeah. It was a big enough of a pain getting like the data to travel properly. Having to send it back as a string and build adjacent object manually. Yeah. And yeah, I noticed that when I expect the, the Jason was, it didn't preview correctly. So is there any reason for that? It's a propagation. It's string escapes. It gets translated to a string. Because of how. These JavaScript methods and. It doesn't. It doesn't handle. So it's supposed to handle like string list. It doesn't cycle. I couldn't return a whole object. It doesn't. It doesn't. It doesn't handle. It doesn't handle like string list. It doesn't cycle. I couldn't return a whole object. And I just, I just silently ignored me. And then I had problems. I tried returning a list and it didn't work. I was getting. Passing errors. It wasn't passing properly. Okay. I know. Possibly. Expose it as a proper. If I did like a do, a do method. And then did a. Request. Dot. And, and then my, and then my, and then my, and then my, and then my, and then my, and then like set the headers and everything properly through the state for the request. Should be able to fix. Do that properly. But then we'd have to change it to instead of, so currently it's using. Jenkins is. That the, the bind functionality we. You go like. VAR view equals bind. And then the current. Descript. Or object. Back for the backing object. And then you go. This view. Available plugins. Otherwise I could just change it to. Be a proper API. And then. Change it to make a rest API call instead. The other option. I was just being curious. Yeah. I also, I also added in some functionality. So it didn't smash the server. I found that when I was typing initially. It was, it was sending like 20. API calls and just. Now it just sends. Depends on your typing speed, but if you just type really fast, it will only send one. So if I type. Kind of. We only did one response. If you have troubles. You can also. If you use. Well, you would need to use an X. X HR request. You could abort. In-flight requests. So that it doesn't. But yeah, he wants is. Please. He was in such works. It's the right thing to do all the time. Yeah. Yeah. Right now. Quick question is. Do you limit the number of results? Yeah, I limit it to 20, I think. Okay. It is absolutely impossible. To ever see the R plugin in this list. Probably. The. Yeah. Yes. Unless you find a clever way. I don't think you could find the R plugin anyway. Statistics. You can't find the R plugin in this one because it makes it requires you to put two characters in. And what's the reason for the, for the limitation? In the old version or the new one? The new one. Was the old version limited? So the, so the old one made, made you type two characters before the search. There's no real. Well, the reason, the reason to have a limitation is that by default, basically, I send, I send no search filter. And then I limit it to 20 results. So I don't get 1500 results coming back. Okay. So, yeah. I think, I mean, I'm guessing that people are going to have a problem with this implement. Some people will have a problem that, you know, I can't browse through plugins properly anymore. That's, I mean, it seems like a big improvement, but we're going to want to have some kind of either lazy loading or pagination just. Yeah. Lazy loading with pagination built into it would be probably the best way to do that. But I think you'd want to implement pagination because no one's really going to look past the first or second page. So one, one problem that might actually be real and new when it's only 20 plugins, what happens when you type blue ocean? Because the problem is the blue, the actual blue ocean plugin is the least popular blue ocean titled plugin. Because every other blue ocean related plugin is a dependency of it. So you may be able to install blue ocean JIRA without having blue ocean installed. So if we sort, since we sort by popularity, it's the least popular one. I'm not able to install blue ocean right now, given how this works. Even if you, even if you remove this, perhaps if you remove the space, the ocean combined, it might show, but it may not. Nope. And the same will happen for the pipeline, for the pipeline. Well, there at least you can specify workflow aggregator, which is its internal name, but you need to know it. Or it may be popular enough. The problem with blue ocean is that it's just one big ball of plugins. And so the workaround would be to install them one by one until blue ocean finally shows up in the list, because all of the others are moved to installed. So that's still a bit of a weakness. Now, obviously the ordering by popularity could be improved a bit in such a situation, but it's simply not expected to have a dozen or two dozen plugins when one would suffice. Yeah. We could always put an artificial hack in there, just blue ocean has max popularity. Or what if we just ask for 50 instead of 20? Yeah. I mean, we just ask for more. We get them and it'll be in there. Maybe we stick in 30. I can stick 30 in and say, say what happens. I mean, maybe that's something that can be done. I think 50 is a good compromise, at least for now. But I mean, I feel that my gut is that, I mean, people are going to not like this. There's going to be a very significant minority of people. It's going to have issues with this solution. Yeah. I would rather than maybe start searching after the two or three but everything. Or just make it a stepping stone and iterate over it. Because I don't think it would be too hard to make a infinite scroll implementation of it, which just means that if you scroll down, you get the second page. Makes sense. I didn't really want to do it in the first pro quest. Yeah. And we can always just set the number to be 50 for now anyway, and then change it if that scrolling comes in as well. Definitely a good hack that you could do in one minute to make it better. Yeah. I'll do 50 later on and see if there doesn't cause any other issues. Otherwise I'll do something like, I do enough to make the solution show up. But yeah, thanks Daniel. And let me add that as a comment. Is there anything, any other feedback or anything people would like to see me try out? Unresolved security vulnerabilities. Give me a plug in. I did try this out so it works, but give me a plug in. The trick is you need to search for I O slash security. At least that works in the current version. That doesn't work. Yes. Interesting. Is that right? Is it no longer? Okay. What happens when you search for warning? I must worry. Type over there. Similar. You want to search warning. No, we don't search that. That's a UI display translation. Before that would have worked because you were searching the whole HTML row on the client side. All of the advisory URLs are in Jenkins I O slash security slash advisory. You could search for a substring of that to find all plugins with security issues. That was a fun hack to see exactly how many unresolved security issues we had. If you want to hack the floor, I'm sure if you put something in. I'm really sure I was the only user of that. It's a really crafty solution. Yeah. I need a feature flag to enable it. Is there anything? There's nothing with multiple that are showing up. Warning. Is there nothing? Here we go. FTP publisher. There you go. Security warnings work. You can't search for all of them at the moment. Okay. But there is a problem, I think, with this filter code. Security warnings. Ignore it. Here's the problem. If you open FTP publisher, if you click the link, probably have a dependency on. Didn't have a dependency. Interesting. I would have expected that to have a dependency on jQuery because otherwise why would jQuery show up in the list? Could you go back to Jenkins? That's a great improvement. I just missed it. Okay. That explains it. Okay, great. Thank you. Another improvement that I did. I'll just quickly show it. Doesn't seem very full proof, but it seems to work quite a lot better than before. Yeah. So does this layout update callback. Which is what's responsible for... Moving the buttons. Yeah. It's responsible for moving those buttons down. So before sometimes... Without that hack, it was always here on the initial page load. And sometimes in the old solution, it ended up in the old solution. It ended up in the old solution. It ended up in the old solution. It ended up in the old solution. And sometimes in the old solution, it ended up in weird places. If the page loaded quickly. So I've changed it to delay a little bit so that the rows get added in. And it seems to work quite fine. I want to move those to CSS. Everywhere. It may change the way that the buttons are sticking forums on these pages, but I really want to move the release to CSS based. Yeah, it would be great. Because it's also for performance. Yeah. And there are lots of ATH tests that are flaky, because you load a forum, for example. This I'm digressing about. Yeah, that's two seconds. And there are forums that you load a forum, for example, the ATH expects to click something. And because the buttons have been moved yet with JavaScript, the ATH fails. So it's a diamond issue. So I created that. James North created a ticket to, I think it was James North to convert these to CSS. It's on my radar. And hopefully I will be able to calculate some work sometime. It took me a little bit of time to figure out what was going on, and then a bit of time to figure out that hack because before it was really annoying. Yeah, it happened to me as well. I don't know which plan to liquidate. It was weird. Cool. Anything else? Got anything more? What happens when you switch for IO? Nothing interesting, I think. Okay. Interesting. So in the current version the problem is Yeah. So this is partly a feature and partly unintentional in the current version, you're able to search for any substring of plugins. Jenkins.io to find all plugins which I provided people who complained that it no longer shows the entire list, that there's a workaround. Now I don't know how many people actually need this but maybe there should be a button that says show all plugins. I would expect we can probably get away with having this change in and then reacting to people complaining before we added but just good to know that there's no longer such a workaround. Yeah, it would be easy to implement other than the UI side of it. It's how do you like how do you put that there on the UI without making it look weird. The implementation is just put a crazy high limit and then it would just work or you'll even add a field where the user can choose how many plugins they want to limit it by and you go like 20, 100 all so that would change it from just a search box to a search and limit everything. If anyone has any thoughts on that but it certainly wouldn't be hard to implement. Anyway, this is a fantastic improvement over what we currently have so thank you very much. Thank you very much. Cool. Let me know if there's any more improvements because I do have some time tomorrow Friday that I can spend on this if there's anything that's missing. That's probably a bit more than time you got. I've got time to do some hacking on it. I'll probably put it in a separate branch. Cool. Thank you. Awesome. Thank you Tim. Do you have anything left or anything on the agenda? Just one final item which is a note from me. Do they want to have anything else they wanted to raise? Okay. My update is a bit of a downer which is why I saved it for last. This will be my last UX SIG session. Unfortunately. My time at Cloud Bees has come to an end. I'm taking a different opportunity so I won't be involved since this is every other week beyond this session. It really has been a pleasure to work with you all. I know a few of you already knew this. Tim and Uli, of course, you're not at Cloud Bees but I so appreciate the work that you've done over the past year honestly and your openness to collaboration. Thank you very much. This will be my last SIG session. I know that there will be another designer taking this role. I don't know exactly when but we'll keep this SIG updated on that transition. And yeah, that's it. Any questions, I guess? I don't know why you would have questions but that's that. We're going to miss you, Joe. Likewise. Thank you. Yeah, we talked. And like I said, now you can keep contributing. You don't have to work as Tim or Uli will tell you. You don't have to work for Cloud Bees because that's true. I think this, I think pulling off something like a SIG and I know that it hasn't scaled tremendously and it's fluctuated in size a little bit as a group but pulling this off I still think is really impressive. It's a testament to everyone on this call and other people's devotion to Jenkins as a project and I admire it a lot. So thank you everyone. Appreciate it. Thank you. And with that, we'll call the meeting I think. Thanks. All right. Thank you everybody. Good luck, Joe. Thanks. Bye.