 Hey, Clones. Hello. How you doing? I've been doing well. Oh, that's good. Yes Let's the day run by like nothing, which means I have a lot to do which is Great And it's better than the opposite that is definitely true And I did and I finally did some reviews of things Yeah, I noticed your review Clemens not Clemens. Yeah gems here. So that was good But don't just or nag you you have a couple of outstanding things on the waiting for updates thing Laging but I've been doing all kinds of busy work on Related matters With discovery and subscriptions and etc. Where we're trying to get get on in on Aligned with SAP and then bring will bring the The essence of that That'd be cool. Oh wait before I have no sighted it I can have one slide that I made that I'll that I can show Later Which is specifically around interop Sorry discovery and and one scenario how discovery might work Okay, hey, did you get a chance to read Eric's issue that he opened up last week? Yes, and I think So so if I understood this right He's kind of worried about like multi-level multi-stage writing aggregation in the middle and how we can go and model that I Think And I replied to that issue and included a picture One of my slides that I've been using for OPC OPC way and some of the Federation issues we have there and I think Once you have these multiple loving things you really from a subscriber perspective, you only see the party that's publishing to you like this Yes, you can go and have a 30,000 foot view and the pipeline Of what that total flow is but I think from the cloud events perspective and what we're trying to achieve here from the interoperate perspective The consumer only gets to see kind of the next hop. That's immediately in front of them Which means Which means that There is nothing to control Five hops down from that perspective like there is nothing you can do from a interop protocol perspective to make things better But you can obviously try to be smart about how are you How much data you're acquiring based on the subscription that you manage Right. That's that that was actually going to be one of my questions to Eric was Because I did place the question in there either that last night of this morning I can't remember which one Where I was trying to figure out if he's trying to do sort of a multi subscribe Multi subscription subscribe kind of a thing and then if he is Is he just looking for possible guidance or something on how to actually specify that, you know, it's almost like nested subscribes in a sense I'm not sure we didn't say they want to support that directly But how could he kind of bastardize things to make it work is what I was wondering I have the the site that I that I want to show He's solving more of those it's trying to solve one of those problems and that's Well, you'll see when I talk about it. Okay. Okay. Hang on. Let's just do the uh the fun stuff here Okay. Oh, hey mark. All right. Let me start at the top of my list here. David Good morning. Good morning. And Tommy. Yo Yo Yo Christian Howdy, howdy and Klaus Hi, doc. Hello Priyanka I don't see her yet Scott Hello, and whoa, I managed to do that All right teamer All right. Hello and Matt Hello, hello, and then I saw someone go by How? H. A. O. Hello Simon Hello, hello And Vlad Good morning, dad. Hello Wow small group today It's weird. Hey, Jesse. Remy Hey, hey Little over a minute that will get started. I guess I should warn you my machine has been doing some really weird stuff today And I did just reboot it. So it should be okay. But between that and The ice storm that we're kind of getting here um I can't guarantee that I won't lose connectivity. So if I vanish, it's not because you guys pissed me off It's just things went horribly horribly wrong. I know it's big coins Hey, Eric Oh, who was that And well, uh, gotcha. Okay. Just a couple more seconds. Then we'll get started here I'm not sure I can handle another person named Davis in the group. All right. All right. Let's go and get started. Um Okay Those of you on the call you have some AIs Keep remember that All right community time anything from the community people want to bring up. All right moving forward then. Um I can't remember if we actually talked to anything like that scale call last week if we did I'm sure it was very quick But we do have a discovery interrupt call after this one. Um, I suspect we're probably going to end early So if you're interested in that hang on for that Uh, Timmer offline mentioned that they had no real updates just chugging away at their prs and stuff So we can jump right into the fun and gem since you joined You're gonna be up first. However Um, are there any prs or issues you want to add to the list that I may have skipped over? I have something to talk about for discovery. Um, just as a as an update on some of the work that we've been we've been doing with Orson thoughts That we're having how to make things work with klaus And klaus plays it work So I don't know when you want to go and cover this. I have one slide that I will show Okay, let's see where that fits in the uh, I think these are going to go fairly quick. So let's see. Should we have plenty of time? All right, gem, you are up first. Whoops. I already have it open Would you like to talk about your May hide the comments first here. I was like Do you like to talk about this issue or pr gem? Well, since you put me on the spot, I guess I don't have much option Yes Somebody mentioned that this topic had come up before you know, how could we you know, or could we come up with a mechanism of Signing or at least sharing Signatures for events And to be transparent, this is actually An issue that we're Looking at internally today. So we have a scenario where We have potentially geographically dispersed systems That need bilateral trust between the publisher and the and the eventual consumer but also the Infrastructure in the middle where that's sort of doing the distribution also needs to do Bilateral trust between you know nodes within that infrastructure as well. So um So I started down this road I think the the internal bilateral trust is a slightly different use case which can be addressed maybe through Russian doling actually the whole cloud event but I started to To to think about how we might attack signatures and then How we might also sign attributes Um And I know a number of people including Doug had sort of commented on Maybe coming up with a different way of doing the attribute signing, but the basic premise here is that we reserve some extension attributes to carry the signature the Algorithm used for that signature and separate the the signature of the data payload from the signature that might be used for Attributes and the model that I'd actually come up with which was the First one that fell out of my brain, which is not flexible enough. I don't think is this notion of saying I will sign The required attributes or I'll sign the required plus the optional attributes or or I'll sign all of them Um, but as a number of people have pointed out, you know, since we allow Intermediaries to put additional Attributes into the cloud event It may well be that I need to come up with a more flexible mechanism to indicate which Um, which attributes in that particular Event have been subject to the signing Of Clemens, I think you you'd sort of made a reference to s mine. I did comment back in the in the pr from As I understand it s mine uses multi-part bodies. Yeah, so it stuff signatures in in a second body part And so If we think of a different way, I mean, I obviously am completely open to that but I mean We don't support multi-part data today. So I mean From From my perspective the only way that I could At a signature was to put it in an attribute in a context attribute Yeah The I think it's worth is have you have you read to s mine No, I read the Wikipedia page on it It doesn't count here Yeah, come on I just need enough knowledge to To say I've got a problem with it and then find somebody who really knows how it works Um, so I think the current the current rc is uh a 551 um and um So so s mine solves the problem. So s mine is there to go and take internet messages, which is headers followed by a body Which is how mail works and which is also incidentally how Hgp messages work in a bunch of other messages work And and apply signatures and crypto and crypto to to them and it has solved the problem of of labeling headers that need to be signed and it has a special header designated where the signature goes it has Metadata to indicate which signal is which algorithm you want to go and use and it has headers that indicates Key hints and it has all the stuff that you kind of need for Um for that kind of work And that's why it's a thorough read of s mine will be useful I agree that s mine in the form that we have it that it's there Might not be immediately applicable because of multi-part message bodies um and But I can imagine that we can go and say um We're going to carry a a signed cloud event Is actually carried inside of a of a wrapping cloud event which is Then ends up being a mechanism that we can go where we can apply the the mechanisms of s mine to whatever The reason I bought up s mom is because it's it's something that is well understood generally also in the in the security community and where you have presumably also coverage from a library perspective And it's something that is somewhat really tooled um And so I'm I'm especially in this part in this area I'm a little worried about inventing a cloud event specific mechanism Right, so I would like I get it. Yeah So so as I would I would like for us to lean as much as possible on something that is that is That that that the security people have have thought of long and hard and there's currently two candidates. I can think of there is There's the whole josie stack So that's the jason security signature and encryption so that's where The the the jason web tokens come from and the jason web signatures come from and so that's all called josie j o s e and that's a series of rfcs In the itf I was going to say we use josie. Yeah, I think the issue here is It's that I can use josie end to end, you know from Yeah, publisher to consumer. Well, actually even that, you know, that wouldn't cover the cloud event attributes It would cover the we would stuff it in, you know, the data Yeah, well, but but now I layer this other level of intermediaries that then now need to wrapper that with other stuff Or mutate those headers along the way Yeah, I think it gets a little bit complex josie josie is Um Is a another reason why I'm a little worried about josie is that josie is a direct descendant of double security And so it carries a lot of the those complexities with it like if you go and take that entire stack um It also is an accident that the that the folks who wrote the specs are The players are very similar similar folks um And you know those folks are brilliant. Let's let's let's be clear about that And I find es mine More attractive for our scenario because it's not trying to build the ocean as much as josie tries to right It literally is Es mine has has a notion of there's a bunch of headers and there's a body and we need to go and and Uh transport a signature for those and probably go and encrypt the body in some way It deals with those things in base 64. That's also something that we That we need in at least in part Um, so I think there's a toolbox here with in the form of es mine, which we can If we can't use it as is we can at least very liberally go and loot it Good point. All right. I will do some deeper reading That would be very nice of you if you did that There's not going to be a test afterwards Okay, aside from clements or I guess gem is there anything you want to talk about specifically about the PR Since it sounds like you may need to go back and do some revamping if clements is suggesting is is the path you want to go down I will do some reading and then and then come back Okay, in the meantime, are there any other questions or comments for gem on the PR as it currently stands or on the Discussion that clements you were having Yeah, I mean, I was curious if anybody else would sort of run up against this This scenario because I know it had somebody had raised it a while ago in one of the slack channels. I think Yeah, I think I think we've had more than one person asked for some sort of signing mechanism It'd be good to have it there as a test or that's trial extension. Yeah All right. Any last comments questions for gem? All right. Cool. Thank you gem for that Slinky I know you've been working really hard on this one. Would you like to update this on the status of here on this one? So, uh, I just started looking like After an hour ago to the comments uh Generally, it seems it's going well. Uh, is there anybody that wants to do some more elaborate comments on the meeting? I know Clements did different comments about Type inference so Yeah And about and about error handling too Yeah, uh, I thought I thought that the the inference things would work you most Sorry, can you repeat? Yeah, I I thought that the inference comment would Would hurt you most because that they end up that ends up being a little bit more work Uh So really about more work. It's generally that I I generally don't like typing friends too much Sometimes It's just a sequel doesn't so as Really, I think we should add it Just Give me some hint on how we want to do it. And I'll go ahead And go read the go Simply Since since I know that you haven't been have that are parts that were inspired by the mqp spec You simply need to go need to read further down the mqp spec and then we'll find the inference part Okay Okay, is there anything in particular slinky that you'd like to point out here since I think Um more offline discussions are are needed and they're happening. It was all great But is there anything on the call today you wanted to bring out the repeal's attention? I think you I think you Clements might have misunderstood the error and link So the the idea of the the idea of the of this language and If it's if it's not well explained, I can go and rewrite this part is that because every operator Because every expression is total the evaluation flow is always defined up to the end and then Some functions can have the side effect of appending to a list of errors so in and my idea with this is that The user can have a far greater flexibility of Deciding whether errors some errors are more critical than the others some errors are Should be treated as false Some errors should be treated as true and so so I just didn't want you to decide in this spec Whether a narrow is false or is true? Okay, and ends up breaking the the expression or not That seems complicated If something if something if something is like if you have a division by zero Because you are having So you are dividing by a value that you're getting through the message And now you're getting a division by zero Can you ever return true or false? No, you can't Well That's the point every operator and function is total So there is a definition for that if you look in the operator in the division operator There should be a definition whether what happens when One of the operands is zero But you have to throw by division by zero you have to throw because there's no there is it's undefined in math Not if you define it Yes, you can have in the operator in the operator you can have a definition of that But it's undefined in math It's undefined in math and it's raising an error and you can choose whether you want to Have this error to treat the the filter us Pass or not pass That's what I mean so My point is that it's an error. Okay, we know that it's an error and in the The the evolution will return an error and will signal to user the error But then it's up to the implement so to the Let's say to to the user so To the subscription implementer for example to decide whether The error is pass or not pass. That's what I'm saying Now, yeah, you took quite a good example. I have to say yeah, but I have to be honest you took a quite a good example, but Pick a pick whatever like no, no, no, no, no, I never stick with division by zero because that's hard I mean, it used to be it used to be I don't know if anybody here remembers but Back in the in the early pc days Division by zero was such a difficult problem that the pc stopped working when he did one Yeah So so it's it isn't like There is if you have those expressions. Yeah, exactly. Here we go back in the old days but So there are there are error situations which don't yield through our faults and and I think for for the purposes that we have here where we really want to have a Ultimately, we need to have a filter expression language I'm not sure whether overloading Every operation with a special definition that is like if you encounter an error here Then you are true and then your faults whether that is something that developers will understand because Developers usually don't read the spec They go and say oh, this is sequel and then they're going to say, okay. This is sequel So I'm just going to go and do a sequel But then if you so now you're throwing up Uh, effectively Side effects for error conditions That might be just too complicated for for the purpose here. I'm doing My idea was to do the exact opposite or remove side effects And so so the the expression what you're seeing is that the expression can return Three different states true faults error Right. Yeah. I'm saying that it should be four states So true no error false no error true error false no and false error and then it's up to Let's say to the subscription implementer to say a error is false or a error is true That's what I'm saying I I'm not saying we shouldn't have errors and errors actually exist. So and the reason I'm having trouble with the I'm having trouble with the combination of true and error Like how can you know that an expression overall is true if you had a single error evaluating it because then You can't know whether the the intended result was true or false Like it can never be true Well, if the operator always define if every function operator are total, there is always a return value On it's defined in every input there's also there's the also doing total evaluation is If you already so you're you're running through an expression tree And you already know when you are hitting the first condition In the short condition and then and then that is false And then you have an end and the final is a complex complex expression. Are you going to run through all of that? If I want to return Without uh, and if I want to continue the evaluation after the first error, I can do that No, no, no, I mean I mean like like you have a long knowledge to expression if expression a and Expression b while b is a very complex nested further logic tree. Okay. Okay, and a is false Okay, are you going to go and even touch b because because you know Of course, no, but that that is a completely different point. You're you're talking about short secreting and that's a different point I'm not talking about short secreting here Okay I mean short secreting is is implied in the definition of the in the definition of the operator So but so I I think if you are running into an error in any condition You can never return false as a result true as a result That's not true like um Think for example An input value Is not there like for example, I'm assuming there is an extension The event but there isn't Okay That's that's one of the that's when when I thought that this error system I I had this specifically problem in mind. So you want to Evaluate an expression Where you're assuming that there is an extension and you are not checking with exists if the if the extension is there or not So you just try to use it and because of the definition of how you address extensions you get a Default return value, but at the same time it raises an error. So when you end up with the evaluation You may have true or false. Okay, because maybe It was just checking that I don't know string length less than 10, okay, if If the assumption, sorry if When you when you address An extension that is not there and that extension is a string Sorry, and the extension is not there then it returns a default empty string. Okay, so this evaluation will return true Okay, because this predicate is valid But it returned an error and in and this error will tell you a you are trying to to do You're trying to evaluate a predicate on something that doesn't exist so and and this thing might be reasonable for A subscription implementer to pass Okay, for a fit that this may be valid Yeah, I'm I'm having a hard time I'm having a hard time letting anything pass if there's an error in the evaluation Like that for me, that's a false as as Doug just wrote in in in the chat An error for him isn't implied false and that's that's that's the same same for me as well Like I I said, I don't believe the I don't believe the true and error combination is something that I would I would let pass in the product Well, you can always you can always then go and when you use this Language you just assume error equal to false and and you sure see quick errors So you won't so after you reach the first error you just drop the whole computation and yeah, you can do that From from a spec point of view. I'm saying You could do both It's up to you But for interrupt sake once you need to have the spec be clear about which one You know what what happens in the error case? Otherwise, you're not going to have interoperability, right two different endpoints or return different set of filter results Well, but that this this spec is about the language when we will go to to work on the interrupt with subscription We can just write in the subscription error equal to false Oh, I see what you mean or If there is some flag say Errors are false I just invented a bad name But you get the point then Error equal false, okay Okay, yeah, if you think about things as a language separate from the other spec then I understand we're coming from a little I still need to think about a bit. Okay, that helps. Thank you Yeah, and also also don't forget that we one of the reasons we are looking at this expression language is also for workflow people so For a workflow spec is interested in this so Right for them it may make again. It may make sense that true, okay, so Anything else at a high level that you'd like to bring up or any questions from the audience Do you make it clear that we need to look at this independent of the other specs as as a filtering language that could be used for Or I'm sorry as a expression language that could be used for other purposes besides just filtering I don't know if I wrote it in the document, but I brought one the first comment that I did in dpr is that there is a paragraph that I about About our displays with subscription api and I And I said I wish you would visit this after Okay Okay, yep Because I because yeah, it was lost on me that this would be used outside of filtering That's why my mind was stuck in that mode of true or false or everything I also wrote in the in the comment that clements Did about the the name of the spec itself? Yep Just just as a from a practical matter of How this might get used But the way how I'm using these three states of the of the that come out of the filter is If the filter is true I'm selecting the message if the filter is false I'm not selecting the message is the filter or throws an error I'm going to put the message into a dead letter queue or dead letter Place so that the message can be investigated. So I know what to do with those three states From our subscription spec perspective though I would assume that error is the same as false and that the fact that you're going to put error messages into a Dead letter queue is sort of an implantation detail Uh, yeah, but I need to have that that that's something I need to have all of the filter I need I need for the filter to tell me whether the evaluation was Failed to successful or whether it failed and because that message was was causing the the Was effectively running against the filter and would never be would never be true interesting Can you open up an issue or pr to add what our language you think is appropriate to the spec then So we don't lose track of that Is that a yes or no or Oh, can you open up an issue or pr for the subscription spec so we can add that or discuss whether you want to add that or not Okay, thank you. All right Any other top any other questions comments on the um on this pr If I might I I uh saw that there was a response and it felt like it was fairly high level I'm I've definitely learned that there's a greater context and intention for this uh expressing language, but uh, it's linky if you could speak to the question that uh Doug posed and I kind of uh added on to about why we wouldn't adopt Something that's a little more of a standards with a standard with uh, libraries existing Um, I'd like to understand your honor. You're thinking about that a little better Slinky To be honest, I think I wrote everything in the comment I I don't know what else You you want to know about If you can be a bit more specific Eric is there is there a specific Sentence in here that you'd like him to expand on I I haven't fully processed this done be honest. Um I I think I I suppose I thought that uh the Some of the sequel specs, um would be sufficient for our use cases and Um, I I guess I'm wondering how in what ways they weren't uh sufficient Such that we need to go through defying a language and implementing Libraries and all kind of all the the labor network that goes along with that. I I can talk to that um, because there's that I mean there because there's prior to in two ways So jms started to do a subset of sequel And the reason why they had to go and write their own spec is um that They're only relying on the effectively the the where the condition the where clause And they scooped everything out. So You need to have so first of all you need to have an extra spec that is just capturing all the conditions that you want and in second sequel is very rich in terms of what you can do in terms of pre pre build functions and etc And many of those are not desirable for all kinds of reasons in the message broker because they end up being too complicated So, um, that also got cut down. So so so in that way the gms message selectors are a profile of sequel Because they're they're effectively scoping that down and then There are um, there's more constraints type model um that is in in gms um for in in terms of what message properties can can occur and then the select clause of Of sequel is absent, which means The set of properties or the set of fields that you can operate on is something that is effectively given by um the message itself Um, and so you need to have this you need to have any specification. You need to define um, what the message properties are what what what is the the space and what are the properties that you can actually operate on And so all of that taken together is causing the gms spec to have a its own definition of Of sequel More or less and then we've effectively borrowed that approach But as a clean room derivative of sequel because of um because gms has been defined by oracles is has all kinds of interesting um Rights associated with it. So we went for mqp and did a clean clean Definition of us of the sequel language, but effectively with the same constraints kind of down to exactly what's needed And scope out all all all kinds of complicated functions And then effectively define the input set To be the mqp message. So what's think he's doing here is effectively the same thing He's saying the input set for the condition is are the attributes of the cloud event He's constraining that down to a particular Um type system and then it's effectively simplifying the the the operator model such that it's it's scope to the type system that exists So that's that there's there's three time precedent for two time precedent for what snake is doing here Go ahead. The question is why why wouldn't we use one of the precedents? Total ignorance That's why I think stinky has been also has been boring Some language from the mqp spec so so I think I think we're leaning on the precedent here on the mqp precedent here and are using some of those constructs and my So my ideal outcome of this here is that this dialect here and the mqp dialect are Effectively compatible with each other But that this one is simple this one because of the more constrained this one Doing more constrained to the the cloud event and the cloud event being structurally simpler than than the mqp message that that we can That this implement then the language here is simpler and it's easier to implement and you don't have you have fewer moving parts We have more moving parts in the in the mqp um In the mqp filters, but it would be great if the if this was a true super True subset of Of the mqp filters And I think that would that would that would then achieve what you're what you're looking for Thank you so much for sharing that knowledge and couldn't have accessed it so Let me try to get a crisper answer right because you kept talking about subsets profiles and stuff like that Is what's defined in here today a true subset or profile or does it add things that other sql Specs don't have the one thing that is that silky added was the Are the the typecasts Which work differently in sql and mostly sql tries to avoid them Entirely with type inference So so you use casts in sql in in cases where you just can't get out of I can't get I can't avoid them completely But the constraints we have here with our type system, which is effectively consisting of strings rules and And ints Even though We have a timing type and so therefore we need to go and add time here and we haven't that's a comment that I forgot to add So we're effectively just dealing with four types And with most of those types, we will be able to deal with inference For most expressions so that the typecasts as they are Are probably not necessary. I think But everything else is is pretty much along the lines of what standard sql looks like Sorry, okay. Sorry. What what uh, what comment you forgot to add And the ways of the time type At the time type. Yeah. Oh, well, I I I kept it out of the discussion for a moment. Yeah Into discussion I I would love to to add it later after we go forward with this one Okay Let's go. I would love to go step by step if we can so yeah, and that makes sense all right, uh, think You might have covered everything on here, but let me just ask one last time any other high-level questions or comments Otherwise, we'll just take it offline and work in the pr All right. Cool. Thank you slinky for starting this. It's very good um Eric Did you want to talk about this or did you want to take it offline? I think there are a couple of questions that have been added offline I do want to continue offline or do you want to Do a little bit of discussion on here on the call. It's up to you Uh, I'm I did a good job lathering on last week. So I'm I'm sure if anyone has questions Well, I'm willing to talk about those but um, I don't feel that we need to Okay, I don't mind doing mine offline. I think Clemens. You said you made a comment Did you want to comment here Clemens or do you want to just do it offline? Um, I think this is a good I think that's a good discussion to have to just continue to continue offline. Um And what is what does github do there with the ads and stuff? Anyways, um, yeah, internet Oh, okay, great. So, um, yeah, I'd like I'd like for I think that's a good good discussion to have to have there Um, so kind of land in the middle because um, I think there were Eric had some, uh That's a fairly complex Thoughts here that would like to see some examples of the aggregates and and various domain systems and I just gave an example that here with How are we how we've been thinking about this in opc? and Yeah, let's let's let's let's let's dissect this a little bit more in in writing Okay, because I got offline Cool. Okay in that case Clemens, I believe you had a discovered topic you want to bring up. Did you want to share your screen or yeah? I just want to I want to share a slide and just briefly to talk about some thoughts here Um, sharing the slide Sharing the slide Oh now I see the button of sharing the slide here you see. Um, that is the right picture Okay Can you see it? Yep Fabulous. All right, so um The reason I want to show this is just for um Because this might be a none a none obvious scenario and we have this So we have a customer called fabricam That clouds works at and It's not fabricam, but you know, we protect our our client relationships and so and they are building fairly complex software and that complex software wants to make Use of event grid in our in our world to go and publish events into an azure subscription and the problem is that those azure subscriptions are their own boundary and If you want to go and deal with identities, etc Then you are effectively all within that in that tenant and within that subscription That's where your that's where your scope is And it's and we want to keep the tenant isolation. So we have this thing we called partner topics which allows you as a as another tenant because these are both you know fabricam is a customer of azure and then contoso is a customer of azure and what Fabricam wants to do is they want to go and publish from their application That moves inside of azure or outside of azure And they want to go and publish into someone else's subscription. So we need to kind of tunnel those things um So now discovery becomes interesting because here in fabricam the fabricam app has a subscriber endpoint and has a discovery endpoint And discover endpoint provides information about what's available from from this fabricam app um to others to subscribe And what they want to do is they want to go and deliver from that fabricam app somehow events into this application that sits over here in contoso but Since they can't they can't reach over here directly Because there's different security scope successor, etc. They are um Effectively required to use this bridging mechanism AWS has something very similar to the call event bridge. Um, and so event grid our event grid partner partner Infrastructure is the same thing. It's effectively. How can you go deliver events from one tenant space to another tenant space and allow Over here in contoso, right? This person needs to be authorized to subscribe to those events But those authorization rules can only be expressed within the scope So there's there's got to be an administrator Which says yeah over here in this application you can go and subscribe to events from fabricam But that all happens inside of here. And so and because of that We need to have this we need to have any to have this bridging mechanism. So um That all set as as set up Um, what what we're thinking about right now in terms of discovery and subscriptions is the following that We're going to as you are registering as you're saying, you know, I want this application to be available for event subscriptions over here That you are effectively telling um this thing This partner topic That there's a discovery endpoint and a subscriber or endpoint over here in this application and then The developer here or the automated application will talk to a discovery endpoint, which is put up by this partner topic But it's really a proxy to this discovery endpoint over here So you're getting all the events are being made available all the services that are being made available Through this good discovery endpoint you get get them kind of proxied into this space And what we're doing in this proxy is we're going to rewrite All the subscription your eyes such that they point to this subscription endpoint So so all the events and everything that's available is going to be original But then we're going to effectively Fake up the subscription subscription endpoint and redirect that to here And then if you want to go and subscribe you come to our Endpoints and then our endpoint will walk up to that subscriber endpoint over here. It will say hey Fabricant app you can now start emitting events It will go and turn around and will and and we will tell it to go and deliver those events into this event shoot here that we have in this Platform level endpoint and then Once that succeeds we now have that correctly set up so that fabricant will start pushing events into this platform level Endpoint which has a filter set up so that it will go and deliver into this Topic which is then you know in this Azure subscription And then once that succeeds we will then go and set up the subscription from here Into the application that the developer actually wanted but the developer will basically go and say subscribe me The events is subscribe me these events into this function That's all the developer will say and then from the background We will go and then go and trigger the fabricant app to go and deliver events to us and then we will go and then React to a successful subscription by actually setting up the subscription here If you unsubscribe then we're going to do the we're going to undo that's that that That flow so I just wanted to so that's that's the thing I just wanted to explain to you on how we how we think the we might go and compose the discovery Endpoint and the subscriber endpoint such that you can subscribe through A proxying infrastructure effectively through one of those those kinds of event bridges Um into an application while keeping those scopes separate Questions. Yeah, my hands up. So just want to make sure you understand It's actually your proxy your discovery proxy endpoints on the left hand side That's talking to the right hand side discovery endpoints to figure out who he was going to proxy right It's not going through the green box to do the discovery stuff, right? Um, we haven't decided yet. What exactly that flow is because that might be that might So this is all of these are logical lines at this point Because there might be some firewalling happening here and and it's not the same networking scope So so that's not exactly figured out yet, but logically. Yes So this discovery endpoint proxy is talking to the discovery endpoint over here to go and drag up all the The information about what's available and what you can go and subscribe to And then it rewrites those subscription inputs to point to here so that we can then go and do the subscription dance Yep. Okay. Cool. And just just a comment then I think it was remi who actually had a scenario very similar to this where he had a gateway type thing where the His subscribers only know about the gateway and all the produce and event producers behind the scenes Are basically hidden to the end user. This sounds very very similar to me So I think this this could be a popular scenario since I think other people have mentioned it Are starting to mention it as well. So that's cool. Yeah, so I went I just want to want to Make that transparent that that's how we're how we're currently considering that and that's also so because there was I think there was also that there was also a point that Eric made to To the degree is like, how do you how do you propagate subscriptions? And that's kind of the one level subscription propagation if you will where you are interested in events from from a From a source that's one hop away from you Um, and how do you Make sure that this this application here doesn't need to go and publish everything it knows and all the events over here Just so that the they are available for such suppression over you. That's kind of how we're trying to How we're approaching the optimization of that flow All right, and now we'll unshare Well, wait, are there other questions or comments for Clemens? All right, I'm hearing any cool. Thank you Clemens. Just one last question though Oops, sorry sharing the wrong screen Are there any as of now? Have you experienced or have you come across anything that leads you to believe that we need to make changes to the specs to support this? No, um, that's the interesting part. So I think I think these the specs as they all hold up because we can We can get away with just manipulating the discovery the discovery Data that we're getting back um There there will be impact I can promise you already in terms of how we're doing the authorizations pieces I think for the discovery subscription and and um service registry apis We'll have to be a bit more concrete on on Authorization that we have been with cloud events core and also with webhooks because um There's those relationships with that I had in the picture um Can get fairly complicated and the only the only thing we have Right now in in the standard space that can approach That is the open id connect plus off. So I think we're um, we we should go and double down on those mechanisms We don't need to be particular about what grants and claims, etc We need but having the right set of fields, which means you need to have an access token or a refresh token And those things stored and and talk and talking about that will be very very helpful Unless someone someone says yeah, I have an authentication authorization framework that is also standardized is much better than that I think we need to Leave the authentication part quite open also because there is so many different type of authentication that I don't think we should Like uh nail it down to only one author right authorization authentication There's there's a hundred thousand things but in terms of authorization frameworks, there's not a lot of choice Yeah, okay. Uh, yeah, I need to see the concrete part Right Klaus did you want to say something? Yeah, so, um, it's also quite similar to I remember in the beginning when we started discussing discovery and subscription I was talking about eventing domains forwarding subscriptions and discovery data to each other So it's also that direction. I think yeah, that's right. Yeah, you had you had a you had a picture that was fairly similar to this one Yeah Thinking and thinking through thinking through that scenario again, that's where I'm landing. I'm also I'm also worried about um You know in the discussions that we're having without disclosing too much um There has been an awful awfully large number of boxes on one visit a diagram which um Um, it's a little scary And so I'm trying to figure out how to deal with the least least possible number of of elements in this game And that's kind of how I'm I'm landing there right all right cool Thank you Clemens for all that. It's nice to know that the the specters need to change as of right now Aside from your credential stuff you mentioned last week um Okay That's it for the main agenda Just a nagging reminder for these folks Clemens and Lance you guys have some things to work on And in terms of any of the business, I believe slinky you had something you wanted to mention Uh, yeah, just want to mention that uh, I've released the sdk job you do so Very good All right. Thank you With that we're at the end of the agenda. Are there any other topics people would like to bring up? All right, not hearing any Lucas. Are you there? I'm here. All right. Did I miss anybody else for the attendee list? I think I started everybody All right, not hearing anything then Everybody's free to go unless you'd like to hang out for the discovery interrupt call which will start in about a minute or so Okay, thanks everybody for joining. We'll talk again next week. Have a good day. Oh, Scott. That's a bummer Why don't we go ahead and get started? I don't think we have a lot to talk about here. Um I'm not sure where to begin So let me let me start with a question. I know As I think Clemens you've probably been doing some coding recently because you keep hinting at it Uh for him for Clemens or anybody else. Are there any questions comments anybody wants to bring up relative to actually coding up The scenario itself Anything people want to mention? Okay, not hearing anything. I'm just going to assume it's just a matter of people finding time to do the work Yes All right, so that's that's fine. I'm in the same boat. I unfortunately have not touched keyboard relative to this in quite a while So then I think the question is Do we want to import impose do we want to impose a forcing function? To to move this along like pick a date for when we want to do an interrupt because I know originally we pick a date in November Which obviously we did not do But do we want to pick a date to try to force us or is it too premature because Some specs are too much in flux right now like Like the subscription spec is going through some major changes and stuff like that. What do you guys think? I like the date Because it puts pressure and without pressure. I'm kind of a lazy boy Yeah, without priorities. That's like I'm top of the pie I agree. We should set a date, but this we should should set the date a little bit out But um, yeah, we should we should have that I have a I have a discovery input now that I'm not sharing yet, but yes So we should we should we should set a date. Um, but we'll need to have I need to have a little time to To get time. I only get tiny slices every week to kind of deal with it Do you want what about like, uh, the kubicon date? I don't know. So I can If I have to talk I can't remember. I can I think it's in May Yeah, you it's like in May. No beginning of May 4th. Yeah may 47th That's a little that's I think that's a little far It's too far. It's it's good. That would be that would be great if we could go and shoot So yes, that's the target date for for for saying yeah, we show we we tested this out and it works That's that's that's good. I think we should go Yeah, that was my point Yeah, okay. Yeah, so I do agree with you. That was like my target with the scope that you just said so It would be nice to have something that works. So effectively. Yeah, we need to be Done before because it's not gonna work for first try I guess So if we if I understood you guys correctly there, you were saying Make the end of the interrupt testing be coupon But we need to pick a start date So I think end of March, we should be already And then do the testing during a year or no, yeah, I agree Because other than the end of March, I mean we're already end of February. So and with our pace. I think it's already a short time That's true. This is this is a fast progressing standards body. I so It's that's okay. Okay I heard the patients so Anybody have any comments on these dates as at least uh as a rough guess obviously we need more people to to chime in Are you asking to do uh demos after march or after starting march? I think so the way I'm interpreting it is starting end of march is when people should have their end points up to start doing some banging on each other And between that date and kubcon is when we basically do debugging and possibly Pretty things up so that if we decide we want to show something at kubcon we can That's why I'm interpreting it, but maybe I went too far with the show something part. But what do you guys think? No, I think it's good the way I see it Because I think I'm the one talking or at least for one part So if I have more material Is that sound okay david? Yeah, that's fine any other comments or worries about these dates Okay, I will try to remember to mention this on next week's phone call since I know people like scott I think as a conflict Periodically with this call so you may not notice this may not notice these dates So I'll try to remember to put it on next week's agenda to make sure people are aware of it and see if there are any concerns Okay Just for just for as a as a tiny preview What I'm doing is I mean effectively doing a I take an entire azure resource group Um, and we'll go and fill it with stuff that goes and raises events And then you'll be able to get the the actual events that are raised by the product You will be able to go discover those and And subscribe to them through the through our subscription api here So I'm trying to make this as real as possible as it would be with azure I was gonna say real is good. That sounds cool Yeah, I have to and I'm also gonna publish of course. I'm gonna publish your code So we will see how much I have to go and fake up which is a ton but That's that's pretty close to how the events are going to show show up later All right Any other topics people want to bring up relative to interrupt on They just matter of finding time as I said All right, in that case, I think we are done for the day Right around the hour and don't forget. There's a mars rover landing tonight Or actually today for you It's landing on mars NASA perseverance is landing today I did not know that so it's It's going to land at 10 my time. So that's going to be whatever 355. I think your time. Yeah, four o'clock. That's interesting Yeah, so just out of curiosity. When did it actually take off? A half a year ago That's pretty cool. Yeah, this is the time that that's so there was a chinese Arbiter a ua you are we are and and yet another orbiter which all arrive kind of within the week Because this is the week where the the earth and mars are the closest effectively Or at least from the trajectory perspective and that's why they all they all show up known this week And do you know What what is the what is the thing going to do when it's on mars? It's mission is its mission is to to know how to finally detect life It also has microphones for the first time and it has the mars helicopter Helicopter. Yes, cool I was I was at I was at um, I was at jeff bezels first mars conference And um, that was in there was 2016 And there they were already showing off the the mars helicopter Concept and we're talking about how they were testing it um, which is quite interesting because mars has an atmosphere which is like the 10th of the density of earth with a third of the gravity And so doing the testing of the helicopter whether would actually fly with the combination of these factors Is is really difficult. So they've been testing in in in half vacuum tanks that they were then Throw that there were floating in tanks and all kept doing throw them off of Towers and all kinds of stuff just just have to write environmental conditions to see whether they can get the thing to fly Yeah, I was wondering about that and then the the the fact they have a microphone That that should be really interesting to see what it sounds like over there. That's that's gonna be so cool Thanks for bringing that up. Yeah That is cool. All right. Any other cool topics people want to bring up All right, the most exciting thing we talked about all day. That's neat. That's yeah, that's what that's what I'm gonna do That's what I'm gonna do pretty much now Yeah, all right in that case. Let's call it a thank you all for joining. Talk again next week Bye. Bye. Bye everybody