My name is Glenn Gondren and I'm Ryan Noach. I'm a developer on the ASP net team at Microsoft. Cool I am a program manager on the dot net server team include which includes everything that he works on As well as some other stuff Some of you probably saw my talk earlier, I hope and today what we're going to do is Dive kind of deep into a bunch of upcoming.net core stuff 2.1 stuff. We originally had planned to do Kind of stuff for today stuff using 2.0 things that you might know today But then we watched all the talks and all of this schedule and when you know what these guys kind of got this covered So instead let's talk about stuff that we're more uniquely positioned to talk about and talk about some 2.1 Some future things stuff things like that right some guidance and best practices and stuff along the way ban So if there is a fire You should leave if you think that our talk is straight fire That's a different thing. Yeah, you should not leave you should come talk to us afterwards. Yeah, that's right You definitely should that's it. That's all the slides we have. I Hope that was as good for you as it was for us apparently I need to save this okay What are you gonna show them Glenn? That's super valuable Okay, so let's let's let's talk about this. I have here An ill-prepared presenting machine which by that I mean my fonts aren't big enough Scott Hanselman will be most disappointed in me So what I have here is just a file new web application. I've opened Visual Studio. I said file new web app Okay, I hope most have most of you done file new web app before and you have an appropriate amount of context on what that means So I haven't I've I cheated a little bit. I'll talk about that at the end That's mostly to get a couple of new packages in there But otherwise they're still exactly the same as as you could go do file new today And what I'm going to do is I'm going to come over here I'm gonna write some code that connects to the github API and pulls back the user data So I'm gonna go get github to give me the JSON that represents me and we'll put some of it on a web page Yeah, if any of you done this type of how many have any of you talked to the github API before? We'll try to write code to talk to github some of nobody. Excellent. This is gonna be an experience for you Okay, so first thing I'm gonna do is I'm gonna come over here into my configure services method Can we I'm quick poll of the audience? How many of you have already built something with ASP.net core before? Wow, okay. That's a good number. Good job. All right So so what I'm gonna do in here since most of you are certainly generally familiar with this I'm gonna say services dot ad HTTP client. How many people have used HTTP client before? I'm gonna say get smaller number than I expected. Yeah, github client And I'm gonna do this now. What is github client? I haven't heard of that before. Yeah, that's because I'm about to make it Look now it's thing now. This is how we make a feature done Okay, so what I've done here is I have said services dot ad HTTP client of T and I've given it a class called HTTP client I just generate. I just use visual studio to generate it So there's nothing in that class right now. What I'm gonna what I'm attempting to do here is to effectively Use that github client is like a repository. It's like a github repository pattern. It's kind of what I'm building here based around HTTP Now there's a few things here to talk about so I know that the API to talk to github All this is the base of their API It's API dot github.com So I'm gonna go over here, and I'm gonna go I'm gonna create Do this and then I'm gonna say client dot base address equals new URI Okay, like this Okay This is this is literally I used to be client in here this client I'm talking about and this is gonna become clear. It's a journey. Just bear with me Okay, it's all right. You can try and make it out. It's like a detective story. It'll be okay So the other thing the github needs is I want to send this except header every time I make any requests to github Okay, so now I'm gonna come over here. I'm gonna see dots. I'm gonna say default request headers dot add Let's just do this if you haven't done it should be client before you can add Headers that get set on every request that you yeah that you do you can configure the client to do certain things for you by Default another thing that I'm sure somewhere in the github doc shows you but isn't right there is that every Request to the github APIs requires a user agent All right, so I'm gonna create a user agent. Is that the correct user agent string for a user agent here? Awesome I Am the best around Okay, that's my user agent someone at github is gonna have a great day if they read these logs Okay, and that's what I'm gonna do Okay, so what I've defined here is the default configuration for when I want to talk to github using my github client, okay?  It's always configured the way that I just defined in that one place Okay, and so what I've basically built here is github client is my repository I'm gonna use it to always talk to github. Here's my configuration for HTTP client to talk to that I've got past my client in and I'm away. I can use it. I'm ready to go. So What did I say I was gonna do I'm gonna talk to the github API I'm gonna pull back the user Jason and return a user right so that means I want to do something like This is normal code, right? It's probably acing because I'm talking over the network That means I need a task Let's make a github user Get user will give it a string username. Does that seem reasonable? Some method like this. Has anybody written a method like this before? Probably have once again. I'm gonna control dot my way to glory and I'm gonna make this class in a new file That's gonna be good Okay, so this is what I want to do Right. I don't have a github user that seems problematic So I'm gonna jump over here. I'm gonna go into the user's part of the github API docs They conveniently provide me a sample Jason payload for what the user API returns. So I'm gonna copy this All right like this control C jump over here to this here I'm gonna f12 on my github user so that I've so I'm in here and delete this because I'm about to recreate it again I'm gonna go edit Paste special paste Jason as class bam Now I've got C sharp representation of that Jason payload that I just had then I'll rename it to github user, right? and now one thing I know By painful experience is that my particular user doesn't have a hireable state as a note as bull It happens to return null and the generated code didn't handle that So this needs to be a question mark to make the ball mullable If I had actually taken an actual payload from myself I would have seen that but because I took a sample payload that had all the data filled out filled out It's not too hard to work out. This by the way is a fantastic way to get started talking to a Jason based API. It's amazing So I have a type I know it's got every single property that the payload could return because I just copy and pasted it from the sample payload now I need to Talk to the github API. So now what I'm going to do is say via response equals oh wait Client dot get async and what I want to do here is I know From looking here that I that I want to go to this URL This is relative to the base API URL that we set back in our base configuration, right? So I'm just going to do that slash users slash username Sure, no one will ever write it call this method with any string that's going to cause a problem with string interpolation in a URI, right? Then I'm going to go response dot ensure success this method basically throws if it returns anything other than you know A 200 or something it'll do for now We'll ship it then I'm going to say return a wait Client dot content. Oh Not max for someone something to rather I've got to fix my weight because it says away. Where are you on that one? This is your accent. You had one job Okay, now client dot content Don't body on start content. I response not client. What am I thinking? Got a developer here to coach the PM on how to code. Yeah Now read async read as async github user BAM How's that look is that going to work? You par, huh? Nobody knows but they're just gonna say yes because otherwise I wouldn't have asked that question It wouldn't be a very good demo if it didn't work. Oh, no Okay, and so this is gonna go talk to the github API. It's gonna return me some content So let's go into our pages. I'm gonna go to the about page I want to look at the code behind the about page now in here I want to use that repository that we just created Right, we called it github client. All right, so I'm gonna accept github client, you know Let's call it that and I'm gonna control dot my way to glory again And then this message here doesn't want to be this anymore instead. I want to say bar user equals ghclient dot get user And I'm gonna get Glen C Which is my username then I'm gonna say string interpolation You're gonna need an await to yeah, I'm gonna need an await because that's not gonna work And that means I need to change this to async task And then user dot login Seems right, and then I'm gonna say what are the what are the data do I care about knowing about myself? I think you want other people to care about your follower account. Yeah, I do I do Yeah, that's what Twitter and github is all about right Followers how many followers do you have right? Do you know I think I have like a hundred seventy something. Yeah, I don't know it went up Since since we started working on blazer. Is it gonna be as many as me? I don't know maybe about to find out Okay, so then I'm gonna run it I'm running it here not with is just in the command line in the console click about What's it say it says crash? Look at that. I did got a Ensure status code failed before I fall not found right Now Let's look at I closed the browser and he closed my logs. That was a log stream. I was gonna look at some logs It was gonna be great. We're gonna see how good the logging information was. Thank you visual studio. Thank you our tooling I think your follower account just went down by three or four by four It's entirely possible So I got a 404 for the sake of time because you don't really have we don't really have lots of time Ryan needs to Get to his cool demo demos or talks stuff So what I believe I did wrong he is over here in github client. I suspect it's something like that But let's find out What I would have been able to see in the logs would have been the URL that was actually generated that got called How long it took why we got a 404 could have copied and pasted it into the browser We could have done that whole dance right checked it against the logs You'd think it was deliberate. I actually did it accidentally But I was gonna roll with it and just say look this time meant this the whole time look how good our logs are 215 boom that's pretty good. Yeah, that's pretty good. Okay. So now I've gone and talked to github Let's talk at some of our logs because I didn't get to see some of our logs before Can I control control control plus good job windows? Okay, so This code just here This code right here. This would be a little bit harder to see so that's okay I'm gonna describe it to you what this code is saying this code is showing you The get request going through the outgoing pipeline through the outgoing HTTP client. So what this says is it took 554 milliseconds to go and grab that user payload and bring it back shows me the URI that was made and the reason it's three or four statements is because the when you say get in the in my configuration code over here in startup CS The value of this isn't just that I made a repository and I managed to abstract away HTTP client so that I could do things like unit test my about page like over here in my about page now if I'm gonna Unit test if I'm gonna test this page I could just new it up and pass in a mock of my github client with my methods I don't need to worry about a should be client right it also codifies an outgoing middleware pipeline the same as incoming middleware Which means you can stitch together pieces of code that act upon an outgoing request For example, perhaps I could make a request against github and then have some like service discovery middleware piece That says takes that github resolves what the actual URI is and then like stamps and then like modifies the request or Built into our thing is a bunch of interesting diagnostics that we could talk about Ryan is gonna talk about the middleware pipeline What's our timing like do we have time to show structured logging right now? Let's show let's show real quick. Okay, so One of the things I did to cheat was added a package called Seq or any of you already familiar with seq or serilog No couple of people. Okay, good. Thanks. You just saved me. I was like man. I'm gonna have to okay So there that's basically just a logging framework like an analog or something like any of those lady logging framework You're familiar with it's one of them One of the things it does though is it analyzes log streams and kind of pulls information out in formats And it can understand and makes it kind of searchable and structured a bit like Elk does a lot of similar things like this So what we can do in here is say configure logging You can say log factory And now we're just gonna add the seq Log provider so now logs will go to the console as well as going off to this thing called seq right now I run my application and The now I've run my application and then I'm going to go to the browser once the browser pops I'm gonna click on about and It's gonna go say hey Glenn. You've got an amazing amount of followers Then I'm gonna click over here to this This browser window is what I've got is a local Windows service running seq all the logs are going to that This is a UI that's just hosted in that service so you can go search through logs It's just a quick way to set up a local kind of structured logging setup production. You can use this It's a product that a there's an open-source project that people support You're probably more familiar with this sort of thing coming from something like Elk or Kibana things like that But in here what I can start to see now is things like These right. Oh, I made a request against github and here's every all the information about that thing Right. Here's the uri that I did. Hey, look. There's my there's my user agent I could search for github in the search bar and it'll be like, okay. Here's all the things you did that talk to github right and then Somewhat more impressively if I clear this And I come over here and I go into my app settings if you were using steel toe You could have done this without restarting my project, right? Instead of changing this to trace and then rewriting my application if any of you saw the steel toe demos I'll do that on the fly in cloud foundry. It's amazing So now if I do that again, we have some extra trace information that you can get hold of and now In here we can start to see hopefully I don't see any trace information. Do I yeah, we can see this Right. So this log level this this information here, which only comes from trace He's basically like every header and every piece of information about the entire request pipeline that I just did So this is the entire response From github right now, that's cool cool as one log message But also if you notice every individual field of this thing is also an individual property in this list Which means every individual header is individually searchable Right and it knows which ones are ince so you can do things like search for status code greater than 400 And it will return you all log messages that have a status code property that's greater than 400 right It's kind of the value of structured logging and This information comes big you get this and this type of log statements for free as long as you're using that HGP pipeline to get to do your HTTP requests if you were to knew our patiently be client yourself You wouldn't get as much of this stuff We we added middle we added kind of outgoing middleware that looks at all the requests that comes through and makes a bunch of log statements for you right and So if you were to post this on cloud foundry because the log all the loggers because we're logging to the common logging system steel To if you're using steel, so they inject the logger that goes to the right places. No, they don't they just scrape console out Yeah, just console out. So you get all of this in the Cloud Foundry logs as well because the logging system does that for you And yeah, that's about all of my demos right good. That's good. So now should we take over Ryan is going to take over We're gonna do where to do an awkward mic switch and laptop switch here go Fast as you can. Okay. So what Ryan's gonna do is we're gonna switch lap switch switch the laptops over he is going to show you Running an application using a bunch of these features that we just talked about HGP client factory and such in cloud foundry with steel So talk about the integrations and how that works What he did is take the current music start if any of you've seen the music you I sample that the steel Guys show where they deploy it to cloud foundry. So he's got that he's got it running So we got a problem here and my business guys are telling me that we're losing lots of money We have a live site issue right now. That sounds bad So I know that we've been having reliability problems with this back-end service that we've been talking to mm-hmm, right? It's a it's a partner partner company that provides this data that we listen to and they've been having outages and things Have been getting flaky. So can we change the text to say not say better take your money elsewhere? I mean, I mean, that's what that's what my boss told me is is effectively what we're telling our customers So I put it in the code. Okay. So let's go and let's add I Want to fix this is a live site issue. We want to get this going So let's go and add some retries here and you'll see similar kind of stuff to what we saw before here So what you're saying here is the service just fails sometimes it just fails sometimes It's gonna retry we're just gonna retry. This is a networking connected application expect failure prepare for failure. That's great ship it so let's do it so Glenn talk Glenn talk to you about the concept of outgoing middleware And this is our outgoing middleware pipeline that should look pretty familiar based on what you saw before The only thing here that might be a little bit new is add message handler because we're using service discovery based on Steel toe and I discovery client This is using the same discovery stuff from the steel toe project just inside that pipeline that we talked about and then It's got a type client here that has an interface So if you have a type client here that has an interface for the repository pattern, you want to use it with your unit test This is the way you do that. That's what this is. So I'm gonna add another handler here And I'm gonna call this add transient hdb error policy. That's a lot of jargon So what this is is this is an opinionated method to configure an hdb handler that we created with the authors of the Poly library is anybody here heard of poly before or use poly before? So poly is a great library. You should check it out It's a dotnet foundation project. It's open source. It's one assembly. You can use it anywhere and it's great So we're gonna create a handler for this policy and This is going to be called when you have an exception Because you can't connect or 500 or like a 408 timeout. I think yeah, and so we're gonna get When we have a failure, we're gonna wait and retry We're gonna do it three times and We're gonna take the count and we're gonna very simply here Do an exponential back off? Sounds fancy. It is fancy and if you go to their docs You'll find it's right in there read me because it's a really common kind of thing for them, right? Yeah, so the so what what we're gonna do here is we want this We want to call the music store API back in that's running as another service on cloud foundry But we know it's a little bit flaky because we write bad code. So we're going to We're gonna hit it if it fails retry Really quickly then the second retrial be exponentially longer and then the third retrial be exponentially longer again So you don't want to go too much to like overloading it by by retry retry retry retry, right? So basically that's just that is just a three three retry where we wait a little bit longer between each one So not like flood the thing with with with our own retries And so while Glenn is doing that I'm gonna see if I can figure out why this why this thing is failing Yeah, so I'm gonna look at the it's saying crash because I just did a CF push and it's redeploying this app in the background So I'm gonna dig into real good at redeploying things and keeping it up at the same the logs of this back-end service here And see if we can figure out what's going on. So we see we've got this System.exception computer says no Pierce says no, that's kind of weird. I don't I don't know that I've seen that before So there's a commit hash here. I guess I'm gonna go look at I'm gonna go look at what's deployed here. I'm gonna go to the repo for our important sample. Yeah, and let's go Let's go here, and I just want to look at some of the recent commits And see what's going on here. So we have this commit here fixed resiliency issues I merged it, but I wasn't sure I was really paying attention to what was going on. Oh, yeah I remember this commit. This is um, yeah, the guys told us that they were having like crashing problems Yeah, yeah, but they didn't really tell me like how much they wanted it to crash. So I made it configurable Okay, so we've got this resiliency middleware here on our other service. It's gonna crash based on a configurable percentage of the time Great. That's great. That's great. So let's let's check on it met all the requirements, right? Yeah I said the service is crashing too much. I said, okay So we're waiting configurable and then they can decide how much they wanted to crash So while we're waiting for the app to start I want to say that while these packages are part of the dotnet core 2.0 release You do not have to be doing dotnet core to use them. Yeah So if you are on dotnet core, we hope that you'll update to one That's the best way to use them Yeah, to one is when this stuff all comes out But we also have some demos of how to use it in kind of dotnet framework applications and things like that That we hope you'll try out and let us know how it goes if you're doing that So you can see we're back up here and let's just we can go to a couple different pages here And we can see sometimes it's going to be kind of slow right because it's retrying It's gonna wait two seconds and retry and then wait four seconds and retry and so on so you can see that it's So you know that you manage to successfully hide the fact that our service just sometimes crashes and we don't know why yeah So to kind of drive this home a little bit more Let's look at let's look at some of this logs because we showed we showed Glenn showed you the stuff And I think it's pretty great. So I'm gonna go We don't want music store. We want music UI, which is running again, which is great And we're gonna go to logs here, and I'm gonna configure The log levels. So let's take default. Let's leave it. Let's leave it here. So we don't have a lot of spam We'll keep this focus. So I know that the log categories that we write to our System net HTTP HP client and what you see here is for all these named clients that you've defined a configuration for They've all got their own set of like logging knobs and dials, right? So I'm just gonna take because there's a demo I'm gonna take all of these guys All the way up to trace so all the HTTP client stuff is all up to trace And then if I come back here, and I start hitting more of these pages you can see this one's taking a while So that's good. Mm-hmm. Maybe it'll fail. We're only retrying three times. Yeah Who can calculate the percentage chance that it will fail? I don't know what was a configuration set? 30% resiliency somebody go fail. Yeah, so there's possibility that it's gonna fail three times and we should see some logs coming out while we're doing this so we can see that there's a lot of So this is just this is CF logs that you're right. Yeah, and we're missing we're missing the logs that I expected to be there I'm gonna make sure that that seems to you seems that you took I might have to I might have to save this It might be below the fold here. I don't know. I'm gonna have to close this for that to happen. I Don't know that but team does he's over there. Yeah, I'm gonna help us. Mm-hmm. Let's try it. Let's try this again So let's go to another okay, so that works. Let's get one that's taken a while here So there we're that probably was a retry So let's look at the log so you can see all that beautiful logging and tracing that Glenn showed you before and seek in at the command line And if you dial in on this, I've got my font set properly, which is great. Good job You'll be a PM if you dial in on this you can see that we've got a logical handler and a client handler And it's a little bit off the screen, but I think you can see here when you're in the logical handler The URL is HTTP shopping cart, which is a logical name for the service And we're using steel toes service discovery Infrastructure which is based on Eureka and you can see that by the time we get to the client handler Which is the thing that actually goes out and does the network call That the URL has been rewritten to be shopping cart apps dot CF net So it's been replaced with the real URL and this is this is service discovery in action, right? It's not too surprising that it would work this way And then we should be able to if we look here and get past the shopping cart We should be able to see a retry somewhere in here and you will see a You'll see a response from I'm look. I'm kind of scanning through one. Let me know if you see one that is an internal server error from Somebody coming back and then you should be able to see that it it tries again. So we've got okay. Okay Okay Well, maybe we won't find one But what you will what you will see is you will see logical handler calls client handler Client handler comes back and says hey I failed and then client handler goes again and calls again And that's kind of that yeah nested pipeline So you can you can see the timing so it'll say like it came back in 20 milliseconds and it failed So then it read it again, and it took another 20 milliseconds then the overall request time was you know 40 milliseconds, right? Yeah, so we're at we're at 232. What do you want to do now? Do you want to take questions? Yeah Yeah, if that's that's that's most that that's most of the content we had planned where there's lots lots more stuff We could keep talking about but this is our last time here. Yeah, we're on the net team If any of you have questions that you want to ask us Or you want to do like a I can I can give you the mic Questions or whatever feel free if anybody has anything they want to yell out No, no questions no takers. No, no takers Okay, well in that case Thank you very much. Hopefully come and talk to us at the end. This was all This is all we didn't make it super clear here. So there's a couple of things. I'll talk about Ship shipping in ASP. Nicole 2.1 So if you go grab the preview of 2.1, which we've been shipping you'll be able to try out all the things We just showed you The and so you'll be able to get the HB client factory about to use that pattern to do HTTP You're about to get the retries by a polly all these things It should be our seeing an RTMing. It'll be our seeing an RTMing this year like before the end of quarter two With the outgoing HTTP you form a pipeline So what you'll see in the logs when you start to do this is HTTP request outgoing started handler one handler two handler three handler four Right handler three handler two handler one back, right? So you basically stick together all your classes and then it goes through and it goes back So you can imagine diagnostics service discovery error handling, right? Like all the things that you could stitch together into that pipeline to make it work And you're free to go do that as you want and that was the main point of HTTP client factory, but if you are Using HTTP client today raw then there are several other lifetime patterns that the factory works around Basically, if you knew up a HTTP client and you keep it around forever Then you'll never get you don't it doesn't refresh DNS Which means you're slowly like eventually you won't you'll have DNS update anomalies potentially If you don't keep it around forever and you don't and you just keep creating one every time then every time you create one It consumes a socket on the server and then eventually you run out of sockets on the server and something crashes So you basically need to do the middle of those two things You need to sometime keep it around as long as you can but recycle it sometimes to get DNS updates, right? If you're behind IAS and you're in a web application You're making HTTP This is probably not not not a problem because IAS is probably recycling you frequently enough to avoid the DNS problem And you can just keep it alive If using full framework, you can use things like service point manager to avoid it lots and lots of things to avoid those problems But the factory does it already, right? In ASP net core 2.1 It also uses the managed HTTP client handler like full of written in C sharp Which is much faster and also helps avoid those same problems that I just talked about So we think it's pretty cool. You should check it out. Let us know Yeah, yeah, do you want to look at one? Where did I put it? I put it right here to 35. Good. Great. You have less than one minutes I can be really fast to 36 you have so minus time looks like this, right? So if you've if you've done ASP net core before, you know, we have middleware for incoming requests Middleware for outgoing requests is the decorator pattern. It's a decorator pattern no matter what, right? So you're in a delegating handler and what a delegating handler is is like You get called to do an HTTP request You can apply policy and then call next to send on to the next like link in the chain And then that returns and then you can apply policy and then you can return the response or You could implement a circuit breaker and say well I don't want to call the next guy the circuits open or you could like in this case say I don't like that You are I let's get a different one, right? Let's resolve the logical name to the actual name. So cash circuit breaker Bulwark service discovery Authentication most of those things that he's just not outside of any authentication a lot of those things are already implemented in poly and you Can just use them today some of them are going to come with When of the a lot of a lot of things that steel tow does today We will work in we are working getting integrated into this as well like the service discovery for fire Eureka So like hystrix has and I forget how to open this thing up But this this app is using hystrix and is using the hystrix, you know PCF cloud service, which is great So hystrix is providing circuit breakers and timeouts and a few other things here, but hystrix doesn't do retries So like poly's a great usage for that if you're not using hystrix or like say you're not running in the cloud today You can use poly for all these things so the integration that you're seeing here is For htb client and for sort of the middleware kind of pattern and that's something we work with them to build If you want to you can use poly to just like decorate an arbitrary piece of code and say call this handle exceptions retry or call This with a timeout. It's great. You should you should check it out Okay, great thanks


Hey, Victor. Hey, Oliver. How are you? Good. Are we I was late. Are we the only two? I Was hopefully it's I wasn't sure like a if they were just And at the meeting or like, I don't know Yeah, that was strange. I had it. I had a meeting run over so I didn't I couldn't get to it any sooner, but yeah It's kind of interesting I Don't know Let's see if he's yeah, I'm just checking the dislike channel Yeah, I was doing the same thing. Yeah, he didn't say anything Well, I don't know Do you want to take advantage of this time or like this cost something or like a Or talk about something. I mean, I think I have to be with Yeah, working over Yeah, I know what you mean. I know what you mean Well, let me let me say this I'm just trying to Go to our I'm going to the repo there where we have our Mm-hmm. I think we had Yeah, I Think one of the best practices that I think, you know, we've been talking about for a while and I don't know how we get path You know how I know it needs some work and I've been trying to make some comments and you know You know make some of contributions to it I'm I find a little hard to navigate it the best practice document itself, right, but I In that for the CNF container should have one process category. There's a draft proposal and so I started putting some things in there I I Would be I don't know if you know it's that common But I mean it would be happy to like set aside some time and work together If that would be a way to do it maybe even with Taylor, you know, just because I feel like Before we get this one finished. We're talking about different ones and I don't know I just feels like For and I don't I'm not pointing criticism or anything But it just feels like we start something and then before you know it nothing happens and then we start a new one and then Kind of the same thing happens with that as it feels like we need an effort to get this one over the You know push it to the finish line and then you know be done with it and then pick up the next one Or is that just me?  It feels like if I think of just like using nephio You get something you work at it you get it done and then you say, okay Well, what's the next one coming? It's not we don't have obviously a formalized release for best practices, but I Maybe that wouldn't be a bad idea, you know, like pick two pick two best practices or pick You know have a collection and say which ones do we want to have? You know, which ones do we think we can have out in the first call it a release? You know what I mean, but just to have a focus otherwise It's just so easy to say is there any new topics and then new topics come up and you never finish the old topic Yeah, I know what what you mean like that's true like a very done than perfect So, yeah, let's let's try to just release something but just release it Sort of like waiting for I don't I mean, I don't have as much, you know I don't have as much experience in the open source, you know I mean as I mentioned to you since I really only started working in open source since I came to matrix about three years ago And and there's a different mix of the areas that I'm involved in where you know Some of it looks like nephew, you know, it's very structured very coordinated release You know, it's obviously creating software, which you know, this is I mean the best practices don't directly Result in software that we're creating right here in the working group, but it does have it does feed for example the the CNF test suite so I would just think, you know, I just think it would be interesting to sort of have a Think about, you know, how are we working in terms of structure because and I know you and I talked about this a while ago where you know If I knew what topic we were planning to talk about Then you know, I might bring somebody who I felt could contribute But I can't just have them come and listen and see if we maybe talk about it You know what I mean, and I know that sometimes it's just like, okay We have a draft let's review it and then you can sit down and have a comment But it's that's why I still think maybe Rethinking how we're working in terms of, you know Almost like a release schedule. I don't know.  Let's work on them and let's get them done And then, you know, you do the next quarter and you can constantly be, you know Let's open source. We vote, you know, which ones which ones are the ones we want to work on So that we're not forcing anything. But then I think and then people know, okay, for the next quarter I'm not interested in those best practices. I won't be part of it And the ones who really are interested in it can be could be there working together to try to make it, you know, possible to finish Yeah Yeah, like like I mean, but I like that that way like Putting like a deadline or a commitment Yeah, so definitely That forces you to release something. Otherwise, it's like we're going to say like Submitting proposal and draft and all these things and we never are going to I think we I think we like and I think you mentioned it last time and and I don't it's not a bad idea I mean, obviously all these we do spend time on Highlighting all the upcoming events and I think that's all really good But you know, I think this it's taken that takes more of the A lot of the attention on this meeting. It's like, okay, because I know it's one of the more concrete things we have, right? Here's coming events, but I I'd rather see us putting the same kind of effort around structuring up the Yeah, okay What really surprised me is like, I mean the the interest is there like Of course because when when when we are doing those these events like the the CN CNCF working group got an event And in Amsterdam people were showing up like The talk of the same the same thing people like to consume the the the information There or get something about like all these Trends in the the telecom industry But I feel like when it's time to collaborate and start like some meeting ideas like putting things for paper or sharing Or just simple the fact is to sharing things It's when when the things get in strange extremes, right because like For example in this case like a Most of the people who attend those meetings are expecting to consume to consume to resolve Issues or but they are not willing to blockchain ideas or to propose ideas even when they are crazy or like So yeah, it's kind of crazy like Yeah, I I know which yeah, I see what you you know, I see what you mean and it's I I'm not saying that it would be you know, it would solve everything but I do feel like if we were Just to step back almost and say okay How many people are attending this meeting and you know, we know it it's less than 10 people that you know regularly attend it's a fairly small group at the moment And you know, maybe just Think about I mean maybe have a session we say, okay, you know what we're not going to take it today and just you know Everyone has no had had no time to think about it, but you know set a date say on Monday, you know august whatever Let us talk about the format of this meeting and how we you know, how we're operating and basically see if we have ideas to You know, maybe improve, you know the collaboration effort make it more clear how to because I know we write a document For example, how to collaborate and I think again, you're we're asking a lot of people to invest time When they don't really understand how we're you know, how we work, right? It's like, okay, we're gonna make some best practices and I I know i'm being very you know, i'm almost being very negative and I don't mean that but it's like I think it would be more obvious if we said, okay, here is our plan for you know, 2024 Each quarter we think it's realistic to introduce or to specify At least, you know one to two best practices. I don't know. I mean i'm just making numbers up Therefore then we you know, we have a we have a repo that has a bunch of issues and things and maybe from that we can have a you know Kind of a a running list of best practices that that you know, we believe The topics right the issues that we believe we could in could result in the best practice And so then we try to look at you know, two or three of those per quarter But actually not keep switching and looking at new things but just say let's let's where we're at now last week Last week there was no collaboration. We nothing happened. Okay guys. We're not going to make our goal You know, how do we how do we and and sort of just focus on how do we get those three Two or three or whatever it is per quarter Over the finish line and I think it might find saying well, I need to talk to somebody. I'm not just You know Maybe we should set up a meeting you me and somebody else and we work on a section and then next week We review it together, you know, and I think that would be me It might help people to understand because I don't I have a feeling sometimes people just don't know how to really contribute still They don't feel comfortable just going into the document and starting to write No, no, I definitely agree with what you're saying is I mean, that's that's a way to describe commitment right like Our commitment is to release at least one or two or three best practices per quarter per month or week Yeah, exactly just something that we can agree on. I I totally agree with you. I think that that would help people Because otherwise it is if you were to ask somebody right now, I mean it doesn't and you know, what is the ambition of the You know, you know, what is the ambition of our Of our working group to develop best practices? Okay How how many have you done so far or how many do you plan to you know? We don't have any we don't have anything set like that So I think we we struggle to articulate whether we are are we progressing well or we're not progressing well You know, I don't I don't think we have anything to measure against And and therefore I don't it doesn't really allow us to make any corrections or changes that would maybe help us Be more, you know more productive or more, you know successful No, I'm also the other thing that I was thinking is like Usually when when the people say like I don't have time for these or for there or for whatever usually That reflects that the the fact that you're saying this is not my priority, right? Especially that's like because all of us has the same hours of the day. So uh, it just matter like Just choosing or picking the the tasks and they're different Lots of priorities. So for example If we don't set the the right priority if our operative for example For us to be releasing best practices I can guarantee that Release a lot of them because that that was our priority But in this case, I know I we have a lot of different things. I mean those things are volunteer and probably it's pretty hard to Like uh bring things in in order Yeah, I guess we have to change that like I think well, this is going to be our top priority. This is This is our major metrics Yeah Yeah, oh, I see Taylor's joined us Yeah, I just told him Yeah, hey Taylor Hello, good morning. Uh, yeah, we already started and then ended the call since And he was on earlier I think the recording on youtube will Show that um, I don't know if it's going to include this or not. This might be like a separate recording Yeah That one we might want to Can you remove it? Maybe but I I kind of feel like We're past We went through stuff. I don't know what y'all have gone through but Well, that's really uh, I think that we were talking about like a ways to um Deliver more things probably uh, if we can we can switch dynamics or to something because Yeah, I mean we have a lot of drafts, which are good But at the end of the day or something like that so we have to and she does um push it to the latest step like And and and all your was just like like I'll try to focus in a single a single best practice for months require whatever And just raise it because I mean it's not going to be perfect But we have to do something because otherwise we are still accumulating things and very disperse and and And yeah, it's not going to show what we have in doing because The end of the day we are still working. We're still investing time in these meetings discussing ideas, but Yeah, the the final the final step Is not showing those those efforts um What what are the ideas for? Making it well, I think we you know, we were we were just you know, again just brainstorming some you know, mostly just having a conversation just catching up a little bit but um I don't I I mean it if if we just kind of back up and say okay, so when do we start and you know, we I think we all recall at least the kickoff and you know, we started off We had a it was a huge like anything new in shiny. There was a lot of people joining in the very beginning today I think a number, you know, we're probably less than 10 people who are regularly attending um But I think you know just from a perspective of so what it what is the stated objective And of this group and I think we have that I think then though in terms of Practice in terms of way of working It's a little less unclear what our ambitions are in terms of are we on track or are we not on track In other words, you know, we don't have anything to quantify not not but I know of it says we have an intention to release You know x number of best practices per year and maybe that's not even realistic So then there should be something else, but I think It's very difficult for people to you know, and I'm I'll say myself it's difficult to know Shouldn't we be creating, you know Two best practices every three months or something or you know Six or six a quarter six every half a half a year Something that you know then helps us to understand. All right. So are we are we meeting that or not? And if I just take the we're not meeting it just for the sake of argument, you know Saying, okay, we're not meeting it then you stop and you go. Okay. So why is that what is Is it just no nobody's attending and nobody's helping out? Okay. So how do we make them attend or how do we help? what is it that that's Causing us not to get across the finish line and we were we were just talking a little bit about it feels like You know people come with new ideas before we even finish some of the old ideas that you know got progress So and I know right now that we just use a concrete when we have the the best practice for You know, we have the draft for cnf container should have one process category and I know You know, I I'm not I haven't been a major contributor to that I've started putting some things in trying to make some con you know add some things But even there I'd almost prefer to be able to work with someone like yourself or like victor And just sort of say okay, and I can maybe get an action point say oh Oliver go away You need to get some we need something here Um, and I think by doing that you were kind of assisting and helping each other and we get it across the finish line Otherwise the risk is this it's here in draft and we start looking at a new one And then we end up with a lot of those, you know Kind of partially finished so that's that was basically as far as we went and I'm you know I don't know that we have all the answers but It feels like we There's knowledge there's people who could help us get us things across the finish line and and I think that would be You know success the you know help to the success of this group It's just a matter of figuring out how we do that We've set numbers before I guess as far as goals um, yeah, we can adjust goals and I don't know that we need to set any Goals for the well, maybe I should just say I don't know what goals we should set But it should probably be set based on what's realistic. We're not um This group is different from Definitely different from a company where you're trying to Have a service or new feature or product or whatever and you know you need to get that done It's different from an open source project where you may have People working on something and towards the release But it's a little bit close to that in that in an open source project. It's It's What do people want to work on and if if it's of interest to them and they have the time then they may do it Um Well, I I agree with that we can say that we would like to release this many best practices in a Quarter and then try to you know, whatever we want to do publish or something on this whatever we want to do But it's how people are willing to Put time into it And what time they have available I've been saying for a while that i'm available to do like a working session on any that people are passionate about But there's nobody being forced to do it. So Yeah, what what is true taylor, uh, and probably we are all agree about like Definitely, we have to do some something different because the formula we but we have in a blend for a while Have been given good or bad results like i don't know like But but now like seems like the trend that we are taking Is it's important to do a maybe just few adjustments to to encourage participation or to try to Motivate all our sports debate because Yeah, in the last few two months we have been Seen too much participation I don't know if it's because of the topic or maybe it's because the way that the meeting is set up or Or or we need to Involve all our people like or change that even changing the time maybe choosing a different day like probably could be a possible idea But I guess my my major one of these is like probably we have to Who want one one or two bigger adjustments on these? I'm down for it and if y'all have suggestions then That's that's a thing, right? It's pretty hard like i'm i'm sure like i don't know why why I don't know what this just maybe But while all you were saying it makes sense make make me sense like a start trying to focus on a single thing for per week or like try to be more like Less like this first I guess like just picking one single thing. I just Going there until the end probably that could be a Alternative Yeah, I mean I don't know I I feel like it's almost just a And I don't know Taylor. I mean you I will both of you and and I'm not sure, you know Maybe it's a conversation I'm happy to be part of that But if you'd know this as a as a three co-leads, maybe just as a We could have a conversation, right? So let's just have an open conversation. How's this going or do we feel like this is Are we successful at the moment or you know, and I and I'm sure we probably align them We could be doing we could be making some better progress Okay, what ideas do we have and maybe between us we could come up with you know couple options That we could then share with back to the group and I I don't necessarily think they have to be huge changes, but I mentioned this before Taylor as an example I mean, I you know that within matrix. There are people who are Much closer to the code, uh, you know and the real world challenges that we face But their time is extremely limited So I can bring them in for specific topics when I have a chance to say on Monday We're going to be talking about this and this is important to us I want you know someone from you know from our engineering team someone senior from there who can you know articulate some of the things that That are important and and hopefully contribute also back in terms of you know, so what would be the best practice, right? I have a hard time doing that if I can't just invite them to join the meeting to see if a topic is going to be You know relevant to us And I don't know if any other companies are in the same way And I think you know we might have people who if they knew that there is a topic the topic right now is we're going to finish this CNF container and you know, maybe we bite off chunks of the document, right? Okay, the first section We're comfortable with this the two three people who've been working on it. Let's walk through that. We're good This is what remains. We're asking specifically for this from any vendor or any participant here In other words, it's a little bit of hand-holding But it's just guiding and saying and then we will have a conversation on this on the following Monday So in other words, we're working working very much with one of these items that we've picked up until we actually get it done Now, I think we could do work in advance like when let's say every quarter, right? You kind of look and say all right, here's the five areas We think we have you know information from so these could eventually be best practices Let's kind of look at priorities from everybody who's attending, right? Do we have any preference of you know one two three four five in terms of priority order? And then we pick the first one and we start working and if and see if that you know see if that result provides any better results in terms of Getting people to contribute because I if you would ask people what we were going to talk about today I guess most people would say I don't know what the What would be on the agenda people can come in with a new idea and say hey I have a new idea for new best practice So that's what I'm trying to get you know, at least in my head. I think that might help people to be a little more prepared for You know the way we're working and when what's the topic that we're working with a little more consistently It's just an idea. I mean, I'm sure there's many others some other other options, but So the only difference that I'm saying right now with what we have is we're not explicitly saying We are absolutely going to work on The a single best practice the next time or whatever the topic is and nothing else. That's the only thing We have the opportunity right now for we can do it every week. It's always there It's all and it's been said every time I I personally don't think it has to do with people not knowing That it's the this one Process category particular container has been there as let's get this done. We've said that for a while It's where is anyone available and right now Instead of working on it. We're talking about these other things like we could literally just say let's stop talking and go work on that Well, I don't disagree with you, but I think again, it may also be just how people are People don't you know, not everybody may not come natural for everyone to just go work on it So again, it might be you might my my suggestion is one option might be to be a bit more You know, okay, let's look at this. This is again for those there be people There's been people who popped in on the latest call and then having shown back up again I don't know because the topic was not interesting or they don't know how to contribute And I know we've written, you know material about how to contribute But I think, you know From you know, having one or two best practices three best practices as you start to kind of work through those and people start going Oh, okay. I get this and you might find that people are a little bit more independent In terms of being able to contribute, you know Asynchronously, but I think maybe for the benefit of the group we might say Hey, we really want to get this particular best practice And again, I just used the one it was an example, but we would pick whatever one And we say we think we're so far with this and we just need to help push it across the finish line We're going to have we're going to try to coordinate two sessions For those who are interested in addition to the working session. I don't know. I'm just making it up, but To come contribute Help put this document, you know, put finish this document and then we present to the group any questions No, great. Can we get the looks good to me? And then we move on to the next one and we might find that that we get a little bit more focused because again, I think people don't It's just it's just an opinion So I just feel like people come and they don't really know So what what will be the topic today? And I know that they know about this best practice But you know, we're also willing to entertain. Oh, is there something else of more interest that you'd like to talk about? And then we might get sidetracked, right? We get a new thing to start looking at and we may not may or may not finish that one either That that's my only, you know, that was my only thinking in terms of And it may not succeed, but I feel like we should try something, you know, try some different approaches here because I think I'd like I'd like to see going back to your comment How important this is to companies. I think a lot of companies I would I would expect Are are certainly interested in the outcome I don't know if they're interested in the putting the time and effort in But if they start to see outcome that might also, you know, all of a sudden you go, oh, wait a minute There are things happening now things are actually Being produced that, you know, will shape how people see CNFs and and sort of what a good cnf is and that might bring them back to the table as well When they start seeing that there's an output if there's not a lot of output, they're not going to be too concerned And the other thing that I was thinking about It's easy to say a lot of things, right? If someone has been doing a lot of things and make us see And this working group has been Taylor So I have to recognize that Taylor has been We'll allow a lot of work and Collecting information Promoting the different events like Spraying in the world like Definitely Taylor has been doing a lot of things and I guess you're not a critique of what Taylor has been done Yeah, I'm gonna jump in and say absolutely. Yeah, absolutely not. That's not Yeah, I totally agree. I mean, I recognize that this is I'm really not worried about that But I appreciate your Your sentiment on that I I'm not I'm not taking any of this as a critique. My issue is That I don't feel like people Are contributing And that's not that's why it's not getting done And I could go in and Victor can go in And we can just complete a practice on our own I can take the time to go complete that the point would be to try to get more than one contributor to Write up a best practice and that's what I'm hoping for Yeah The reason why I haven't just said we're gonna work on the one Concern is because I'm I feel like I'm Forcing my opinion on that and this is why I've said if there's something that's More relevant for anyone else then I'm happy to spend my time Working on that. So if matrix said Hey, we actually care about this other best practice and this is where the engineers would be passionate Then I'd be happy to just let's focus the time and put that forward as the agenda item But me going Oliver can you Go ask folks from your team to join the call And put their time into something that may not be of interest That doesn't feel okay. This is this is a Open area that's supposed to be you contribute because it matters to you Yeah, I do want to say Oliver you've put comments in there. So I know you've been adding to that Best practice and trying to make adjustments Um, I really feel like It's just time. We haven't put the time into it and I have been thinking like Before you all join the call like especially today thinking I just need to go in and try to resolve all the comments In the practice myself and try to get it to a point where it's You know where I think it's ready and and then put it forward I mean there there's comments a lot of them are Me putting stuff in and asking for feedback The latest ones were from you Oliver, but I could do that. I could just go in and finish this out and then present it Yeah, I hear I hear Taylor and I think we're not that far off from I don't Hopefully we're not that far off from one another in terms of what I'm trying to say which is And let me try let me try backing up and just catching a few points So one absolutely. I recognize that the The the co-lead shouldn't dictate what best practices we work on that would feel very strange So I do think there may or may not be an opportunity and it may or may not be that easy to do But we might be able to say for example over the next quarter, you know, here's here's five best practices that we think, you know Or or Maybe good for discussions anyone have that, you know, anything else they would like to In other words, you just try to do a little scoping and they say, okay Let's try to look at these and let's start working on and then it just kind of keeps It provides a little bit of focus for a short period of time And then you know, there's another opportunity to say, okay, let's look again. It's almost like backlog You know grooming on say, okay, here's the here's the next five. Are these still the relevant ones? Or is there something else is something else popped up that's maybe more important That that was my only point about that as far as actually getting stuff completed I Here's a concrete request if If we can say look we for those of you who would like to help out with this, let's have one additional session All right, let's not make it too taxing. We're going to put another working a working session We don't expect it'll be probably more than a few people because I guess you're not going to get all 10 people that join normally on Mondays To work and finalize that because I'm saying that maybe there's a little bit of hand holding So taylor, we're on this section now section four What is it that exactly is going in there? Or you know, what kind of things do we need to fill it with and it may be Okay, you're explaining it and you say okay, oliver action point to you Come back with matrix, you know specific on this and I and I you know Like how do you guys see this as a challenge or you know, what are some of the exceptions or I'm just saying to you I have some personal challenges in writing the best practice going in the document knowing exactly how I can contribute Maybe there's other people in the same place I think you and victor and I'm sure others have you know have probably feel confident in going in the document But we do need more scale Otherwise, it's going to be just the two three people that do it all the time And I and I think I'm happy to be helping But I think I might need a little bit of you know work together with somebody So that it becomes more obvious to me what some of that information that's missing to get it over the you know the over the hurdle That's the only way I can extract it. I mean, otherwise I can just go put it in the document and then we can all look at it 10 people Um, I just think it would be more effective if we were a small working group to kind of try pushing it over the you know Pushing it to a ready state for review I've been offering doing individual or small working sessions for For months now, I'm I'm willing to do it Okay, I I'm kind of willing to do it since the work scene. Okay on any topic and The only other Taylor all fairness I pinged you and you said you were going to get back to me and you never did So I pinged you you were on vacation. You said when you got back on vacation you ping it back. So I get it We're all busy. Yeah, I'm totally down for it. If you want to do one I'm down. I would love to I would love to do you know, and I'd like to use the one I think that we I want to go back to one thing. I said though we If we don't have a topic last week We had a bunch of questions that if people have questions on this then I think it's okay to dig into those But most of the time if we don't have a lot of topics We could spend the time as just now as a working session. It's not a large group today So we could be focused on that Like I I don't think that this is a big for me. It's not a big deal if people just say hey, let's Take the time right now. There's no other topic. Let's go ahead and it's on the agenda It's been on the agenda multiple times So we could just start doing it Including like literally right now if we just want to say the call is still going We have 16 more minutes. We could spend 16 more minutes trying to get that best practice done Sounds great. I I think we could actually knock out this best practice In without even having you know another working session if we just said The next 15 minutes and then the next session it should be ready if we just do that All right. Does that make sense to the two of you to do it? I mean if that's the case Let's let's do it I just added the link before you have like and I looked at another one or I think it was enough this is pr tbd We didn't we don't obviously we don't have a pr yet So I just linked put the link into the current issue where a lot of this has been discussed Unless it was already here. I don't think it was I don't know. Um I guess the least privilege principles What was that? Why was that this was a template? I think that's the For me, you know, sometimes I've looked at this and I see okay There's and it was just a template right you and you mentioned it last time a lot of this has to be removed because it's related to a previous best practice um Yeah, I'm trying to look because this top part was kind of Reference to help us get going. I don't know why this one was linked at all. So let me see if there's anything related to Um, this top part should not be in in the final proposal This was quick access Anything that's actually relevant, which would be the issue. So that's fine and then all of these Right here to keep they should go down into the reference section down here Okay, anything there. This was like quick access while we were Just trying to read and understand what we were working on on the best practice Okay, strictly in the in the google doc Um So you don't have scroll to the bottom every time All right, this is the issue though, I think Yeah here at the top Oh, is it? Yeah. Okay. Okay. Got you. You're right. I just do okay. So yeah, you can remove what I put in there Yeah, all right No problem. I was just trying to make sure but deleting this sounds Probably relevant. I don't know why this was linked I think this was just because well, maybe I'm wrong But I thought it was because we had a you know, we used the template from another one. I don't That's possible. That's possible Um, We'll see that through here that you know, there were there's still some places where we're referring to least privilege Uh principle least privilege, which I think Suggested me it was just from another Yeah, I'm not saying it Um There's a google doc for This as well And all right, so it's it doesn't it's not there so At least in the discussion itself all right What is all of this we have a lot of non managed by non homegrown supervisor or Do we have a definition of that like a what is a non homegrown supervisor? I kind of feel like this is extra um I like it. It should be it's and if if We were going to have that at all then this would be I'm going to put it like this manage Um Put a comment All right So this would be about You know, whether you have one process or you have multiple process types if you were writing Um The process the process manager So it's something that's handling multiple processes and different types so there's I mean the very first thing that Um Comes to mind is just like in a day or whatever, but you have different process supervisors is what we're talking about Supervisor d, but that's not what I was wanting Is it is it material to say non homegrown? I mean rather than just saying a supervisor or an orchestrator or does is it important that we're saying it's not a Does it affect the best practice? I don't think it affects this one and that's why I'm saying I think we need to split this one off It's probably not I think it takes away and someone can talk about it. Um, but supervisor d would be a One that I would point to that's not homegrown So then somebody so this would have to do with another best practice that's talking about Um, where you can end up with runaway containers that never die and the Kubernetes doesn't restart them because they look like they're okay. So you have zombie processes and stuff So a good supervisor is going to handle all those things and child processes and there's a lot of scenarios that start happening and when someone is trying to manage Manage all the processes and keep them alive in a container the number one they are probably going to do it bad And then the system is not going to know when to Restart or or whatever the the container And and then you're also likely to get away from allowing kubernetes to orchestrate containers and instead of And you let things fail and it's supposed to know there's a problem. Let's report that. Let's have you you know visibility and let's start up other containers So always staying alive and then you get a ticker to container instead of having it A minimal container where the orchestration is outside So there's a lot of things in this it's related to you know having A container only do one thing minimize a single concern and and the processes that are involved in that single concern being minimal But potentially this could be a It's unpractice That's the point. Yeah um Let me move on from that and then let somebody come back If if that make did that make sense and and victor you may already understand what i'm talking about as far as Yes, yes The other thing that I was thinking is like in the second Second sentence which is saying like the microservice shooting we focus just in the container. I mean, um, yeah, the first sentence is fine But the second one is it's just referring to the microservice and I guess A microservice could be something More architecture genetic, uh, so shouldn't be like a the container should not spawn other process types I mean, uh, we don't have to come in back and say what we want to enforce is like It's just practice is referring to the container and not to the microservice I'm not quite getting you So the sentence says the microservice should not spawn and I mean if you look at the title It says containers should have one process category So I think a suggestion is maybe it says the container rather than the microservice Thanks, that makes sense and I connect and you were saying that victor. I just couldn't quite getting it the container Yeah, you know spawn other process types as a way to contribute Yeah I guess it's trying to refer the scene of microservices. I got it So the microservice is running in the container That's why it's trying to get people to think about microservices rather than the container But how would we write this to make it coherent because I I get what you're saying that it wouldn't go here at there Maybe it's the microservice in the container Yeah, that might work Or is it is it only one? Because it said the microservice and maybe it's parentheses. It could be more than one in the container No, because it really should be one the scene Your service should only have one process per container Well, first of all, we have to clarify like because uh Microsoft you can use built-in machines to using a microservice architecture, right? And I'm not totally fine. So microservices is just an architectural thing. Yeah And containers is implementation of that I mean, it's one of the so Definitely we have Let's try to do this and maybe it's right around the processes the process process But I feel like I need to do that The processes in the container should not spawn other process types So you may have multiple processes or threads. So you could have many use the hdp web Application apache you can run it with a single thread single process you can run it Multi-threaded and you can run it multi process, but it's all The same you could say the same type or the same category. It's still The hdp server when it spins off multiple processes So multi process is fine But what you wouldn't want it to do is spin up a you know ssh server To handle, you know, something like that or it spins up a A database or Whatever a web proxy to go to another web server I like it. I mean the process is in the container is not explain all the process types so what you're saying like like apache just going to run apache or any other apache process but not like main patch or any other type Y'all are good with this. Yeah This is just pointing at where it's coming from I think that might already be in the reference, but I'm gonna Can I just one question? I'll just and I may be wrong here. So I'm just I'm asking you guys for clarity on it um if you I'll let you just finish putting that in there Would it be more is it would it be accurate or inaccurate to say So we're looking at the sentence second sentence there So is the process or processes in the container should not spawn other process types as a way to contribute to the workload But should interact with other Okay, it's a bit redundant. Sorry. I was thinking with other processes Okay, yeah, never mind. I was thinking of maybe types should be there again But I don't think so. I think it's more accurate just like as it is So yeah, I'm good with it In other words, I was trying to basically make to your point It's like well, you need to interact with something else for different process types Don't don't try to spawn those Um, or don't try to have multiple. You're just you're interacting with others um Different types, right? Right do the micros microservice api. So that's fine That makes sense to me. All right We got summary done guys We got this next one Let's see. Where is it? Um Ian and the ticket for this back ask if it's okay to spawn the ip command. Yes. Yes. Yes This is just saying that yes, you can spawn other things, but we don't need to say that here um Add the cns My concerns yes microservice I guess I can say like that, maybe per container per container In the container yes, most likely Which one do you need it? No, I just um I can do this I having only one concern means Okay, so this whole chunk of words here needs to be Are y'all good with us going a few more minutes and try to finish out the summary section? Yes. Okay All right, so This section is supposed to be where someone can Quickly understand what this best practice is about. So I I think this first paragraph kind of communicates that do y'all agree? Yep. Yep. Absolutely All right And this is More of a related So there's a few things about one process type per container and Why this is a difficult one to talk about? Why we have it as a best practice And one of the main parts has to do with It's well, this is a microservice primarily a microservice type of best practice so that architecture um Patterns and stuff that you're referring to victor And then I get one print one concern per container. This is a principle So this isn't just a microservice you can actually have when you look this is why there's all this stuff single responsibility principle And you can see here's uh erickson actually refers to this Except only necessary Yeah, I feel like the second the second paragraph is just like a kind of implementation or like Expanding the main idea of the first paragraph. It's just saying like Like using a something like example like that Like saying apache I'm sorry, do you want me to get back where I was? Oh, yeah you know Yeah, I was just trying to relate this to the telecom thing, but it's it's not really talking about processes. It's talking about separation of concerns So this would be related to um, what are we trying to do with one process or type or for One category type or how we're trying to define that there's there's overlap between um different practices and principles here where you could say they're you're not in a fully embraced one when you're trying to talk about it But you kind of have to talk about both a little bit so right here This erickson document uh are white paper. They're talking about separation of concerns and this ends up being part of like Functions and stuff and why they're doing that and there's some other links that point to other How do you break how do you break down the different functions into smaller components? and I think you're seeing stuff with A lot of different places, but this is the Back to the concerns stuff like the single responsibility principle and stuff like that I don't really know that we need to talk about the the summary. It could be somewhere else I I think I don't think so. I think you I mean for me at least because I know what's coming Which is the motivation right because it feels very natural when you start describing what it is He goes, so why do you do this and that's going to come? So I think for me is this the summary works All right, but but do you do you think that? um It works as is okay. What do you what are you saying like this one is this relevant for the summary? Does it build on does it add and help for the summary of why why we're saying this is a best practice? For me it is uh just talking about the same like I mean maybe you can use in the description or another section just to find the idea I mean at least if the summary is I I think this is a right. I mean it could you can go either way right? I think for me this is it could be a reference right? You could just be saying there's many other places you're going to find this and so it's a question whether or not We do this as a normal thing to make references in the best practice itself to others Along the way or we just sort of have those all in one section So I'm fine to move this. I mean I think it helps exemplify it, but I'm just wondering if you If you just keep all the references in one place So either way works for me All right So where we can move it Do we have a Description or any other places where we can move it? So motivation might not be it, but maybe in the proposal where we talk about it or it can be Like reference Where the references don't just have to be Links we could add extra content like some of these like this area This is about the privileged containers, but we actually point out some specific areas in this CIS benchmark where we're talking about it We can do that sort of thing With something like this I do think that it's this sort of thing will come up like why are you saying this is important, you know And then we you know, we have the references This one I think is a good external Um, this is an external party that are talking about why this is a best practice. So this is Maybe more relevant to this particular practice. So this is docker talking about containers And they're and this is not specifically saying process type, but they are saying different concerns And this is a specific and what the patchy right and and then saying Don't put other things in there Yeah, multiple processes are fine. So that points out something that other folks like ann had pointed out Can we run? What if what about? Um applications that do multiple process types.  Yeah, and that's what this is talking about But maybe do y'all think this should go into Where where should this go? Um, I sounded like y'all both think it's redundant here. It doesn't need to be in summary Are you thinking reference or somewhere else? Or motivation Well motivation. Yes, but motivation really is talking about Um, this doesn't say what the benefits are. Yeah, I know The motivation is like why do I care about this? So what are the benefits? I'm going to getting how is this going to help me? Yeah, like performance or something like that. Yeah I my suggestion is leave it for now and then I mean I I said leave it because I think it were it very It's a nice motivator for that first paragraph, right? I mean it basically to your point it and makes an external reference You know, there's just not coming up anywhere and it kind of explicitly points to one example That is you know, it has strong relation You know correlation to what we've just said and I we can always have it in the reference section again at the bottom Just you know the link right and we don't necessarily have to have the whole the text But I think it's a I think I think for me the summary works. I think we're in a good shape here I just we haven't really looked at the last paragraph there But I think other than that having one concern means there's only one process category or process type within one container There can be any number. Yeah, but it's kind of reiterating it again With an example and then that's good. And then I think for me, I'm comfortable with this summary I think you've gotten across what it's about Now I'm naturally inclined to say so why do I want to do this? And then this is where, you know, I took from the article that we had already referenced before to some of these benefits and I Put that in there more or less just putting within a leading line saying the best practice benefits a cnf consumer operator In the following ways and then you probably needs an extra space in there I don't know if that's a page break, but then I just you know copy them in and I'm not sure if that's You know if we want to do anything with that or we need to elaborate more Can we what about this one right here in the summary? This is kind of a duplicate of the Apache so this is staying in gen X instead And Which is just another web server. So I don't see a reason to have this since it's a duplicate and then This is maybe an explanation of the process type having only Which could maybe be merged with the top part but first let me say this Can we delete this part which is a duplicate of the Apache right above? Yeah Okay All right And now this one do we need it at all? If if we do then it probably should be merged in that first paragraph in some way to explain what We're talking about Yeah What in seeing in this way what I would actually think is that because if you're in call we've had different names We've called this a single process single process category type concern And maybe that's what we should need to start.  Maybe that's the way that Having one I'm gonna I'm gonna try it by I hear you I'm gonna try by expanding on this first paragraph where we just say what we want and then we can if someone doesn't understand it Then we can explain it, but I need to swap this around. Yeah, so we first say Having only one process type So now we go having only One process type within Is Related to or is Also about having only one concern I want to go back to maybe the learning single so that Something about the It's related to the single concern principle. There's something there, but I'm not quite it's not fitting for me Well, sorry, I have to go to another meeting. Um If I have to roll, um Can I just check it later like a absolutely Thanks Victor. Oh, thank you And Oliver Talk soon Yeah, one way What what if you did like, uh It's almost feels like that almost could be Can can that almost be the first sentence in other words? And if you move it up like and you don't have to do it, but just think about it from a You know a a it needs to be a bit of a merge too, but I'm thinking What if you're starting talking about this from the, you know, a cnf A cnf's container Should have what should deal with one concern That means or you know A single a single concern means, you know deal, you know, it only is managing or only dealing containing one process type You know, I'm just wondering if we can go from that perspective But if we can work down there From top down if concern is sort of the highest level It seems like it's just different in a different vocabulary for saying a lot of the same stuff The single concern principle. Yeah, I like that and then you can say You know this this you know, maybe almost like this means that a cnf or to achieve this Something like that Yeah Yeah, now that works Can you do you think it may be also in the very first set and I'll let you finish what you're doing Go ahead In the very first sentence since we're kind of using this microservice and then, you know Parentheses s maybe the same thing right because it starts off as saying a cnf Service or services should follow the single concern principle to help in achieving this cnf's microservice potentially In the very first sentence if you put a parenthesis around that s Or an ad of parenthesis s for microservice Then it's just consistent with what we're doing on the next line Yep All right, so that looks pretty good. I think we're done with summary. Um, I Don't want to just keep pushing on this other than I want to Go back to what you said You were trying to say about the best practice the motivation section. So I think you were talking about this So it looks like you wrote this Well, I know I did a lift and shift Okay, all right. This is from the article that uh, I bet it was Watson who wrote an article. Okay, so you've kind of Taken some pieces out of there Yeah, I mean it seemed so well outlined to you know, why do you want to do this? Uh, it was You know, then it's a question whether we agree with that all of this is you know The k I just I really did just copied and pasted over so that we'd have a because it felt like when I was looking at the different references Um, this one came to mind. Of course, we refer, you know, we've talked about it in the past It may be what do you think needs to be changed or not? Or do you do you like this as a start? As a start. Yeah All right, I'm good with that. There we go Can you just add an extra space right after that first colon because the isolation comes Right after the first one is isolation. You see it, uh, it should have a space in between it or something Yeah, thanks And I think you know, maybe the we do this is the next step is just kind of walk through. Okay, so we've got we've got a summary This is why this or this is a summary of what it is. This is the motivations. Is there are these the right ones? Is there something else? I I admittedly had a challenge when I read this and I go, okay, so the cnf This is a best practices benefiting the cnf consumer and operator that makes sense um Probably can benefit even the vendors themselves, but you know, who's most important is the end user. So Leave it like that. It makes sense to me um Yeah, we might there might be some fine tuning, but I think it starts with us You can probably is that replaced the lorem? It's um, is that related to this section or is that sort of just generally speaking? Yeah, I think we can get rid of that one too. I think I did it as We need to replace in each section and I made it red because It's trying to how do we know what we need to do? Yeah, it's all Yes, right here. I I Didn't want to just keep saying this is this this this. That's all it is. Yeah Makes sense So we're done with motivation. We're done with I'm sorry. We're done with summary. We have a start on motivation Uh, let me um Blancere it I mean, I don't want to do anything else What do you mean? It's no for this section. Yeah, it's just it kind of covers it anything else needs to be we get feedback from other people or um In the pr we get feedback or someone comes and says hey, why don't we add this? And we do a new new pull request because we can always update. They're not And and I think I yeah exactly or delete it later because someone Decides that it's no longer a good best practice um Oh, yeah, there's what just happened. We lost some of the bullet points or something the bullet points I don't know why those It's acting a little strange That was weird Yep All right, so that section's good. Um This one we need to do something Richard had paragraphs Oh, I don't yeah, I don't I don't know just trying to make sure sometimes these are in a totally different area They're not always the right side where you're looking. Yeah Um I'm just going to delete this so people know that it's I think we already said this Workload all pod types should implement this um So I'm going to delete that so that workload context should be done User stories we need them Whether they're directly inlined or we point external Uh This is old stuff by the way. Yeah This is where We Can repeat something about Oops I probably could have taken the other one, but Just making sure people know Um All right, um, so that one needs to be Just reiterated and expanded on maybe a little bit. I think the best practice separate containers this part Can be deleted format text And References security design All of that all of that all of that all of that. All of that. Let's delete it Oops Wait And then let's go ahead and grab The ones from the top. Yeah Oops. Oops. Come on There we go and Oops, it's in. Where is it? It's in here I at least want to Yeah, at least want to take the link. Yeah Some of the I mean it says formatting thing But some of those are italicized and some are not and that may make people wonder if it's just a if there's some reason for that Oh What like this No, no, if you look at all the references the links some of them are italicized and some are not So I think it's just a matter of just putting them all as non italicized and let or all italicized depending on whatever Yeah, I was I think I was treating these like um like the as a Quote so italicized as a quote Yeah Yeah, okay. Okay. So it's right on that. I got it. Got it. Got it. So the ones that have that are used as a quote. Okay, got it That's how I was used italics. Yeah, all right um This is pointing at the same place, but all right This has already been implemented. So we're probably Well, this is also talking about ad test implementation history today ad history of best Right So As it's going through but anyways, we're following a bit of a few places so Some of them are just looking at how do people write like 12 factor app and other things to cover stuff Some of this is similar to kubernetes enhancement proposals But we're not really doing an enhancement proposal We're more doing like a write-up of the best practice like 12 factors and other places like that documentation Yeah, but Since this relates to the ability to do testing and people saying I would like to try to Use that That's why we're tying these together so that we can Support each other it can work independently and someone doesn't have to use the test suite at all they could just if we if we actually do What you were talking about earlier in the call just having something A completed and and something available where people are the idea is to put something out there that's useful so if we have a publicized A list of best practices and then the content behind it That can become a resource for developers to use even if they never touch the test suite because this works independently You can go through all this and we can go Yeah, we want to do this Yeah um And you don't you wouldn't even a lot of this Would be in my mind applicable outside of kubernetes And now In any container environment and probably in just a virtualized environment VM for a lot of these things So i'm hoping that'll be beneficial in those sort of ways All right, so this is not good goals improve the security. So we want to do I'm going to just write something here. I don't um just to kind of kick start it and then delete the rest so we Why are we going to do this? We want to um It's improve the orchestration um and improve the orchestration the benefits of the kubernetes to see enough So something about that so like if if you're not doing this then you're fighting kubernetes, so that's part of this you're being inefficient You don't have to use kubernetes. You could go slimmer and slimmer and then try to go I'm going with docker not swarm or any other environment I'm just going to go as minimal or you go down even below that because docker is and all of these are just using like container day I can use container day and do my own orchestration Yeah So the idea is I want to use the capabilities in the system um Because it's okay. Yeah, all right deuce. Um reduce risk of home run Um process management Um problems Which includes security security I don't know something there Uh, yeah, um Yeah, this I mean interesting enough to go because that Goals and motivations, right? I mean there's there's a little bit of a linkage there. I just don't know Yeah Well, that's fine. This is this is right. I think this is a sub. Yeah, this is a sub under the motivation Oh, yeah, it is and then there's non goals. So yeah, um Some things that happen that you didn't necessarily positive things that happened that didn't necessarily have So this one's easier to see so This best practice we're not in the security one we're not trying to Handle fine grained access or deny all access to the host it was one limited area to try to Um reduce security issues. That's it But not trying to handle all of the different security items on that so That's That you could almost say this is like a summary of the motivation. So that The motivation here is kind of like a Higher it gets into higher level as well, but Higher level or detailed. So some of the motivations that we've done are talk about Business motivations Mm-hmm, but anyways The goals are kind of a summary But the main thing I think is to separate what is in scope versus out of scope Right I'm going to put that And I'm going to Remove that because we're still working on those in oops scope Oh, what is that? Okay. Yeah. That's another way to think about it. Sure I could do a a non goal. I don't know if if you want to leave it, but Um practices for For us, um As something about when you split it. So if they say hey, we normally put these together and now you're splitting it We were talking about talking to the like this one As a way to control what should interact with other processes is through microservice api so We're not going to say the best practices for them to communicate with it. Yeah, exactly without yeah, exactly That's outside of the scope of this one And maybe I say best practices for the cnf Communication with other processes to the api. Yeah Maybe just meaning for making it Yeah related to the cnf. Yeah Yeah, so they're not going to find it here Right, we may write it up somewhere else, but not here. Does this make sense? It does All right all right I'm just I'm not going to delete this, but I'm going to mark it I've done this in other ones. I stopped doing it here because it It gets old But I'll just do it like it doesn't really matter what color it is Oh, other than it's so hideous that we can't They can't read it. Yeah Is that readable? Kindness okay, so this should all be deleted um example To be deleted Right All right, so then we actually are going to say When creating a pod container That I don't whatever it is. I don't I don't know. I don't want to work on this now Yeah, that would be it. So this is we have the summary and then you're kind of going to say the same thing again When you start on the proposal, but you're expanding on it This is we're saying do this Why do you want to do it and then you go okay? I'm I agree So let me see what I need to do and now we actually tell them. Here's what you're going to do There's kind of like the implementation You know Helping them with the implementation. I mean we won't get into every details because there's always different things but guiding them along Proposal if you're doing this this this and then where should you do it? You should do it in all pod types Sometimes we said this is not relevant to system or this is only for system pod types system pod types would be those that are run by the main kubernetes Uh namespace and group it it runs them like services like the kube proxy and sometimes people will Write something it may be an operator container that's running In that type of space and it needs additional privileges and other things. So that's why we need to say this Uh, I'm sure as things are expanding on and we're thinking about also the workload in reference to telecom type workloads and we may think User plane Control plane type things So I I think That could come into play with like the matrix stuff. I think normally would be in a all in control plane Yep, that's correct Then we we could think about it from that Side and I think that's going to be helpful and that can also go into the user stories Okay, all right This is good.   Um I found this I found this useful. Um, especially, you know, when we're a couple of us obviously different ideas different frame of reference Help us pull it together Yeah, I think we can um if we don't Get to working on this before monday I think we should be able to knock out the last parts this next monday Nothing else comes up as a higher priority And and then we can put in a pull request That's great At that point we tag as many people as we can try to get some reviews Make any other updates and then get it put in place and then we can move on To the next one sounds great Good good Awesome I'll follow up with you and if we have some time this week, then maybe we can continue on that one Sounds good. Taylor. Alrighty Cheers. Cheers. Bye