 Thank you for attending our session so late in the Friday just before we go or go for for fun So that's the contour intro and deep dive So we're gonna We're gonna go through this one. It's like we're the three spirits of contour or Christmas I'm the past that's the present and the future over there. So I'm gonna cover What happened through the last year in terms of Community so that's the team as you can see it's primarily built from VMware folks But we have few from below me and Ericsson On stage we have Nick who's a technology elite and then we have Nigel the current community manager And I'm all in the previous community manager. I said the past so With that said um, that's from the last May until this May. So we have from two 230 contributors in total as you can see We have 41 new committers We joined join the the organization. We have 16 releases and overall we we have 620 PRs Opened and merged and we gained not much attraction in the stars and you help but that nobody comes that So What we are proud of is the average average hours of Response for PR. So from open to merge we tend to be around 12 hours Which is we find super cool and we're kind of responsive community So the new community managers, that's me and Nigel. Thanks to Jonas who was the previous previous Community manager what else we did we started the technical docs writing group Well, which is an effort try to combine the the community to support the technical writing and To to be able to include more diverse folks into the community in terms not to be only technical and code this Contributions, but technical and writing. Okay. I said that a couple times Also, we Implemented new levels of community rows. So we have now reviewers contributors, which allows the community to be more easily accessible So you don't have to be aiming towards the maintainer right out the door You can go through the layer and it's more easy. So, um, maybe I forget to ask How many of you are using contour on daily basis? Hey, damn. Okay. Okay. So who knows what contour is then? Okay. Okay. That's much better But in in in general contour is the ingress controller. It's a control plane for envoy We have the API gateway Implemented and we have the CRD for HTTP proxy I did a talk on foster them this year in the beginning of the year and it's it's linked there So if you want to get more into what contour is and some demos, you can follow the link um That wall of words over there is actually our contributor champions And it's a thank you Slice for everyone who is contributing and I'm going to read them one by one right now. No, I'm not But thank you everyone who spent their time and and and made that project super nice And for the last one, it's again, maybe not very easy to read. It's more for reference How many organizations are actually willing to spend their time and their employees time? For our project you can see the list is super huge. Yeah, there are a few on top Which is VMware Ericsson and Rehead those are the three major playing In the in the fields right now without thank you very much everyone I'll give you work to make to continue with the demo. All right. Okay. So everyone can hear me fine. Yeah Sweet. Okay. So a couple of things I'm gonna sort of give a bit of an update about our our roadmap and then do See if I can if the demo god smile on me and I can smash out a quick demo for you of what What our current gateway setup looks like? So, yeah, the first thing speaking of gateway that we need to talk about is Envoy gateway. Okay. So who here has seen the announcement about the Envoy gateway. No, okay, cool Few people great. So I'm on the gateway is On the gateways a new initiative from four organizations are VMware tetrate ambassador and fidelity so the VMware is obviously me and the other VMware contour maintainers We're going to build a gateway API implementation that uses Envoy as the gate as the data plane But this one is a branded Envoy subproject. So this is a different thing to contour that's built under the Envoy banner And so like one of the things I was worried about with this announcement is that people would be worried You know, like that's the same sort of thing as contour is and so one of the things I was I thought that people might be worried about is you know, what's going to happen to contour. So, uh, yeah I've got to that qr link is the link to the blog post that I wrote That sort of explains where we're at and so if you want any details about what's going on that you definitely should grab that q qr thing code thing and sort of these are some of the questions I anticipate of people asking like You know we'll contour stop being released is contour going to be absorbed into Envoy gateway and so Here's a sorry Does anyone want me to go back so you take a picture of that? No cool. Yeah Okay, good So this is our commitment to our users. Um, the short answer is no contours not going anywhere Contra is staying where it is. We will continue for feature development on contour We've got you know, I'll talk more about the road map in a minute But we're not going anywhere. Um, and we want to give you this commitment like no one's going to be left behind No matter what happens with Envoy gateway as long as people using contour, you know, we will will help maintain and support it For those people who do want to move to the gateway API And on the gateway will provide tooling to help you convert HB proxy resources to gateway API resources Actually, so the bit I missed at the start of this is the headline here is that we're going to be moving the gateway API development though resources over to Envoy gateway, so we're going to sort of Round out the gateway API support that's in contour that I'll demo for you in a little bit Um, and then we're going to sort of move that effort over to Envoy gateway But the rest of contours development will continue as per normal. Okay So, yeah, we want to we want to make it so that you can move to gateway API gateway API is the future of ingress and Kubernetes definitely and If any of what I'm saying right now does change we will give you will will tell you shout as loud as we can on every Every channel we have to shout at you at and make make sure we give you any notice if any of these changes But the the key part is that I want you to know is Contra is not going anywhere We pledge to you when we all versions after 119 would always have at least one year of support And that that has not changed So, you know, nothing nothing will change that unless we tell you otherwise Which case we still got to give you a year's notice because that's what we promised you Okay, so I just wanted to set everyone's mind at ease who might have heard that in Envoy gateway news that you know There's nothing to panic about. We're not going anywhere Contra's staying around You know, of course, maybe two years in the future Like Envoy gateway is a completely awesome solution and there's no reason for you to use contour then then maybe we'll have a chat But there's a lot of things that have to happen for something like that to happen So there is no I still strongly recommend if you're interested in contour It is 100% find a pickup and get using right now and any change that you need to do in the future We will hold your hand every step of the way now I think I am gonna just stop for a sec to say does anyone have any questions about this because it's a super important that We get this right for the community Okay, cool. Okay. No, I say if you do have any other questions about it I'm young Nick on Twitter young Nick on github. Please feel free to hit me up and ask Okay, and those those of you playing at home Some goes for you if you have any questions about any of this read the blog post and hit me up about it If need be okay. Okay so Let's talk about road map Okay, so we're still actually in the process that this whole Envoy gateway thing happened very quickly in the last like five weeks It went from nothing. I Had no idea it was going to happen to it was announced late on Monday And so we're still in process of updating the roadmap But this is the sort of big things that we're thinking about what's coming up in the future for contour so a Much better off experience. We already have support for being able to bring your own external or server and Integrate external or intercontour, but like right now that the install experience and stuff like that It leaves quite a bit to be desired So we're looking at both Helping you with being able to install the an external or service to give you lots of flexibility, but also I've been looking at Making it so you can configure the OAuth filter that sits inside Envoy so that you'll be able to when that's done You were to use a HTTP proxy resource and request OAuth for any Anything that you are protecting like that you are exposing by a contour with a pretty simple set up The OAuth filter is a little tricky and there's a lot to figure out with it And it's still alpha. So there's quite a lot of work that left to do taking a lot longer than I thought it would to be honest We've got Sanjay from our team is working on a bunch of XDS updates Those of you who might not have used contour before XDS is the is the protocol that Envoy and its control plane used to communicate Actually wiring up your control plane so that it talks XDS to convoy to Envoy in the most efficient way possible is A surprisingly different difficult problem And so yeah, we've Sanjay is spending a lot of engineering effort in sort of tightening up that and helping get that sorted And then the last one that I really want to get done is a tracing Tracing has been outstanding on our roadmap for a long time way too long To the extent that I know that the issue number is number 399 in the contour repo Because it has been around for so long and I've had to reference it so many times that is what that one is held up on a Redesign of our extension service CID which is linked to the HTTP proxy one. So yeah, these are all of these things are coming So that is that is for those of you who Yeah, know quite a bit about contour already. We're kind of putting the deep dive a little bit before the intro. So sorry, um, but Now next up I would like to run you through a Quick demo now so No, it's this way Okay, that's good. Is the text big enough everyone can see that. Yep. Cool. Cool Okay, so for those of you who haven't seen the Gateway API before The Gateway API involves a set of resources that basically will do in this case. I'm going to show you What the Gateway API setup that replicates what an ingress would look like in Kubernetes looks like okay, so that needs First you need a gateway class, which is just like an ingress class in You know with ingress it's just was basically just a bucket to hold gateways Now there's a possibility that you can use that to configure like special parameters and stuff I haven't in this case because this is a pretty simple use case After that, so I'm gonna I have a cluster running here Just a local kind cluster And so yeah, I've got the I've got our gateway our automatic gateway provisioner already up and running What that does is it watches the the cluster for gateway class gateway Resources and provisions a whole a contour and envoy to match your gateway request So the gateway is the key resource in the Gateway API It's like the it's the way that you define how the traffic should get into your cluster. So in In a lot of it's a little bit like in some ways the bits of the service of type load balancer that lets you Expose certain ports and stuff like that, but it's also where you attach the routes to which I'll get to in a minute so First thing I'll apply the gateway class Okay, no problems there now. Let's show you the Show you the gateway pretty simple gateway here This is just saying hey create a gateway in no space project contour The gateway class name is the one that I just created the contour gateway class and has a HTTP listener I'm not gonna worry about all the shenanigans involved in TLS at this point It's a little too hard for a simple demo like this So yeah, all this says is hey listen for HTTP on port 80 and allow any route from any namespace to attach to this gateway So you'll see that there's one of the different things to ingress is that the route the details of like what? hostname what? You know what path and all that sort of stuff that's not in this object all this object has is like Port and the protocol and what's allowed to attach to it, right? So I'll apply that one Okay, so a bunch of magic is now happening Okay, so you can see we've started Contour pods And an envoy demon set has started up as well So when I created that gateway object these these were not present before I don't if you noticed before when I did K Get pod here. It was only the gateway provisioner running When I create the gateway object all these act the the gateway provisioner Magically goes off and creates the contour and the envoy pods for you So you don't need to go you go and figure out how to install like Contour itself and envoy the gateway provisioner knows how to do that for you and does that in response to you creating a gateway, okay? So that one is ready the contour pods are ready. We are good to go So you want to do that I'm gonna switch to default namespace so No pods in the default namespace actually if I There's there's only the default Kubernetes service in there in this namespace at the moment So I'm just gonna quickly apply a quick Kubernetes up and running service here While that's starting up. I will just show you that is not The command I intended type. Okay, so we got just a really simple simple deployment here You can see there's a single deployment Single service Like this is a very basic where so it's just gonna show that I can get some HTML out of it basically Okay, so we've got a service we can now normally you could just create an ingress object to expose this service Contour would pick that up do its magic and then you'd be able to see everything as per normal So what I am going to do though instead is We're going to create a HTTP route object now this HP route object is sort of the the HTTP specific bits That you can attach to the gateway now each Type of traffic that you might want to send through a gateway has a separate type of route So there's HTTP route. There's a TLS route for things where you don't want to terminate your TLS Traffic you want to just afford the TLS traffic through There's a TCP route on a UDP route now contra only supports the HTTP route and TCP route because we're a layer 7 ingress controller okay, so key parts about this one you can see the parent ref section that is saying hey My parent I want you I want to bind to the contour gateway in the project contour namespace. That's the one I just created And I'm gonna listen on the local dot project contour.io her name and just Send everything to the quad service that I just installed right very basic config This is all exactly the same as you would do it in ingress like well, not exactly, but you know you get what I'm saying So if we describe this object I haven't applied it yet Well, it's Friday. I'm sorry. Oh, thanks. Like I said, it's Friday. Okay, that's the wrong one. Yeah Okay, now it's applied Now if I go back and describe There this is the sort of normal describe you'll see but the key part is the status You can see that the status contour is updated this status. It's a valid HTTP route. It's been accepted That means that it's now been configured. Okay? So I'm just gonna Because I'm running on kind on a local machine. I did not want to be relying on our conference Wi-Fi So I'm just gonna do a quick port forward to the To the envoy pod that was spun up. Okay Now I should be able to Hit this and I get a bunch of HTML back Yeah, I could open up a web browser and give you the pretty view But like the key part is I get the HTML if I then remove Okay, if I repeat that same command Nothing. Okay, that's because we've taken out the ingress thing. So yeah, that is the system working Yeah, like I said, there's not there's not a lot of there there in this But the whole point of the HP route object is to have a great place to put all of the config that currently if you're using In general ingress engine X or our HTTP procure object lives in a bunch of other fields This is a standard way to do that right and the whole point of this is it's standard You better pick up this HTTP route take it over to the AWS Load balancer or the you know traffic or Kong or us or you know ambassador emissary or anybody You will pick up that same object and not have to rewrite the whole object all over again okay so With that I'm gonna hand over Nigel Nigel is gonna talk to you a little bit about where things are at how you can get Involved and then we'll hit some questions take away. Thank you. Thank you. Thank you Hello, as was mentioned, my name is Nigel. I am the community manager for contour I work over at VMware and I wanted to talk to you a bit about how you can get involved with contour So community is integral to any open source project open source doesn't really work if we don't have it and We are very sensitive to the needs of what our Folks are asking for and we want you all to be as much a part of it as you would like to be So wherever you are in your contour journey Orlin mentioned it earlier. We have inside of the console organization a community repo Which has everything to do with how we run our community and one of the most important files You'll find there is our governance and I want to point out that for a lot of projects We think of contributors as people who are writing code, but for us we think of contributors as anyone who is Responding to issues or showing up to meetings or helping us in whatever way that you have Capacity or skills or time to do we understand that for a lot of people that this is a Holy holy volunteer effort and we are very respectful of the time that you volunteer For us and all the effort that you put in and we appreciate anything that you would like to do and to that and I'd encourage you to check out what we have in our governance talk about what it means to be involved and what that path to Maintainership looks like if that is your goal and I as a community manager want to hear from you about how your involvement in open source is gone and What you're looking for how we can be a better steward of your time and make ourselves more open and available for you to pick up our project or any other project and start contributing so if you You have my permission to reach out to me directly and say this is where I am in my journey and this is I want to start getting involved with open source Contour looks like a good place to start and we will help you as much as we possibly can along that journey So where can you find us? All of the information about our community is on the website So project contour.io slash community it has all the information about when we meet where we meet But I'm going to go through some of it for you right now We have community meetings every Tuesday and alternating time zones. I don't know if you noticed Nick has a bit of an Australian accent so we have our show your friendly time zones on the first and third Tuesdays of the month and That happens at 9 30 a.m. Eastern and our North America friendly time zones happen on the second and fourth Tuesdays at 1 p.m. Eastern and Then we are starting a brand-new Google group for handling email I can assure you if you join you won't get blasted with a bunch of emails because I don't particularly like writing emails I will just give you the essential updates So we'll probably average between one and two emails a week, but this is where you'll find requests for comments You'll find what are what kinds of things are working on any topics that we need to bring up in our community meetings Anything to keep you updated will be happening at this Google group and we'll start getting that up online Next week it's available now. You can go and join it but the first emails will start going out next week and Then you can add your voice to our conversation on slack So in the Kubernetes slack workspace. We're at hashtag contour and we are also on Twitter at at project contour again community is of vital importance to us and there have been some great talks about community at this conference if you have a chance to check out the talk that Nancy Lancaster and Karen Chu did or John McBride About what happens when you don't have a large community, especially of maintainers around projects as well as the keynote this morning from Well, who was it this morning? Lee. Yes. Thank you from Lee With that we want to open it up to questions There are three of us here There are our names and handles if you would like to direct any questions to us in particular I don't know if there's a microphone that's going around But if not we can just repeat the question. So does anyone have any questions that they would like to ask? Don't be shy promise Not gonna be too Australian at your promise Okay Yes So what what reasons are there to continue to use contour as opposed to Envoy Gateway? Well, the the simplest one is that contour is a thing that you can run right now Envoy is not on my get ways not Envoy Gateway is the Intent to create a project not a project as yet Yeah, we have zero code We are still in discussions about exactly how we're gonna do that but contour is usable today Any stuff you do with Gateway API today with contour will you'll be able to literally pick it up and use it with Envoy Gateway? That's the whole point of Envoy Gateway but even if you as I said before even if you Want to learn about how to do some of our more advanced features like you know way to load balancing rate limiting External or and a whole bunch of the other cool stuff that we've got built into the HTTP proxy Like I said, we are going to provide a tool to help convert that conflict across So yeah, there's we're gonna make that process as smooth as possible But like look to be real. I really don't see we're hoping to have a sort of our first prototype Cut for Envoy Gateway before Cubecon America Later this year, but that's like the first prototype and there's a lot of work to do to get Envoy Gateway to parody with the with contour Yeah, I'd be pretty I'd be pretty happy if we were like a parody with contour by Cubecon North America 2023, which yeah, it's still like nearly two years away Great question. Thank you so much. Does anyone else have something that they would like to ask? Yes Okay, sure. Can you repeat the question? Yeah, sure. So, um, yeah, so we're so you so you asked about TLS support and automatic TLS certificate selection. Yeah, so, um, Obviously we support TLS right like that's no brain a table stakes feature. Everyone should do that the And we support the usual ways of doing this with having You know a secret with your TLS certificates in it now I'm not a hot. Can you maybe explain to me a little bit more about what you mean by like selecting multiple certificates? We get them right down here, please Right. Okay. Cool. So, um, so yeah, look, so if I were to summarize that since you didn't have the mic What you'd like to be able to do is to have like have to make it easier for developers to be able to expose their their services on their domain on Individual domains safely without having to like provision their own search you want to be able to have a central platform team provision the certs and Then have the things so yeah, right right now like I mean, we don't do that for you We certainly would anticipate that you use something like cert manager to help with that so What so the way that I would suggest that you do something like that is Depending on exactly how magic you want to make it What I would suggest looking at is we have we do have another CRD called a TLS certificate delegation That lets you drop a TLS certificate into a secret in one namespace and then refer to that secret from another namespace, right? So if you know all in school all in writing here's a super awesome blog service in namespace in all in namespace And I'm the platform owner and I'm like well, I want to make I want to make that available on like all in comm and Yeah, oh and so he wants there to be TLS for that But I want to make issue the key pairs I can issue the key pairs in a secret in the Infra namespace and create a TLS certificate delegation that sits next to my the certificates in my namespace That says hey all ends allowed to use You know to use this TLS certificate from his you know all in namespace, okay? And so that's what I would recommend doing for this You can you can have a single TLS certificate delegation that covers like all secrets in a namespace So you could have a single namespace that held all of the secrets for all the dynamically created things In terms of actually dynamically creating them that is not the business that we want to be in with contour You know other people are doing that doing it better creating and managing certificates is a hard problem That's very easy to screw up and if you screw up you are creating huge security problems for yourself So I certainly would recommend if you want to do dynamic Certificate management don't write your own thing use cert manager use vault use some use something that Someone whose job it is to do nothing but build that thing has built for you See it, but that that is how I would recommend doing that to make it a bit more magic Have have it set up so that the specific is get Get provisioned into a central a namespace and use TLS certificate delegation to move across now Of course, there is there is one other option here, and that is if everybody's domains fit under the same TLD You know if everybody is that example com and you can give them sub-domains off example com Then you can just issue a wildcard cert and use to TLS certificate delegation to keep that in a safe place And then have everybody just say my TLS cert is the wildcard one And so that that is like the easiest possible way to do it But it requires you everybody to be exposing on you know All on dot example comm. Yeah, rather than all on dot com. Yeah Thanks, does that mean yeah, cool great question. Thank you Do we have another? Yeah, sure. Yeah, no problem. Keep hitting us then anyone else Thanks, um, you have another question regarding authentication and for some already used the engineering service right now And they're like extensive right custom authentication support. I'm running like if you can share more details. What's the current status? So yeah, so right now on the functionality that we have inside contour allows you to use a on boy has a On boy has a standard for an external authentication server Which basically is a service that runs a gfpc endpoint that provides an API that all boy has mandated we don't control that API and We can tell tell the envoys that contour owns and say hey when you get a request to this route Before you allow it to go through Pass the request off to this external authentication server and it can do whatever the hell you want right like so Some people have we've got an example one that will do like basic orth for you But lots of other people have ones that you know will do full O odc or you know talk to your ad or do a bunch of other stuff like that Right, so that's what we have support for today You a complaint that I have heard that I think is completely justified is that there's a lot of Philly Yeah, Philly stuff in there. I Family friendly show so I can't say what I would say But yeah, so yeah, it's like there's a lot of fiddly fiddly stuff You've got to do that to actually make everything line up at work and so Yeah, there's sort of the effort that we're doing is to find ways to make that a little easier whether that's Update out the example implementation. We've got which is a really not production ready find so community member at Travis Hansen shout out Travis has has actually built a Another authentication server that we haven't really had much of a chance to have a look at to like to have a Look at that and see if we can make that a more sort of you know contour thumbs up Thing and then lastly as I said on boy actually has an experimental O-auth filter where the O-auth flow is actually done by on boy, right? So you tell you would tell your HP route. You know, hey, I want to configure my O-auth flow in this way and I if Who here has configured O-auth in the past? Yeah, you all know, right? There's like 20 million settings. You've got to have for that So we're gonna have the way I have a way for you to provide those 20 million settings In as part of your HP proxy or to your contour install so that then but then if you once we do that and and I You know get the design right hopefully then you'll be able to configure on boy and on boy will do that for you your app will not have to do the O-auth flow itself, which you know I'm sure we'll be pretty happy not to have to have writer apps do that right like it's pretty hard and easy to get wrong and if you want to File an issue and the repo and tell us a little bit more about some of the specifics of what you're looking for That will help us keep track of it and be in communication and that's for anyone if you have any ideas problems questions File an issue against the repo will triage it and get back to you about how we can incorporate your feedback into Into the project. Yeah, I guess the way I would say that is issues are not just for bug reports Yeah, you've got a question to ask us you want to ask us for something like the worst that will say is yes Sorry, that's how to go like that's the you know the worst possible answer I can give you but I and I won't say that very often Although we have said it in the past about UDP support So maybe check that we have an open issue about that one already if that's what you want But you know, yeah, I'm making a joke there, please just I'd prefer that you open another issue And I point you to the one that we've already opened Issues are free. I don't care if we if we burn them on people asking questions that we've already answered I would much rather have you ask the question and get a good answer then for you to be too worried about doing that Okay, I I and everyone the rest of us like will promise you that we will never give you a hard time for opening an issue That's you know, there's no stupid questions. There's no stupid issues every issue that you open even if we've already answered the question You opening the issue tells us that we haven't given you a way to find that question the answer that question after yourself, right? Like we haven't we need to update our documentation or something like that Like every everything that you do for us helps us the best the way that you can help us help you is to tell us What we're not doing and or to tell us what we are doing. Hey positive feedback is nice, too, right like Yeah, yeah So, yeah, yeah, cool Hang on wait for the second, so how I think the mics I think the mic's not on Check check Okay, that's fine. Just ask the question. I'll repeat it. Yeah As far as I understood it's only possible on the gateway object or the HTTP proxy Object, so yes external is currently only possible in the HTTP proxy object So you need to be using HTTP proxy to be able to use it. Yes. Are there any plans to Make it available on the route level so to say or is that an limitation within envoy? so the HP proxy object does sort of have config on a per route level, so It's already on a per route level But if you're talking about with the gateway API Yes, there absolutely are plans for the gateway API to cover Or for no off but Like I said before there's 20 million settings on it And we really and the we really want to have the upstream like come up with a good way to do that for everybody No matter what implementation you're talking about And so that's gonna take a while like designing that sort of API The one thing that I have learned after nearly three years I'm also a maintainer on the gateway API and the one thing I have learned after nearly three years of being a maintainer Writing specs like that. It's really bloody hard Like, you know, it's really hard to write a very clear very well-defined spec that the people can actually use and we can actually Implement and so but at the same time we've got to be really careful that we're not like messing it up by rushing Okay, so I really want so external or rate limiting Circuit-breaking tracing all of those things need to be present in the upstream gateway API They are all on the list of things to do in the upstream gateway API, but we just haven't got to them yet So, yeah, um, yeah, I mean, yeah, if Nigel's talking about finding ways to contribute gateway API Desperately needs people who know about that sort of stuff who need it to tell us more about the things I mean giving us the feedback in contour also is effectively giving it to the gateway API because like hey, I'm right here But yeah, but the more feedback we can get about that sort of stuff the better So thanks for the question great question. Thank you Do we have any others? I love answering questions. That's right. You can tell I love answering questions. I'm not letting these guys talk Everyone must shop on a specific to the gateway API maintainer Can you give any ETA on the like on a to beta of the gateway API? So, yeah, the beta the beta for the first parts of gateway API is due like any day It would but I will hope to get it done before like before cubecon But we just keep finding like little things that we've got to fix up. I hope in the next couple of weeks Yeah, but I just it's like a hydrate, you know, you just keep we we think we're almost there and we get down to the last thing We're like, okay. This is the last one. We're gonna resolve this PR someone really really helpful contributor helps us out with a PR And they're like they're like, oh, I just found this question about this edge case and we're like, oh, no You know, we've got to go back and design some more So and that's just been happening heaps and heaps but that's that's again We don't want to rush this API We might want to make sure that it's fully specced out and we don't leave big holes there And so like the system is working sadly, it means the system is going slowly But yeah, so it like real soon now is the only sort of time frame I can give you After that, we're gonna look to move some of it the thing with the gateway API is we can move the objects one by one So what I would put into this way we're gonna be having pretty regular releases for like the next year of the gateway API Great question. Thank you How are we doing for time? I think we're actually technically over time But look we've got time for one more question. Maybe if anyone's Really got one, but I think we might be out the questions, too. So there is that. Thanks very much