 Okay, we are live. So, hi everyone. This is the regular platform special interest group meeting. We have several contributors on the call. We have Adrian, Baptiste, David, Mark, and me. So yeah, we have some topics in the agenda to discuss, but I don't think we have anything specific for today because we had summertime changes. So, the meetings go disrupted a bit. Okay, I will just share my screen. Do you see it? Okay, so yeah, I just opened the agenda for today. We had proposal from Alex to discuss next step with Windows installer because he had the controller can be integrated into the Jenkins CI package at some point so that it becomes official installer. But we need Alex on the call to discuss that. And we don't have Alex because we had time zone issues. So I think that the best way for us would be to just schedule a separate meeting with Alex because it's an important topic and maybe we don't want to work for the next week. Oleg, you seem to have an issue with your mic or if it's only me, but something like you're going away and back and away and back? Yeah, I probably need a better platform. Two or one platform, sick meetings. Well, you're the one making us able to represent many OSes. Okay, is it better now? Hard to say because it was varying, but I see that it's not. Okay, let's hope it's good enough. So, yeah, for this item, I just proposed to postpone it. Maybe somebody could start a doodle or whatever to find an optimal meeting with Alex. Yeah, you're still temporarily lost from time to time looking like a robot. Yeah. Yeah. Yeah. You're still temporarily lost from time to time looking like a robot. Yeah. Yeah. You're still temporarily lost from time to time looking like a robot, but that's fine. So, you did just put an item on someone, like Avian or myself, to create a doodle indeed with Alex to sync up about that indeed. Because it would be indeed nice that we can do that before the next Thursday where is our usual meeting. Okay. Does it work for you? Okay. And I guess a related topic is about moving regular meeting time. Apparently, we have the most of the contributors in the countries with summertime change. So, yeah, maybe we want to change the date that is starting from the next week. So, that is not that stressful for all contributors. Yeah. So, I just have the meeting calendar open. So, now all Jenkins meetings are scheduled in UTC. So, this is, for example, 2 p.m. UTC now. So, yeah, for Europe, it will also be another time starting from the next week. So, yeah, I think it's a good time to start doodle so that we can consider the time if other people want to change it. Yeah. I can take the section. Okay. What else do we have? We have a number of open action items. I suspect we can just copy and paste this list. Does anyone have updates for these topics? I do not. You're correct that just copying the list is what we need. I thought that Alex's request for project ownership was granted and granted a while ago. But again, it's safest probably to leave it there with the question where I can let him report on it himself. Now, the code signing topic, I don't know what the progress there is with, we are now part of CDF. And so, we have a legal entity that should be able to request that. But I don't know what the process is to do that. I don't know how the Jenkins project actually connects to use the newfound power with CDF. Do we have any guidance from them? No, CDF is yet to be formed. At least it's my understanding. Okay. Yeah. So, I don't expect really things to be internally changing. Anyway, we're supposed to be autonomous inside CDF, so I don't expect a lot of changes soon anyway. Right. Okay. Yeah. So, other topics don't really rely on CDF. Maybe project ownership, but yeah, they believe we still retain individual ownership. So, yeah, when you have a meeting with Alex, maybe it makes sense to clarify this topic as well. Yeah. Can we maybe, like, separate or like, no, not, I'm being picky here or like, asking for much, separating things that we would cover with Alex separately because we're sure that the windows, you know, things are clearly and easily findable in the actual items so that we can address them in the meetings where we are considering. Okay. I think so, yeah. We can just create a agenda for the new meeting then. I think nothing complex just, yeah. Right. Thank you. Okay. So, it's, with these titles and I will just move it here. Just install this next steps. Okay. So, something like that. Anything comes to it there? I am moving the postpone one, I guess, that can I, or I don't know if I should leave there, but anyway. That's fine. I'm going to leave that there. Okay. Well, let's summarize everything. Don't worry about me. Just go to the next one. Yeah, right. So, for that, we have a little thread about trying out some tools. So, I guess we could just introduce it at some point as an additional packaging. But yeah, generally we still need to decide how we make decisions about it. Well, and is this, do we want, I assume we want to have those discussions in the context of that JEP. So, that makes that JEP that much more valuable to get submitted quickly here rather than me just letting it languish in the action items. Are there guiding principles that folks, people on this call would like to suggest, be included in the JEP, that I should all be sure I say this or say that? I'm not sure about that. So, it would be nice to just start the, to start drafting. Okay. The things, for example, understand which platforms we want to have as must have and how one would add additional platform. So, for example, it's not a question for us whether we want to add, for example, Windows containers or something like that. It's a question for somebody else. Yeah, if I as a contributor want to add Windows containers to Jenkins official images, how would I approach that? And what would be the criteria? So, it would map, for example, the current work being done by Durgadas and other examples we had. Right. If I wanted an ARM port or a Series 390 or whatever. Yeah, I like that. Thanks. So, it's, this JEP is about the decision process and the selection rules, not about recommending any specific decision itself. Yeah, I think so because to recommend something, firstly, it's about platform neutrality for Jenkins. Second, maybe we need to do a serious research. Okay. Anything else about this topic? Yeah, not from me as well. Okay. So, what else do we have? So, we have a topic to discuss the plugin installation manager proposal. We had one student interested in it and we are waiting for the student to come back to us and to join this meeting. So, just a second, I believe it was discussed. Yeah, it's him. So, here's the pending proposal draft. Unfortunately, this draft is not open for comments, I believe. Oh, no. Now it supports comments. So, yeah. So, here's a proposal. We are waiting for Natasha to join the call, but if somebody is interested, we can just review it together. So, yeah, there is not that much content so far because, well, deliverable section and it's still empty. So, I believe we need Natasha to join the call so that we can discuss these sections. Same for benefits, it's just the beginning. Yeah. Let's see. Okay, one. Yeah. So, Natasha said she will join something like 3.30. So, we have 10 minutes till ETA. How would we approach that? I can just run a separate meeting. So, for example, with me, but he stands, anybody else who is interested to join, or we can, yeah, I believe that separate meeting would be useful. So, when she comes online, I will just start another meeting. That's it. And we can have this recording. Oh, I see. Okay. So, the idea is our topics are generally done. No need, no justification to just sit and talk. Got it. Yeah, that'd be fine. I'm happy to chat with you guys for another 10 minutes, but I believe that everybody has some topics to do. Okay. And yeah, if you have anything to discuss for platform seek meeting, for example, Java 11, Statos, or Docker packaging or whatever, we can spend this time on that. If no, we can just, just proceed to something else. So, there actually was a question yesterday that having Baptiste and Oleg in the same space might be a real help on Java 11. There was mention of a question, hey, which plugins have known problems with Java 11? And I went looking and I found no list other than a performance Dynatrace, which we had a Jax B64. So, as far as I can tell, the answer was there isn't any known plugin which has specific problems with Java 11. This is, I would say, correct, because the only issue, there's no, no, there's not no issue at all. There's that one indeed. That's been reported on the issue tracker. We didn't look at it yet deeply, so we need to double check why it's still failing despite having still the Jax BAPI plugin that's supposed to solve that issue. But it's the only place where we've seen that surfacing. So, and that plugin is as far as I remember using Retrofit 2, which is a tool to expose REST APIs or something maybe deep on class learning or whatever. But yeah, we don't really know about, that doesn't mean that there's no issue, but as people may know, we have 1,500 plugins, 600 now, so it could very well be that we have a few plugins failing. But our testing with the suggested plugins in the wizard and the installed plugins that are installed, let's say, more than a thousand times, which is already quite less than the average, we didn't really see anything blocking surfacing. For instance, there was the sLockCount plugin that was failing, that was proved to be fixed by the Jax BAPI plugin. Speaking of that, I'll just close the issue. About what? So, there is an open issue for that. sLockCount publish fails on Java learning. Right, yeah, right. Maybe we don't clean up the existing thing that should be closed indeed. So, I wanted to say laughing. Yeah, so about that, two pages on the Wiki mark and anybody watching, there is Java developer guidelines and Java 11 compatibility something, I don't remember the name exactly, but you should be able to find it through Google because that's how I do it all the time. So, basically, there's the issue tracker. There is a Java 11-compatibility label that should be allowing you to find the issues around that. And we probably have a few issues in the tooling but nothing really surfacing as far as I remember in the plugins per se. So, again, the performance of the site signature data trust plugin. Just to add some context to that. Actually, we do have some compatibility issues we know about, for example, RBM plugin. I mean Ruby Virtual Machine 1. Right. And this is just ETH failing, but yeah, there was some spot check conducted by Oliver. He says that, well, actually, this plugin just doesn't work with Java 11, which is not that much a surprise. Yeah, right. So, indeed, I was assuming too many things here. That's right. So, apart from the thing we already know and documented publicly even when we were releasing the blog entries and the Java 11 preview, we already said there that Ruby runtime-based plugins were already known to be problematic. But apart from those things that are already known about since like one year, we don't really know something that surfaced like in the last months or something that that's what my meaning indeed, we're right. Yeah. Would you be fine if I remove Java 11 compatibility label from such things? So, as long as they don't really cause breakages? That's a good point. I don't know. I'm not really sure. Yeah, my preference would be to remove Java 11 compatibility issue because, well, it doesn't really cause any compatibility issues as long as you have JXB plugin installed. It shouldn't, right. But, for instance, we know that in the case of the performance dinotra signature plugin, despite that plugin again in the class pass or in the module pass or whatever we call it in the dependency tree of Jenkins behavior, it seems to still cause an issue. So, for people watching, I did file a lot of many, many issues basically even if we know that that plugin should fix that issue, basically just asking plugin maintainers when they actually weren't relying on JXB core features to just remove using JXB. For instance, we have a lot of cases that have been fixed already, just using the JXB data type converter API that shows people using JXB API for converting to base 64, basically. So, that's kind of a waste for that dragging that API for just that, basically. Yeah. I'm dragging and dropping tickets right now, but yeah, this is the Napec that is talking about. So, yeah, there is a number of tickets that most of them are in review and I guess the most of them are really blocked by the lack of maintainers and the plugins. Exactly. And most of them, if not all, are tagged newbie friendly. Yeah. So, there was a picatinny at FOSDOM and I believe it was one of the topics there. Yep. Mark? So, just to reinforce you've said that in general we have very few Java 11 issues, that's great news. Okay, I am as proud as I can be of the Java 11 work. That is so amazing. Mm-hmm. Thank you, yeah. We don't want to brag too much about that, because well, anything could be surfacing in the next phase. So, we don't want to say everything is perfect, but yeah, we are still internally finalizing tests, checking, accepting test analysis run, but we didn't see things really outstanding that would be like, okay, with no idea how to fix that or most like, if not all things that we've been seeing, failing plugins are basically being related. But I want to brag about that basically. But it seems good. Okay. But yeah, the most of the issues are really fixed. So, yeah, there are some minor ones and I see that some of them have been submitted by Mark Wade. So, for example, this some pipeline jobs fail after we start on Java 11 server. So, has it been already trashed? It has and resolved. It's done, yeah. Should we close it then? Yeah, there's this one as far as I'm concerned is resolved. Devin already fixed it in the 3.0. Is he, I don't know if he's leaving it open? Yeah, as far as I'm concerned, it is resolved. Yeah, we'll just close it. All right. So, that maybe just have less issues in the public. Okay. I'm not sure why a transition doesn't work properly here. Oh, actually, and I remember that one. I may go back on that one and reopen. That one is not Java 11 specific. I can see the same failure in Java 8 and it's intermittent. I have no clean reproduction case so closing it is the right thing to do simply because I can't duplicate it consistently. If I get to the point someday where I can duplicate it I will certainly reopen it and put good instructions in it. It seemed to require high memory stress or all sorts of different conditions. Right. Yeah, thank you. We also have this ticket open to test and run ATH or Jenkins water with Java 11. I believe it was completed. So I'm not sure why it's still in review. Yeah, then we should close it. So ATH, I'm impressed. ATH has been quite helpful in the Java 11 bug problem detection field. The general observation is that it's actually helped us find real bugs and identify the plugins that had real problems. That's good. Yeah. Yeah, definitely at least for people watching. ATH is using Selenium and Selenium is a functional testing framework. So basically it's behaving like a physical user would be clicking on the things and checking the UI relax as we expect. And we didn't, as far as I remember, really discovered anything really failing. So ATH didn't help us discover issues, but at the same time it kind of still is important because it also showed us that we didn't find any issues so that that's still showing that Jenkins from user standpoint is still behaving as we expect. So ATH was critical in our confidence that things are still working well. Thank you. And we also used a lot of the so-called plugin compatibility tester for, sorry, framework to test a lot of plugins. It's a bit more cumbersome to, well, it's different let's say, to test, but we've been fixing a lot of things around that to make sure things are really looking good. And we've even fixed file things into various plugins that wouldn't be strictly required because we didn't see things, you know, surfacing from the UI, from the user's perspective, but we wanted to make sure like like do the last the extra miles and make sure things would actually be going well. Okay, anyway, it looks good. All important tensions have been closed. So yeah, I think that we can just keep it or maybe we should actually it would make sense to slightly clean up the filter because there is a lot of things which actually don't impact users. But yeah, I think that overall it's still a good state. So yeah, we will need to clean up a little bit eventually, but I think it's fine. Okay, so it's okay. I believe we definitely killed some time but Natasha is still not here and I'm just checking the chat. Okay. Do we need to discuss anything else if Natasha doesn't join? I don't have much topics from my side. Neither do I. And I am maybe in something. David, Marc? No, nothing for me. Thanks very much. Okay. The main focus right now is finalizing basically ATH Java 11 from the platform focus on my side at least. I may be hoisting a question to the bigger infrastructure group because the Java 11 addition to plugins is actually going to increase our demands on infrastructure. Right, we're now effectively doubling the test compute capacity that we need every time we add Java 11 support and there have been because in addition to testing for Java 11 on the recent LCS we also have the testing on Java 8 against the recent LCS. And many of the plugins weren't doing that because I know the Git plugin for instance was testing LTS and its required version but nonetheless we've got so I guess this is a question to the infra team. I'll bring it up with Olivier or somebody like that. Hey, we're going to use more compute. Yeah, so maybe that makes me think about that maybe we should actually spend some time because I said we would and we didn't. There was for people watching we had an infra thread like two weeks ago initiated by Tyler because he was playing with basically way to run containers for the workload and instead of VM it would start in say a few seconds even if not less in compared to minutes basically. So probably and I think it was also way way way cheaper so maybe that would be kind of mitigating that issue because while still having a high coverage or high continuous because we are testing a lot more things and it's more expensive it's more consuming time so obviously so that's always there's no thing that's only as pros so probably we could just make a task or something dedicate some time to make sure we test that thing you know test compatibility stability basically so that we mitigate that kind of cost issue that's well maybe also at the same time CDF is going to make that a non-issue but at least if it's also lowering the number of the time required to build things it's still a good thing so yeah right it's now Tyler's technique doesn't do windows I've got to have windows and many of the plugins need windows but that's I think you're right but he's let's invest some time in that I'll see what I can do capacity wise thanks there is actually an email from Tyler in your inboxes if you follow the infrastructure mailing list because we still have some money in Asia sponsorship but here our current trends is probably till the end of the year you mean the new one or yeah the new one the new exegents are full it is the one okay wait let's go ahead I can show this email oh infrastructure mailing list is public yeah infra is public I'm pretty sure so anyway let's focus still on the infra related subjects and maybe we can spend a bit of time actually discussing now Natasha joined hello hi welcome thanks so it's a bit early for you I guess yeah I have a recitation section I run at like nine eastern time so I've been up for a while yeah I guess Mark is probably beating you anyway Mark you're in the center US so yeah go Rocky Mountains that's right welcome Natasha great to have you here thanks so for people watching we explained that at the beginning that Tasha is a GSOC student in the Center of Proposals for the plugin installer subject so yeah like he's still going back to presenting I suppose yeah great so we have this proposal it's posted on your website I want several other proposals related to platform special interest group yeah the topic is about whatever installation management specifically docker packages which is the most widely used example and also configuration as code and some less used things like customer packages every etc etc so we have multiple number of implementations of offline plugin management all the implementations are different for example for official docker images we don't really install detached plugins automatically which creates a lot of confusion when we detach a plugin from jgscore example it happened with ggk tool most likely it will happen with jugsv for people migrating to java 11 and other things and same configuration as code plugin it's also not ideal in terms of dependency management so dependency management there used to happen differently from docker packages so the idea of this proposal is to actually just have another tool which would easily replace all other tools it may be just another xcd example introducing a new standard but hopefully we could replace this implementation and that's why the proposal is about having CLI tool and also library so that we can use it in maven plugins for example but I guess it summarizes the project idea and maybe you at least want to add something not really I talk already too much in general I'm not going to add much I think you summarized it well so yeah probably we could discuss the details and answer questions from Natasha if there are any ones and then if anybody else is interested in this proposal we can reach out to the platform special interest group so Natasha if you have questions we can address them live and if you have and if you don't then it's final so to use the chat or email for more ongoing longer subjects I guess yeah I do have a lot of questions so some of them are kind of more general and then some of them are more specific okay I think the first question I have is so this so I like writing this description this would help with like versions and tooling and so can you explain like what you mean like what the definition of tooling is yeah so I can show example for example for Docker if you haven't taken a look at it for example let's say yeah Natasha I have a demo for configuration as code but yeah what I'm trying to show here is actually an example of plugin management so what we have here okay you see my screen right now right yes yeah so here we have a number of files it's one of Jenkins packaging Kendocher here it has plugins 60 so it's a file which says which plugins need to be installed on this Jenkins instance so you may see that there is a number of plugins with versions and what happens with this file that when we built the Docker image here here we have a command which actually consumes this file and then performs an installation so here you may see that it's called download and check updates because at some point I tried to implement check updates procedure but generally there is a script called install plugins and it's a part of the official Docker image so here you may see that there is a number of scripts and here's install plugins it's a pretty short script in shell which actually does the plugin installation it does the plugin installation during the image build so that it's formally an offline installation the one which doesn't run Jenkins on its own and then you may see that it does a lot of actions but generally it just puts all plugins to a specific folder so there is a folder where all plugins are installed it resolves the dependencies it puts the installation and even now the script is a bit complex so for example when I tried to it updates management for example here show the list of available updates and check security warnings whatever so yeah probably it's a cool feature but it already caused some concerns about the complexity of the scripts and it's actually one of the reasons why the task has been created in GRI because well the script is too complex and it would be better if you had a special tool for managing plugins so this is what the project idea is about right so basically by tooling you just mean like kind of like just being able to configure things I guess before you start yeah right so yeah just continue yeah so Jenkins so tooling is basically what everything that's let's say around Jenkins because so Jenkins is the thing we really care about because that's in the end what's we are what is really why we are all about here basically the tool that that's an automation server and there's a lot of things around this that makes that kind of helps run Jenkins in various configurations and so because Jenkins is like I don't know now like 15 years old now there's a lot of tooling so that's what we're talking about a lot of things that been developed around Jenkins for instance to do what Jenkins would be doing by itself inside Jenkins for instance to add plugins there's a lot of things around that and all those things evolved over time you know on their own like badly sometimes and so the goal kind of the of the that project is indeed to try and clean that up and reconcile things around so yeah tooling is everything that that's helping basically Jenkins development or or configuration basically does that help a bit yeah yeah and then so so basically the workflow that this would be used in is you want to be kind of like before you actually like install or or start Jenkins like you want to you want this separate like CLI tool you run this you get all of your like plugins and their dependencies put in a folder and then when you actually go to start Jenkins it would just like check this folder then is that correct is that like I guess what I'm looking for is like what is the workflow and how do you expect this tool to be used yeah you described it well so currently Jenkins can start up with plugins in a folder and you know all the tools will use it to actually just update this folder no no no go ahead it may sound trivial but yeah dependency management includes things like resolving broke dependencies so for example I can this example communicating with Jenkins infrastructure in order to get to understand which plugins contain security issues and yeah so although it's just putting plugins to a folder it's a bit more complicated than that for example Jenkins can list plugins which are incompatible and then there may be special actions required so there may be a lot of diagnostics added as a part of the installation flow yeah and we need actually so as that the proposal describes we need to have the because you're talking about the CLI tool Letesha there's kind of the CLI tool and maybe the CLI tools are like are going to be consumers of the same core library that will be needing to be extracted from this core or something like this so that we actually reuse the same logic from everywhere so for instance we might want to call that CLI that would be calling that library from say the Docker image packaging thing but from Jenkins itself it's desirable that we actually use the same logic the same code base basically so probably the project would be extracting the dependency management logic from Jenkins itself as a module probably inside Jenkins but then reused by external tools let's say go or something if we can find bindings to call Java code from the go or whatever but yeah okay okay so basically so the vision on how to change this would be yeah so there's kind of yeah like there's like two parts there's kind of the CLI tool and then the library and then for like the I guess yeah the library part being able to kind of create its own like module based on existing logic and add like kind of this new logic and incorporate some of the things from like this like Docker this bash script that's currently set up for Docker and include like all of that logic and stuff too is that correct it's perfectly correct so ideally we want to have in Docker that we have installed plugins Sage but once you have once the library and tool is implemented we just remove all of that and instead that they invoke the tool and just we will just start bundling it in the distribution so that we get rid of all this custom logic here if possible if we can consume this plugins in a 360 format and it pretty much applies to all other examples we had in the list because yeah each example here includes custom logic for its management and for plugin installation management moreover we could also add to the list that Jenkins code itself also includes plugin installation logic okay if you want to have something more challenging it should be possible to change plugin management logic to the library in Jenkins itself okay and then I have a couple sort of like more specific questions so when you're so I've seen a couple references to bundled plugins what does that mean exactly so bundled plugins may mean two things here in Jenkins we have Jenkins Warfile Warfile is self executable package which includes Jenkins core number of plugins and some other configurations and Jenkins core Jenkins Warfile also includes two types of plugins the first type is detached plugins so it's a plugins which originally used to be a part of the Jenkins core so it should be somewhere here I don't recall oh yeah I was looking for that so yeah split plugins so split plugins is the first type of plugins so these plugins have been removed from Jenkins core because we were detaching logic in order to introduce separate release cycle or for some cases like CVS it just didn't make much sense to keep it in the core so you may see that it was detached long long ago so all these plugins are still bundled into Jenkins Warfile and they extract it on demand so these plugins are bundled another use case for bundled plugins is when you want to produce your custom Warfile on the top of Jenkins for example there is a tool called Custom Warf Packager and this Custom Warf Packager tool it can bundle plugins and produce a Warfile which is also ready for execution so for example here we can open a demo for example external login and elastic search so what this demo does it includes a number of plugins and configurations which are needed to set up logging from Jenkins to elastic search and here you may see that there is a number of plugins included here so for example pipeline durable task, CMAPI and if you scroll you may also discover plugins like LogStash which are required for this demo so these plugins so here we have a definition you may see that some plugins come from versions some plugins come from commit because when this demo was created we were relying on non-released patches and then Custom Warf Packager takes this definition and creates a single Warfile which includes all these plugins and these plugins are also bundled so yeah this bundle firstly it's useful for Jenkins user itself because they can create these plugin bundles another use case is test automation because we also want to perform integration testing of components and there are flows like for example here there is Essentials Test Groovy which effectively uses Custom Warf Packager in order to prepare a bundle definition for a plugin in order to run acceptance test harness and plugin compatibility tester test frameworks we use they use this custom bundle with prepared plugins so that they edit the equation when we perform testing so this is a separate use case we widely use for bundle plugins and then what is a transitive plugin dependency before we get to that so we have a number of people on the call which is set in private channel so if somebody doesn't want to wait please feel free to drop and we also got Alex on the call so yeah maybe when we finish but sometime you can discuss this Windows installers thing so let's place it with transitive dependencies transitive dependencies is when you declare dependency on a plugin we are not sure let's say Mailer so there is plugins Jenkins IO website and there is Mailer plugin and Mailer plugin on its own it depends on few other plugins so you may see here it's this play URL API it's a required plugin so it's a transitive dependency so when you install Mailer plugin in order to get it working properly you also need a URL API plugin there are also some optional dependencies and implied dependencies so implied dependency is coming from detached plugins which we discussed before so Jenkins just tries to guess that this plugin may depend on some detached plugins because it cannot really guess whether this code is used to know because the plugin is built for the old Jenkins core version and in some cases there are also optional dependencies which mean that the plugin has some functionality which for example let's take ownership plugin so you may see that there is optional dependency so what does it mean for example if you install ownership plugin you don't need job restrictions plugin to be installed but if it's installed it should be at least version 0.1 otherwise it may not work and pretty much everything for folders and for other plugins so all of that are transitive dependencies and when we run the installation what we want to discover is firstly that transitive dependencies don't collide so for example we have to plugins depending on job restrictions but on different versions so we want to ensure that the version which is actually installed is firstly compatible with both plugins or that we at least get a warning or error when the plugin dependency is misused so what we don't want is that the plugin dependency just collides and we get all the version which is not compatible with one of the plugins if you are familiar with Maven there is a plugin called Maven Enforcer plugin which actually allows tracking dependencies using couple bounds rule okay and then something that you said earlier I guess one of the reasons why you need both a library and a CLI tool is so you can be able to use in Maven plugin is that kind of what you are talking about or is that something different well Maven plugin is different so Maven plugin is an example of how to use this plugin manager okay for example there is a lot of flows which do packaging inside Maven in particular what can be useful is custom works in Maven HPI plugin okay thanks Google so yeah there is a module which actually takes a plugin reference and builds a custom work so pretty much like custom work packages does and actually custom work packages uses this step under the hood and here it gets dependencies from POM XML and it might be interesting if you just wants the library is ready to use this library and this plugin in order to have a custom installation or you can just create your own Maven steps which would install a list of dependencies in a target directory it may be even more preferable if it's a separate Maven module okay so we are slightly out of time for the planned time for the SIG meeting so I mean we would be nice I think to give Alex was able to join to discover the windows subject maybe or I can maybe with him later and then so Natasha we can maybe plan something to meet again so that's going to be hard in next weeks to be able to meet also with Oleg I suppose but I can be available at least so I don't know how Oleg I don't think you're going to be able to join now actually next week is more comfortable for me because I will be on vacation so speaking of me yeah I can stay online maybe for another hour so that you can have discussion with Alex and then we can continue with Natasha does it work? yeah I think so so Alex I was proposing that we would cover if you're still there so the windows issues with the subject sure can you guys hear me microphone so I just want to make sure it works great excellent so so there's a question on the agenda I do have admin access on the chocolatey web page or the chocolatey package now for Jenkins yeah let me just quickly we'll quickly get back to maybe sharing my screen so we record to know where we are what we're talking about because it would be more obvious for Jenkins what the hell did I do so you're Mr. Jenkins I think I'll do you present that should be you should be seeing the thing okay right so that's what I wanted to look at and so Alex you're talking about I suppose that one the request now your owner yeah I'm one of the owners and I can add anybody else who has a they just need to have a chocolatey account so anybody else who needs access I can add them easily better to have more people so my chocolatey account is Oleg in Minashev so say my name is Github you say if I didn't mess up something yeah I think it would make sense probably to add the infra team I suppose maybe make sure that we had Tyler and Olivier I suppose would make sense okay so yeah maybe the next steps I mean so if you have anything that would be in your mind to call let's do that but if not then what would be your mind the next steps that what's missing right now so I emailed Olivier about you know the build and stuff like that and he said he had a question about whether we should merge the changes back into the packaging repo and I'm fine with that if that's the direction we had talked at one point in this meeting about having a separate repository but I'm fine either way so you know it's just I guess it's up to what people want yeah would prefer to just replace the existing commercial installer for starters okay because having a separate repository is fine when we have a separate release flow but now for example we can use the version for its releases and we use packaging commit ID so it means that if you have a separate repository for Windows packaging it means that we really need to update the release flows so the proper version is taken yeah one concern I had with the current setup is it's based heavily on Sigwin and some things like that and I don't know what the capabilities of the packaging systems are so that was a concern about incorporating it back into the original repository because the way I developed it uses PowerShell to script things instead of Bash so we just need to make sure that whatever system on is a Windows packaging node yeah so I guess the risk that some something just gets exploded if you yeah something explodes or if we get an old version but they believe that PowerShell is installed by default starting from Windows 7 so it shouldn't have any issues yeah it's just the current flow that's used will definitely need to be updated and that's all within the trusted CI which I don't have access to so I so testing pushing that and testing it I don't know how that's my concern is how do we test to make sure that it's all working when I don't know who has access that I can work with directly and stuff like that you know what I mean yeah Olivier has access has access to then Daniel Beck and Tyler yeah but Olivier designed very recently as you may know VPN access and I mean it would be probably acceptable or at least debatable, discussable to have you access the necessary parts of the infrastructure that have been there for like ever like many of us so I think it would be absolutely acceptable and Tyler and the others from the board wouldn't be I don't think they would be seeing an issue with that at least to consider this discussion at least and also yeah even the VPN it's not as far as I understand as cumbersome as it was before to give access to people mm-hmm okay so yeah I can definitely look at you know merging up back into the existing packaging repo that's not a problem yeah and in the worst case we may have issues only in the weekly releases because LCS releases are pinned so even if we merge a change which surprisingly doesn't work then yeah probably the weekly release train gets delayed a bit but it won't cause any massive collateral damage in the ecosystem okay it would be great if we find the merge that yeah because if we don't then and if we don't soon like you know how it goes and then six months from now we will just start over or whatever because things move you know forward when it's not smudged it kind of gets stale yeah yeah yeah yeah great so that's really great I mean so as far as I understand if you had access to the trustee info to kind of finalize things we would be kind of able to finalize pretty easily a deployment on every given like like basically publishing the MSI correct me if I'm not the right phrasing let's say on every weekly or something yeah yeah definitely great yeah that would be awesome so I think that's all I had for today so great and that one we really discussed in the end so that one is kind of moot now yeah we just don't need to another meeting exactly all right cool so we'll see how it goes but maybe I can if you want Alex I can maybe try to see on your behalf but if someone does it maybe it's even stronger ask for your access or something you know the infra mailing list or something yeah that'd be great yeah great we can do that cool so I guess we're done thanks Alex thanks Alex yeah thanks see you later so we can go back to the JSOC proposal then yeah okay yeah I don't know I have a couple other questions so um so I saw that like um originally um there was this uh the configuration as code plugin had the ability to install plugins but that was like later taken out because it required it required restarts I was wondering if you could explain that and it's like would that be a problem or is that something I need to think about when I come up with my proposal your proposal would actually solve the issue if you take a look at the original ticket it has been created by Nikola Delov who is like who was the maintainer of JCOC plugin at that point so the problem of JCOC plugin is that it's a Jenkins plugin so it means that it gets executed when Jenkins starts up and then it loads other plugins so it's not trivial to just self-manage they think so if you have external plugin management tooling for example once we have your library if we if we could pass YAML file as an input to it it could replace the functionality we have now we had in JCOC plugin because we have external tool which takes YAML or whatever for example the same Jenkins YAML then read configuration installs that and that's it installs it before plugins really start up so that there is no chicken and egg problem that's it okay that makes sense then in terms of the CLI tool I had posted this on the platform SIG channel is is there a recommendation on if that should be implemented in Java or Go? not strictly maybe it would be easier in Java I'm not sure now I think I should re-read the proposal because Evergreen is stable but Evergreen would be in Node mostly but still we will be able to call the CLI what would there be what would be the order of priorities Custom Warp Packager is in Java Evergreen is in Node Firerunner is mostly well it could be in Go but generally it's in Java speaking of that we have two things there CLI tool and library so for CLI tool it really doesn't matter in which language it's implemented I would say library is probably the first one but yeah so if you talk about it as a library if you set requirement for example to be able to include it into the Maven plugins it should be at least a language which is GVM based so for example it may be Java, it may be Kotlin, it may be Groovy, Closure or whatever but it has to be running on GVM to do it easily if you write it in Go or whatever it's still possible to include it into the library somehow using various adapters or CLI wrappers but yeah it will be a bit more complicated yeah and I would actually recommend something but that's pretty new but it might be a good opportunity to look at it it's actually looking at Quarkus so because I've actually listened to a podcast yesterday about Quarkus so Quarkus is a new tool that's being out using Java and basically able to compile to native code and also designed for service and those things and also obviously really applicable to CLI tools so it might be a good way to actually have the speediness speediness of startup like you have in Go for instance with the advantages of not having complicated, convoluted bindings between say Go Node whatever to Java because the library has to be in Java so that the core of Jenkins can actually contribute pretty easily so it might be also something we want to look at yeah but generally it depends on the proposal so the proposal target only CLI tool as one of the options but yeah if you talk about library if you focus on a GVM specific language it might be easy to implement it I don't say that it's a blocker if you say that you want to write it in Go but in such case if you want to write it in Go think about how you bundle it into the library and it could be a good addition to your proposal okay what is your preference wait what is your preference with regards to the language I don't have any experience in Go so like I'm open to learning new things but I honestly don't know that much about it but it was kind of like one of those things if you guys had this recommendation or preference I'm happy to try to do whatever is best but yeah I'm definitely more comfortable in Java anyway so the core and if not the most of the code kind of has to be in Java anyway so if you had any way to write something in Go that's not clear right now indeed that wouldn't be that would be the most of the code it would be more like a wrapper code basically linking things the right way passing command line parameters to the right library Java library that would be writing there first so yeah the steps would be to write that somewhere but that's also something in the proposal they basically extract the logic of Jenkins core I see that this way I don't know what you think about dependency management basically plugin management in an external module inside Jenkins probably because it's so close to Jenkins that it has to live there then make sure this is tested hard so that it's stable I already have enough tests around that by the way right now and then see if you want to make an external Java library Go library that would call it offer basically a library to kind of the command line usage so that part about choosing language for library I would be like we want to try Crocus but because I heard about that it's pretty promising and I think again that part is pretty I don't think in the logic and the code we use in the dependency management shouldn't be really really convoluted it can be hard in terms of like dependency management optional dependencies graph resolution obviously but not using a lot of weird loading things class loading probably would be legible to a nice usage of Crocus basically having the advantages of go without convoluted bindings as I already said but this maybe it would be interesting if you could edit somewhere side notes I already pinged Natasha on the chat about the name of the website but I can add some thoughts about that indeed please just if you were there let me see I opened that somewhere I am on the page I'll do that maybe I do add something at the bottom ideas let me see because implementation details ideas like because it's not something required more like hints anyway so I will do that later because I have to drop very soon but I'm going to add an exciting for me to do that at least let's say maybe later today I don't really know you're sure but maybe tomorrow so yeah probably we could go back to the proposal if I understand correctly a proposal is just a draft so deliverables benefits to the community work they still yet to be designed yeah and so I think I'll probably I guess I changed some of that based off of the discussions yesterday on office hours with like who this intended audiences because it seems like it's mostly going to be like Jenkins who kind of determines whether I guess like which proposals are accepted and which ones aren't and I had also seen like like obviously you don't I didn't want to like you know just copy and paste from like the original like project website but I guess I was like trying to explain things for like if for example like Google was reviewing these and had like no background on the actual project but yeah I've seen a lot of other proposals that are like kind of more focused on like that and getting more into the details of like the I guess like the technical details and stuff like that so yeah I can I'll like after this conversation I can like start focusing on that I just had a lot of questions first and then so in terms of I guess like the actual like deliverables then I would split this into the two sections then so basically the library and then like this the CLI tool and then in terms of just like priority like I guess so the library would have to be then implemented first so the CLI tool could use that or is like so kind of starting to come up with like the timelines I guess like and like what I should focus on first what does that look like yeah sorry no no no go on yeah I think that library and tools we actually developed in parallel okay yeah you will still need whatever dummy CLI to test how the library behaves so it makes sense to create a skeleton which would include both CLI tool and library and then continue expanding them in parallel but yeah in such case it makes sense to keep in mind that this CLI tool is just a draft and that you don't commit to any kind of compatibility there and yeah at later stages of the proposal you may reconsider and create completely another tool if we decide it's appropriate yeah I would recommend I don't know how much you've played with it or you know about that Natasha but I don't know if you ever use Jenkins install a plugin through the UI you know and see what it triggers basically because it would probably give you a better understanding of what you're trying to achieve and so maybe play with the docker pipe packaging like writing a plugins.txt thing and build it and see what it does because I think it would be helping you probably to get a build kind of a brain picture of what you're going to achieve yeah and I do and I have a question about that too so for like the custom war package there were some demos and I didn't know how to get those working so I guess in the example you have this jar file that you run so I'm sorry this is a really basic question but how do I generate this jar file and run that I was able I think to do it through IntelliJ but is there a way to do this or I didn't wasn't sure how to get that working yeah basically packaging maven and then things should be going more easily okay but maybe you're going to show that part I just wanted to show you an example so I think really it's a similar structure because yeah I saw that yeah so here it's implemented just as a multi-model maven project so as long as you follow the same structure yeah IntelliJ should be able to read that and to launch it properly here you may see that actually we use Jenkins parent form so there is not that yeah there are some configurations here not a lot and yeah most of the logic is actually implemented by parent form so CLI is really simple CLI just invokes the library so here you may see that there are just classes I believe or something like that yeah I definitely liked that yeah so yeah it's a really lightweight CLI here we use whatever framework it's Arc4G it will pass CLI parameters and then in main we just pass it to the library so most of the complexity is actually on the library level and library is just a common Java application so it may be a bit complex but it's just whatever Java JAR file which is being produced by maven compiler it uses parent form so here you don't see any specific logic to build that we just declared the dependencies on what we need to include okay uh okay yeah your one first is if not the case yet you want to make sure to configure maven so did you already configure Apache Maven on your command line that tool I mean I've installed it I'm not sure if you have other configurations in mind not really I mean if it should be I don't know if Oleg is going to show that but basically if you're going in a directory where there's a pop basically typing mvn for instance clean verify should basically build everything and run and if not there's something wrong that you need to fix first yeah right so one of the guidelines which may be useful for you it's plugin guide so if you use standard Jenkins parent form you need to configure your environment by following these guidelines so that all parent repositories are set properly because yeah otherwise while custom word packages defines dependencies internally so it will be able to build anyway but it doesn't apply all plugins so if something goes wrong with download maybe you want to configure settings XML in this way there are some repositories mirrors and they've been just injected into maybe in satanx.xml and after that as Batist said building is just maybe and clean okay try that yeah I assume that it works on my machine though I can guarantee for sure because it's windows 1 and they had some issues I also have disabled to do so if some tests are executed they won't really pass because Natasha you're on what platform macOS then it should be fine custom word packages has been developed on mac did you configure or did you install docker for mac Natasha the which one docker for mac if not oh yes I have I think I have all the tools I don't know how to use them yeah that's fine okay so yeah I just tried to run this and I got a could not resolve dependencies for projects with this maven clean so just I'm sorry but I'm going to need to drop but I want maybe to make something but I guess Oleg is going to help you a bit more maybe but anyway so I want to also remind you that please don't hesitate to ask questions through email or okay or the chat because for instance if you just try to like people who do under users mainly it's like okay I did that and I will know reach that point and it's fairly at that point I don't understand what should I do because it would be easier to help you move forward just not say I have no idea how to do that we won't be able to really help you if you say I try to do this I stop at that stage because I don't understand that we will be able to you know get you past for his steps right if you do go through that cycle you know asynchronously plus you know life synchronization like we're doing right now from time to time then I guess you would be more effective for yeah that makes sense I'm not afraid to reach out I just this was helpful for me to just like talk over things in person so yeah that's why I'm really talking about asynchronously and synchronously because you know sometimes it can be helpful to have things like okay I won't answer about that but there's no urgency so that's fine I'm going to move forward on the other side of it and then where we get an answer I will unblock me for something else and then have a live chat to you know like doesn't matter the deepness of things so yeah both things are useful but I think you really want to indeed use both tools kind of okay so bye bye and so yeah I will make sure to prioritize your emails more than the others I get and I will be thank you all right bye oh like do you want to keep talking or do you have other stuff you need to do I always have some stuff to do but if you have any questions left I'm happy to answer them okay so see I don't know if I should try to trouble shoot this do you mind if I just like share my screen yeah that's perfectly fine okay so um okay so this is um I guess like let me see if I can this okay can you see that so this is what I had done like so far to try to get this working so I had just like um downloaded this uh like uh this customer package manager oh I wonder I actually might have changed some stuff because I originally I was getting a different air but um so am I I don't remember but um so so basically if I go into this and then go into the custom for package manager CLI this is like basically where I should run this like maven clean command is that right I think it's on the top level so go up at this level okay yeah because it's a multi-model project and if you just run one model it won't be able to pick dependencies from the reactor gotcha okay okay and then okay this this sounds good so um and then just in terms of like development environment then um so like what do you usually use or recommend like so I guess like net beans comes like so I did read through the plugin tutorial although I might re-look at it now that I have like a little bit more context as I have like started reading more so I saw that they have um like you can create like plugins uh or like there's like an actual easier way to I guess like create those um like maven plugins but uh I don't know if you have like another any other recommendations on like or setup I should do for just like uh if I should use like net beans or IntelliJ or I don't know if you have any like feedback on on that okay so this looks like it worked oh um and then so does it it just like puts these jars and uh does it just put these in this like out um folder and is this this is the jar that I want so okay so should be using so then you can just switch to any demo and yeah okay and then um to run this I would just do I have to set it in demo mode first yeah well it's one of the easy options to do that another option is just to open whatever demo you have in demo folder but the project still has embedded demo though yeah it's a part of CIE flow so I believe that it passes but I haven't used it for a while okay and then for uh that so that's just going into demo folder and then here well you can build this one or you can just build CASGREMA because CASG is fixed so yeah it's maybe better to even use CASG to start this latest course needs a significant update because we added new features to customer packages so it can be written in a better way mm-hmm usually it's make run or make build run so yeah it will just package everything okay I believe you have a good connection speed so it shouldn't take long okay all right cool um let's see I think that is most of my question I guess this was uh just like a minor question so like in like it seems like uh there's okay so in this uh this CLI options um so if I go to this this one why do you have to have all of these like annotations or like what's the what is the benefit of that so an annotation just allows the code to automatically generate a common line interface so if you just invoke CLI and enter minus minus help you will get output of all available options with documentation and this annotation is a way to provide it and to have a binding okay there is not much value because well the most of options means are being passed automatically anyway but for example you can also short hand also and other things if needed so annotation is just a way to pass this metadata for Arcs4G library okay gotcha okay um yeah I think that's like most of my questions for now so I'll work on updating my proposal and then I'll post it to the mailing list and um and I thought that oh you had said that um it wasn't in comment mode which I thought that it was so I'll double check that and um change that if I need to right so your build failed because doctor is not kind of a machine I believe hmm okay so I need to actually start I need to run it first or this particular demo uses docker so it means taking your command docker is actually installed on your machine but yeah docker for mac isn't running right now so that's why it fails some docker some don't require docker okay um and then to um I guess just start running that so I just need to choose like some container and then like run this um that jar file like on that is that not exactly because here it will so makefile already includes that so makefile includes the jar file internally okay so you will be able to just run the demo but you may see that there is already some execution by customer packageer so it was customer packageer which was driving cool this build flow okay okay um so so I'm sorry this is probably also a dumb question so how do I actually start running docker then so I can uh run this so it wasn't a question oh um yeah so if I don't want this to fail um like how do I yeah you just run docker on your machine okay uh no docker is installed as a lie tool but you need to start docker for mac so you can just find docker application and click on it yeah this one you can just yeah so you should see docker starting up in the status bar gotcha okay so if everything is configured properly it should be able to actually get execution running in docker okay yeah so docker is starting once it switches to the running state you can just repeat the previous command gotcha okay okay okay now you can just repeat it okay so what do we see blocks is denied what docker run um please run make build due to whatever reason yeah maybe the demo is corrupted I'm not sure uh yeah I believe that the cache is wrong due to whatever reason so it executed docker build it failed to execute the build because there was no image but now it fails because just a second I'm looking at the demo okay yeah so something really went wrong due to the docker I believe yeah yeah which one no no yeah so due to whatever reason custom word packages didn't package it properly so just run make clean build and I believe that it should resolve the issue so unfortunately there is no good way to um so maybe it's the didn't cache docker properly but yeah it shouldn't take long because okay it already builds the docker image so now it downloads all layers because yeah we actually include dependency on the docker the images are heavy sometimes but yeah it's almost done yeah so now you just run make run and if everything is correct you will run okay yeah so this is an image packaged by a custom word packageer and once you see the message that everything is running you can just navigate to localhost 8080 in your browser and you should be able to see the Jenkins Web Interface I don't know yeah okay so yeah you're in okay you may see that there is status message custom word packages demo of configuration escort plugin so you just have a narrow screen so that the layout is pretty bad so the image started it has been produced by a custom word packageer and if you go to manage Jenkins on the left panel you can click in the manage plugins yeah manage plugins it's a green puzzle piece just up oh yep so if you click on the installed tab you may see that there was some plugins installed from the definition but you may see that the list isn't that long here because it's just a demo yeah okay okay um cool well okay this helps me get started I can kind of go through the rest of the demos and stuff so I think that's most of my questions for now um so I don't have anything else mm-hmm um okay if you don't have any other questions yeah maybe we could sync up again next week but if you have any questions just ask in the chat or in the mailing list okay we can sync up there yeah that sounds good all right thank you yeah thank you too and you have a nice day I'll stop the broadcast