 Hey you made it. Hey, hello. Yeah, so we're getting some I assume you're getting weather because of the same storm we are right though that hurricane zeter or something like that, right? Yeah, it was pretty bad this morning Was it? Yeah, it's it's been a little windy up here In Raleigh, but nothing too bad at the power flickered very very quickly once but nothing too bad Yeah, that's good. We had like 60 miles per hour winds here this morning Yeah, and my dog is she's so scared of the any sort of storm so she decided to like jump on me and wake me up I'm pretty much done for today Yeah, we're supposed to my wife was telling me that She saw a news report that said yeah We're potentially supposed to get 60 mile an hour winds up here as well But I don't think we got anything quite yet. And my only worry is that I Have two Actually, it's including this I have three phone calls where I kind of need to talk a little and so if I lose power That's gonna make it harder and one of them is with a customer. So that's that's not gonna be good So let's see how it goes. Hey Christian How's it going angry stomach? That's not good Going better today, hopefully. Oh, yeah. Yeah, that's good So I can never tell how sensitive my microphone is can you hear a song in the background? No, actually Oh good They got work going on in the background of the house Yeah, the thing about it is it still distracts you as the speaker and it's like if that's it's not bothering the audience It's just oh true. Yes, but as long as you guys don't hear it I can you know, I'm okay with myself suffering, but not you guys. So, right? Yeah As far as I'm concerned you are clear. Okay good. Hey Tommy Yo It's weird. Oh Usually I'm more people showing up by now Do do do hey ginger Hey, Doug. Oh Wow, there's a picture with you now. Hold on a minute. I can't zoom it. I Forgot I put a picture on there That was for some other call. I didn't want to be on video for All right here Hello, how's it going? Hey, Brian Hello How's it going? So Christian, you're sure you can't hear the saws, right? Cuz I they have two of them going down in the background. Yeah Okay, okay, perfect. Thank you. It's just amazing. You can't hear that Lou, are you there? Good morning. Yeah. Good morning. And there's someone else went flying by oh Lance. Hi. Yes. I'm here. Hello Manuel Hi Hey, and I think I was marking there All right, so oh heads up There's a storm Sort of on the East Coast someplace So far my power has been good, but if I for some reason just vanish It's not because you guys pissed me off or anything. It's just I lost power So someone else would need to kind of take over at that point. Would that otherwise be a common occurrence? What what me losing power or getting pissed off? That's pissing off and you leaving Well, I haven't done it yet. Not that I haven't been tempted but no No, you guys are never heard Doug angry before. I don't know what angry Doug sounds like, you know, you know, it's funny I someone else has said that to me fairly recently and it's weird because I do get frustrated quite easily So it's interesting that people have said that they don't know what angry Doug looks like so Anyway Hey Clemens Now there's a guy that'll get me ticked off. Hello Hey Clemens I have I'm so narrowly missing the Out on being able to present something to you all guys all you guys today Could get the homework done You had homework I had self-imposed homework with the replication model for the schema registry, but I am I've just got distracted and I'm missing an hour of work on it. So I'm late All right. All right one last attendee and then we'll get started. Scott are you there Howdy, howdy. All right, let's go get started. I think I got everybody all right, um Community time anything from the community people want to bring up All right, moving forward So I can't remember if I mentioned this last week or not, but I did manage to get I think some fairly good times for coupon office hours Again, if you yeah, I'm not remember. I did mention it. Um If you'd like to volunteer, just let me know and I'll add your name to the list as we get closer The nagging will increase. So please think about that Uh stk call schedule for this week. Um as of right now, there is nothing on the agenda If we don't have anything by the end of this call, we will cancel um interop so Um, I did do some minor updates to the interop doc itself. Please take a look if you get a chance nothing major Uh, I think the biggest thing there is I realized that we probably should have a common service that multiple people can implement So that we can do some testing because if you're just a random service Uh, um, it's gonna make it harder to to do any kind of testing if you don't know what the heck you're actually subscribing to Um, so I just did a quick pink little pink service. Please take a look if you get a chance I was wondering though Since we're supposed to be doing something real next week in terms of interop Whether we should have a time for us to get together to talk like maybe tomorrow or something or maybe monday To sort of get everybody together who's planning actually coding something. What do people think? Yeah, it would be great Okay, do people want to meet tomorrow or is friday a bad day for folks and we should push it out till monday It is Not good. Okay. Um, what about monday? Can we try to pick a time right now to try to meet? So quickly everybody grab your calendars Would this time on monday work for people or not? I'll actually keep in mind. There's the time where it's a switch over So we're going to go back to being six hours difference at least from east coast to central europe On my side, that would be nine to ten uh, that's easy. It works Okay So noon eastern people work for people or not? Okay, scott you work. Thank you anybody else? Let me turn it around anybody object to not um noon eastern monday Taking into account the time shift Cool Okay, let's let's try that and see how that works Let's set up a some sort of async communication there too. Just make sure that if you can't we you can still participate Yeah, and we have to have the um The interop slack channel if you're not part of that, um, let me know and I'll I'll add you Okay, cool. So same zoom That's normal. All right, cool anything else relative to kukon or Discovery interrupt that we need to talk about All right in that case tim or anything you want to mention relative to the workflow Uh, yeah, just quickly we moved our website to netlify So now we don't have the silly redirects to the github pages anymore um We moved our team meetings now to weekly meetings. So it will be Every monday now instead of every other uh weeks. We should make it clear And just doing overall improvements our issue section has uh become quite large This is a good problem to have so yeah, that's it for me. All right any questions? All right moving on then Okay, let's jump into pr's Let's see. Who's the first one? Come on Anish are you on I don't see a niche Um, Eric, do you mind if I pick on you a little because I know you commented on this one. Maybe you could Summarize That's right, you know, that'll teach you. Um, maybe you can come in and what he's done here and what your concerns are Eric, uh, yeah, sorry. Yeah, yeah, uh, you problem problems Late night um Yeah, so he switched from uh, really kind of focusing on vendor implementations of security protocols and uh went ahead and It was more general. Um It mostly uh, there's a word smithing sort of a complaint that uh what uh It He expresses that the the concerns of security aren't necessarily a part of the core interest of the spec And I don't think that's quite capturing Or what I would where I guess the position of the group is on it And that would be more like these things are of core importance and we need to support them being possible. There's a Need for us to do that in a way that doesn't king make There's a lot of difference in opinions on how to solve these security problems or whether some people want to solve uh particular security problems And there's a lot of different solutions. So uh, and and not only that as these solutions evolve over time and so we want to allow for the ecosystem to Continue to react to changes as they uh shift preferences. Um, and I didn't feel like it really captured that. So it was The rough bit of my comment Okay, but you said it was mainly more word smithing than anything else, right? Yeah, okay Okay, I don't see uh, and he's still in the call Aside from actually let me go ahead and show you So here are Eric's comments. You guys can read that if you want I'm wondering from anybody else on the call um Are there general concerns or people okay with the direction that Anish was going here? Modulo any word smithing tweaks? I think that captures what we were The why we scoped out the security the security aspects Because we didn't want to sink the ship by By pulling in security right, um, I don't think that I don't think that precludes that we might have a Um an extension Uh that will define it. So I'm still having the I'm still having the vague notion Um without having thought about the deeply more deeply that we can go and and do a mapping of smine to cloud events Um where we would effectively use smine to encode the body of a message and then would have Um exactly like an email have additional attributes which would then Have the the required hints that we have Around algorithms, etc Um, but that would be an extension that doesn't require any changes to the core spec. So Yeah, so I think this really reflects what we what we want to do and that we didn't want to have the W star w security nightmare kind of dragged into the house right Okay, anybody else want to chime in? okay, in that case, I'm going to assume that Um And each will respond to you eric at some point in time You guys can go back and forth on the word smithing, but it sounds like general direction is okay So we just need to wait for this issue or this um set of questions or these set of questions to be resolved Is that fair? Okay, and these are He probably hasn't seen these yet because it was just 22 hours ago So with that, we'll keep moving forward and hopefully that'll be resolved for next week All right, Manuel this one's easy Just a typo change here, right? Yeah, in the upcall I figured that that was this typo. Yep, and it's clear It's just a typo should be data schema any objection to approving this one I apologize. I would have normally just accepted this one But since I didn't notice it till last night, I decided to wait for the call So thank you for noticing that what is today 10 29 Right, no objection, correct Perfect, okay, I'll close that one out later All right, this one Um, like Manuel, I was going through some of the interrupt stuff And I came across the you this into the discovery respectively behind the discovery I was looking at the url field and It says it's an absolute uri to reference the service. However as I was reading that Because it had been what since I actually played with this stuff I I couldn't remember for sure if it was the url to the service definition in the discovery endpoint or the url to the service itself And this sentence that I've highlighted here was a little bit ambiguous related to that So I just made it clear that um reference to the service within the discovery endpoint I think everything else is basically the same So hopefully this doesn't change the definition that people had in mind It's just I think makes it a little clearer what it's actually pointing to It's not the service itself, but the discovery endpoints definition of the service Any questions or comments on that? Any objection to approving? Perfect. Thank you All right next and Clemens, I'm glad you're on the call because I think this is mainly in the discoveries and the Actually, I think I do hit the subscription spec. So this one again was because of the interop stuff I was doing So first of all here in the discovery spec in the subscription config section It's a it's a map of key value pairs where I believe the value is One of the types conforming to the the crowd event type system Okay So rather than putting value here. I decided to change it to to the word type just to make it clear It's just not some random value. Okay Um, and then just a simple typo here. So This isn't your part yet Clemens, but I'd prefer everybody else. Are you okay with changing the word value to type? Just make it a little bit clear Any concerns with that? Okay, now Clemens again to your stuff. Um, okay first of all I was assuming that id needs to be unique within the scope of the subscription manager I'll um, then back up a little this is the id on the subscription object itself Yeah, so I was assuming that the id needs to be unique within the scope of the subscription manager and it's immutable Is that your assumption as well? Yes Okay, does anybody else disagree with that? Okay, moving on then next You had this as filter enough filters. I assume that was just a typo I make a lot of typos hang on. Um This is uh, no, it's oh wait, it's a filter I was assuming each subscription could have more than one filter No, that was intentional to be one filter and not to make them more more complicated because what more filters kind of starts breaking into jail on how many and then How computationally expensive that gets and so That we we try to keep the filter simple um and uh So that was the the goal was to not to not to make that more complicated Okay, um You literally have like if you have one subscription If if you have if you have a subscription the subscription has one filter If you want to filter on on something on something yet different um Because subscriptions is something that you can Better put a quota on than having, you know, the number of filters Okay, and in that case down below you had the word filters Right And so one of those is to his typo then right? Yes, so one of those things is wrong So I the intent the certainly the intent that I had Oh, I don't know what discrepancy comes from Um, we were working on this With a few folks and I didn't I think I didn't do the the language piece The filter language piece. I forgot who did this Volunteers, I think it was right Yeah, yeah, that's true Yeah, so the intent the intent was to have one filter Okay, does anybody who was working with with Clemens on that section disagree with that assertion Yes, I believe all these we need to change Is that correct? If we do with this one, yeah, we have to go fix those Okay So any any disagreement then with keeping it is just one. So I'll get rid of this change here Uh, I do agree with the logic Okay, cool. Um, okay. We'll circle back around to the other filter stuff Next was I didn't see a spot to put Okay, let's sort of back up So up here we have a subscription config with the new with listed name value pairs Okay, I did not see a config section in the subscription Uh resource now there were two ways to go here One was these just appear as top-level entities But I got I was worried that that would conflict with the extension stuff So I thought okay, maybe there's just an oversight And you guys forgot to put a config section to put the key value pairs from the subscription option or from the subscription config thing in the discovery endpoint Um, hang on We I had thought of that Okay Um There is a protocol settings. Did you see the protocol settings? I did but I thought those were specific to the protocol and not necessarily about the subscription itself That's why I thought it did deserve its own section. So what are you configuring them? Well, so for example, one of the things in the interrupt doc that I have Is I defined a ping source And one of the config data one of the information inside the picking source is how often to send a ping Um, what's the interval right? So that has nothing to do with transport level thing That's how often to send the ping five seconds 10 seconds that kind of stuff That's the kind of config data. I was thinking of um Is that a subscription? It can be you if you want you could think of it as um Well, let me let me stop there. Yes, it is a subscription the sense that I want to get events every x seconds So I'm subscribing to a ping service and one of the configuration parameters is how often to send a ping But but isn't it isn't the ping service? So if we do pop sub Then the ping service pings uh every x seconds and then And then you're are you filtering on this? Because you can as a subscriber you have no authority to to tell the the the publisher what to do It depends on what you're setting up, isn't it? So for example, if I'm subscribed Okay, let me give a different example. Maybe one that's easier to follow. Let's say I'm subscribing to a cloud object storage Yeah, I need to spend I just specify what bucket to watch Yes, that would be a config data Uh, that is that is the subscription scope That is what you subscribe to that that is that is our That is what we what we think of as as a source So I I think So let me ask this So I think what you're basically saying is you would think that would be part of the url that you send the subscribe to Yeah Is isn't that an implementation choice? um Well, we need to the fact we need to figure out how Let me let me go to So let me give me okay. Let me give you another example What and maybe this is part of the filtering thing. I don't know but what if you want to get just creates as opposed to deletes For the cloud for the cloud object storage Right, I think you could specify that as a filter. You could also specify that as configuration option That's a filter on the type Could be yes So let me let me actually ask you a different question then Was it your assumption that all of the All of these subscription config things appear as transport level things um All of those so the the subscription there's I'm I don't think we've we've done Um a good enough job here to be maker make it concrete with the What the scope how we how we define what the scope is for? The the subscription manager really um, but the subscription the the the subscription operation should specify the scope at which you are subscribing And I'm assuming it does in some way Hang on How are you defining scope in that sentence? scope means What is the what is so the event producer? or a little bit washy washy here three two four one is of the original document is um The create operation should be supported by compliant event producers It creates a new subscription. So the assumption here the the implied assumption is that you effectively the event producer has a Exposes that interface or someone acting on behalf of the event producer and that kind of implies and that needs to be clear that That you have a subscription you have a subscription endpoint Where the endpoint already reflects? the scope The scope meaning what are events raised for so Meaning you would walk up to an endpoint that already reflects your storage container And then you know it has that encoded in the your eye that you're talking to And then on that your eye on the container itself you asked to be notified That's the that's the inherent assumption that that exists there That it's not that it's not explicit in that spec But that's kind of what's in that that was at least that was in my head when I wrote it But apparently it didn't write that down So to to dumb it down for me it sounds like you're saying the scope is basically the url Yeah And so and that's also so that's also how so the subscription you're exactly so that's what the subscription url is effectively there is a And this is the interaction with the discuss with the discovery with the discovery spectrum means it's still need to go and resolve Um, so this is a good discussion to have Effectively the question is what is discoverable in as a as an entity inside of a system So are we are we publishing in discovery all the containers of that sort of of of the storage system? We should Because it's the if the containers are the ones of which are right which are raising the events Then then those are the ones that shall be that shall be published And they should have but they should have subscription URLs if we say we take the entire So containers or buckets or whatever they are right? Or we can say We're going to allow subscriptions and we're going to publish as a service the storage account Or you know, whatever other entity we have Then that thing will be will be published and that has a subscription URL So I think ultimately The things that we put into the discovery catalog Are defining what the scopes are on which you can go and and subscribe Um, and then um, and you can go and filter those down. That's why we have all the metadata there Right, and then once you have found the exact object that you're interested in in subscribing into You know knowing all of the events that it has and all those things and that's kind of what the discover api needs to give you Then you just go to that subscription URL and say and that's why you issue your issue your your your post request To go and create that subscription Yeah, I think I get that and and agree. I'm still trying to figure out though what we do with this stuff Um There that what's required there is that effectively all the The protocol the protocol definitions that we have in that are in this subscription Um When you subscribe so when you subscribe Um, there's so you have a list of protocols here. This is in discovery You have a list of protocols here which are supported by that by the By the um publisher or sorry by the whatever the middlewares So by the publisher in the simplest case But by the middleware in the delegated case Or you can go and choose from so you have protocol. Let's say this says, um, hdp and mqp the The subscriber No now knows that hdp And if we want to list hdps hps Or if we want to say it was oh hdps only whichever prefer Um, this is subscriber now picks one of those protocols but the subscriber if we're assuming a push model Will so let's do that first the subscriber will Then it it knows what its parameters are Because it exposes a webhook and that webhook has a certain set of parameters That need to be configured on the on the subscription endpoint To for the subscription to be established. So it knows its own uri It knows the the the authentication key that needs to be set and whatever So the all those parameters is something that the discovery service can't know And they can't be configured because it's really about the thing about the subscriber that wants to go and subscribe um for For pull subscriptions So when you want to make this this effectively ad hoc available So let's say this were the subscription URL would be pointing you to an mqtt broker Because that's possible um, then um We need to assume That based on the uri The client has already permissions Because of course we can't tell the clients um You know credentials or or permission data In here unless you want to go and embed that in in the uri Using some kind of token, but but if you if you say, you know, here's a here's a service And the service allows you to to obtain these these following events And they're being exposed for mqtt then your subscription URL will be an mqtt topic And that implies already That um, you're going to use the mqtt protocol directly and not the subscription api to go and and obtain those events So the subscription URL effectively also expresses that Hey, I'm not sure that Okay, so let me do that again. I no no no, I think I understand what you said there I'm just trying to figure out how it relates to my question, which is Yeah, I'm I'm saying what are the what are these things? Yeah, so I'm saying I'm trying to I'm trying to say in a very long-winded way I don't know what you I don't know what you need that for Okay, okay, that that I understand. Okay, you want to kill that however It seems to me. Yeah, and it seems to me that There will be some event producers that may Want additional configuration, right? I mentioned one for the pink servers in terms of interval and you question where that's a real event source But then I'm and I'm trying to steal ideas from the k-native world. So for example another one, I think From the k-native world is you can subscribe to github and one of the parameters you could pass in is a Is a key in essence that's then echoed back on each on each notification So you could verify that yes, this actually is coming from github as opposed to some rogue entity Now that's not necessarily a transport level thing even though Sure, it appears an htp header. I don't I don't view it as an as a transport level thing because it's not meant to influence the transport It's just an extra header that happens. I'm sorry It's just extra metadata that happens to be sent back as an htp header But they very well could have chosen to stick it inside the body Right if they wanted to okay, so that's but that's that's that's something that that would be on the subscriptions api That the subscriber would supply on the subscriptions api on the subscription api when it Uh So is do you want to declare those things there? That's what I thought this was for basically. Yes It's it's additional tweaks or or configuration knobs about my subscription that i'm setting up because I that I interpreted subscription config as configuration about the subscription Okay, so how do you So let's let's okay, so so let's work back from the subscription api Let's say the subscription api allows you to set headers That then can be played back to you, which I believe we already have in the Let me just and I'm just I'm sitting between a thousand specs that I'm currently writing So I need to go remind myself So yeah, so in in in three two two one in htp. We have headers And in three two two two in ktt. We have user properties And in in qp. We have you can set Um link properties Um and in Kafka we You can extract the partitions through I think we didn't set the We you could have also we could have also added we probably should Add the uh the application properties there. So there there are ways to go and set these values In these various transports. So if you want to go and set a set So yeah, so if you want to set a header Um that you want to have played back to you then you can do this with that with the htp settings True and I do remember this section right here that talks about that However, so what is so what is the so? So given given that construct How does that correlate to the um uh to the configuration that you have So to me I I view this stuff in here the htp settings headers in particular as different from The subscription config because this is saying I as a user. I'm sorry. I as a receiver of the event Want to manipulate the htp request coming in right? I want to add this specific header and that and And that's a very Sort of lowest level thing. Okay. I view These I view these where is it? I apologize I Good god, where is it? Sorry I view this subscription config is something different This isn't going to the low level of saying hey, I understand the transport because I'm a complete geek and I need to add this htp header This is saying GitHub has required that I pass in A key an api key of some kind or a token. I guess that's what I call now What github chooses to do with that token is completely up to it Okay, in this particular case. Yes, it's going to echo it back to me as an htp header But that's sort of an implementation choice Right. It may choose to do something else with this bit of information. So for example, I may be passing in um Never mind. I don't want to go there. I'll confuse it I view this is saying I want to configure My my event producer wants me to pass in some additional configuration information. I need a place to pass that in Because it's not necessarily a transport level thing And that's what I thought this was for okay, but but how does that how does how does that materialize in the uh In the flow back to the uh to the subscriber It may or may not right in this particular case I agree with you that it does kind of materialize itself back as htp header But I assert that there are other configuration options that don't that don't necessarily Manifest themselves As as like a separate property in the event that gets sent to you It's just it tweaks the way the producer is going to talk to you. So for example, the pink source is an example Right. It's only going to talk to me every five seconds versus 10 seconds so is that so so I I think what I'm struggling with is is the the This here is being provided to you by the producer That information is provided to you by the producer Which is then consumed and so the consumer the potential consumer goes and looks at these at this at the subscription config What does that mean to them and and how do they how what do you expect? How do you expect that that consumer now expresses These conscription subscription config values in the subscription gesture So my assumption was that a person who wants to subscribe will look at this field and say oh There's a key called interval and it's of type integer Now what that actually means. I don't think we can express here They had to go look at the documentation to say oh interval means how often to send the ping right And that but they can at least programmatically now once they decide they actually want to use it They can now fill it in with the number they want and that and this tells them exactly where it goes In the in the subscribe request And then in the subscribe request they would they would go and then pass in That extra config bit Yes, I was asserting or I was assuming what you guys had written was there would be something like a config bucket With the name of with a set of name value pairs where the key would be the config name And the value would be The value that you wanted that you want that you're trying to set to so in my case, it would be interval colon five For for a ping every five seconds Now if there if there was some other way I'm supposed to be able to express this five second thing I'm okay to that with doing that. I just it just seemed like for what I saw here in the specs That was the natural way you guys meant to go Um Okay, now I understand what you want Yeah, but but if this isn't the right way to go You know, there there are two things that I'd like to hear back then one is what is the right way to do it If not adding a new config section, but then the other thing is okay, then What is this thing actually for? So I have I have a use case. I have a use case in my head. Um That comes from um That a scenario that I have a scenario for your functionality I'm not convinced of your of your scenario, but I have one Okay, um, should we should we take the cue first before because you're not doing a lot of talking Or do you want to finish with that first? Yeah, let me let me just give you that briefly. Okay, cool. The um So in opc way and for everybody who's listening industrial standard standards for industrial stuff talking they have a notion of um subscribing to very fast streams of data Where you want to do a bit of aggregation, um before you want this or you want to only have Um, or you want to go and configure whether you want to have all events or whether you want to have key frames that Partial events or key frames So you want to go and modify the subscriber the the subscription somewhat relative to the event stream that's coming on so it's not full on aggregation, but it's Kind of some some modification of the events that you're getting So either you're getting sparse ones or you're getting key frames and you have a key frame key frame interval I can see I can see something like that been expressed here Um, so that seems to be So from that perspective, it's it seems to be a mechanism that works we I just find the I just found the the the You know the modificate the modification of the producer. I just found that a little weird as an example, but um At least it helped me remember the the key frame scenario If I understand you're sure what you just described there I think your key frame are being able to specify the the size of the frame Is is similar in my mind to the the ping interval. I was talking about right? It's so so so their scenario their scenario is that they um have a lot the lots of events and Sometimes the data for an event would be 300 different fields And of course, it's terrible to go and translate them all if they're not all change change that much so, um, they would only transfer the delta With each event whenever there's a change and then every 10 seconds they would go and force One full event to be sent so that if you if the subscriber comes late into the stream that eventually they're going to get all the data It's like it's like it's so it's like an impact in impact where you are getting just arbitrary blocks of Stuff that you can't deal with until you get a key frame that allows it to go sync up to the entire stream and know what's going on right Okay, let's go and go to the queue. Scott you're up first. I think Yeah, so I have some context on what you're talking about dug But I think the disconnect might be that the subscription api is intended to be subscribing to event producers that are already producing events And in in like the case of k-native you would there already exists several ping sources at several set intervals And what you're doing is selecting the correct source with the the right shape of payload And you're configuring the either the trigger or the subscription object Not the source All right, you don't get to change the producer you'd get to change the subscription And in that case subscription config where you say like I would like these extra headers that would be like The equivalent of like our ce overrides If you know if it was supported in subscriptions and triggers right right because you want to you want to find out which of the Like why are you getting these events and maybe there's some decoration that can happen for that particular request to subscribe to already existing event sources Not produce an event source because of a subscription which is kind of backwards So Scott help me Net net net net this out for me. Are you suggesting that subscription config is the equivalent of the ce override? It is the equivalent of that if it was supported in our subscriptions But we don't have the equivalent of this it would I think in the the equivalent in kna it would be a subscription that is linked to a function that decorates And then passes to the subscriber that you've specified So so with the current model that we have Documented where where do you think someone would put either the github api key or the The cron schedule for the ping source you you do not In both cases yes Uh, if if you're talking about knative So that's interesting because because I could see an argument that says The the pink source is just weird and that doesn't fall into this model I don't I don't agree with it, but I can understand that argument To say I can't pass in the api key for github that seems like we're broken Well, but because you're talking to a delegate and the delegate needs to be created. I think If we if we've removed knative from this picture and we were just talking to Github Then I think you would use the subscription config to pass in all the api keys and stuff It I mean like so this is where like knative becomes a little fuzzy because Ping source is a creation of a thing A github source is really a subscription to the upstream github api Right, so let's ignore the ping source for a minute and focus on github Because I feel like you said two things there And the github is good In the github case, I would expect that to be translated so So there's some service that's exposing the discovery api on the knative cluster that translates into Maybe the the simple case would be a github source A new channel for you And a subscription You're using knative terms. I'd rather leave knative out of it then Right, if I was talking directly to github and I wanted just to subscribe And github requires that I pass in an api key I think you said you agree that it would be passed in under this subscription config block Yes, but it's not always one to one on creating event sources What you're really doing is delegating up to some upper stream service and doing Trying to implement the subscription api for them Okay Sounds like an implantation detail If if the net of it is you agree that in the github case the the the token appears as a subscription config Right, then we just need to figure out where the subscription config field appears in the actual subscription object It gets more complicated because the discovery api could expose subscribing to a github Webhook, but it could also expose the ones that are created already for you that are available because we we proxy all of the existing webhooks at the moment So if you look at that you you would see several instances of Github sources that have been configured and then maybe this generic one that helps you Make all the the mechanics of trying to get those events to you You've asked me, right? I don't know In the one case if the source already exists you don't need to provide the key If you're a trusted no No, leave leave came out of out of this because I feel like you're you're mixing up Setting up subscription meaning talking to the event producer itself You're mixing that up with the idea of a k-native specific thing that says oh, you're already getting events into the system You just want to get them routed to another service And I think this is exactly why I've always pushed back on k-native is It doesn't transparently look like github. It's always a k-native thing. And so in that case The discovery api could expose a straight github Subscription api, which would take a token and then there's these k-native github things that don't take a token because they're already created And that's fine. I the the work we're talking about here I think is the former which is we are just talking about how to subscribe to github directly not to some Some github. I'm sorry some some k-native implementation choice that may or may not expose different a you know set up configuration parameters I think we I think we're focusing just on how do you talk to how do you subscribe to github period? Okay. Yeah, and then in that case, I think The subscription config would include things like What tokens are required? Right And so then I would go back to clemen say okay if if we agree that that is a valid scenario Right where the the person doing the subscribe to github wants to pass in or needs to pass in a token And that appears as a subscription config thingy from the discovery endpoint Where does that appear in the subscribe itself? And clemen while you think about that remit your hands up yeah, just When I hear you talking about the what the subscription config is and Like basically that's going to define the object that you send when you try to create the subscription for what I understand Isn't like right now it seems a bit limited like Don't don't we should just say the subscription config is just like your g-sense tina That define what you can pass as a config. So if you want to pass like complex objects you can And then basically it's up to the subscription endpoint to define what you need to pass and then it's you know like Super flexible. So when we implement we we may be refine it, but To keep it open for now because I have the feeling that We create limitation in the spec it You're you're a little hard to hear, but I think I think you're I think you're saying the same thing I am I think in the sense that this is just a set of values that the subscription Managers expecting from the subscriber And it's it's almost just a random bag of stuff sorry, yeah Again my volume. I really need to fix that that's my mic Yeah, the I was just saying that basically we should in if we want to keep it open We should just put a g-sense schema as subscription config that describe how Like what type of object you need to pass to when you subscribe And then the config needs to match the subscription config schema But then we keep it open and we don't Because right now it's kind of limited because it's a map for what I understand Go ahead Clemens. Are you gonna say something in there? Yeah So I understand I I'm trying to I'm worried about Over complexity making it overly complex at that point so So putting an extra schema there Or creating creating complex complex objects in that place Seems to be A little much for my taste But for me like It's really dependent on the people who do the implementation. So I would agree with you that the best The best is to keep it simple but Yeah, the So how much I think the question here is really how much of Flexibility and you know genericness do we want at this point at this place? And how much do we want to how much do we want to really want to go and specify quickly? So there's one thing there's so here's here's one piece that is that that might be contentious in terms of Of whether you want to go and bolt this down as a as a first-class thing but which would probably be helpful and Would probably be something that most people will use and that is Where would we put a refresh token? Or where would we declare that we want to have a refresh? So a free fresh token and an OAuth authorization sds Because ultimately we will have to have one and we will have to have that in this game And That's a parameter that we have to go and and declare We will have to go and and have a way to pass a refresh token in the respective URL of the OAuth Sds which can go and and trade that refresh token for an access token. We have to go and pass that somewhere but then the question is Do we Do we want to go and pass this in in these subscription country parameters? Which where they would go right now because they are not protocol dependent And they can be they can be used with with multiple protocols and they would be mapping to different constructs in the protocols Or do we say no, no, no, we're going to go and make that the first-class thing because my inclination is You would have to go and say you would have to go and say in the in the discovery spec here You would have to go and say no, this is an OAuth thing and and by the way, this is an OAuth thing where you have to go and You have an SDS endpoint where you have to go and trade with your refresh token And that should probably be in there and then there needs to be some URL that you have to go to to go and obtain the refresh token that you can then go and configure with your with your with your subscription So that's so that's one of one of the mechanisms that the mechanism I can and can now think about think about that Would probably go into the subscription config if we didn't care And if we wanted to make that everybody's individual problem But then it is a mechanism that is probably so common that we want to go in first-class it And then and then the question is in a how much how much is left to go into that subscription config bucket But I think it became really Even if I do agree that it might be like the common case for me as As a spec we need to lay it open And it's easier to say like for now and maybe like a new version will basically start adding those kind of constraints but Yeah, I would I would just see it as like a Easier to make it open and then maybe close some stuff down later And the nice thing with the JSON schema is then if you want to do to build a UI on top of it Basically when you do the discovery you can generate more easily as we say the form based on The json schema because it's a standard While right now in the type we have to define all the types and So, yeah, well, but that's what It feels to me. Maybe we need to separate out the discussion here. So remi I feel like you're bringing up the point of what we have here is too simplistic Maybe a simple type isn't sufficient and we need to allow for something more expressive And I think that's a valid discussion to have but I feel I still think the high order bit here is something that Clemens was pushing back on which is do we need this thing at all? And I I'm not sure where Clemens your head is at because at one point you said we don't need it But now based upon everything else you've said, I'm starting to think that maybe you're convinced that we actually do maybe want it You're just not quite 100% there yet. I mean, I I think this is I think this is something where you would really You would really modify the behavior of the subscription per se Well, you want to go and outfit that with particular behavior And it's something that is specific to Not the producer but really the subscription endpoints as a as a configuration item that you can go and provide Well, I view it as it could be either one and that's implementation detail Right because the configuration knobs here that I think that you could look at them as strictly as modifying the configuration manager I'm sorry subscription manager or you could look at them as modifying the producer itself But from the end user's perspective, I don't think it matters to them All they know is I'm giving this flag and I and I can set it and magic happens behind the scenes Right What if we take a page from cloud events And make this a url for a schema registry Instead of trying to put put kind of like the half settings here Just like the schema for the data payload in cloud events. We say the subscription has a schema It's over here if you would like to look at it I'm just helping you find that host and it's Open api endpoint or whatever it is And then you and then you Okay, so that payload Or so that schema object that you define there then Is that going to get posted with This the subscription request It's well actually I have a hierarchy. Is it the entire subscription request or just a subset of it? I think it's a helper pointer to the let's say the Subscription api has an open api document This would be the way to expose for this subscriber It says if you would like to understand how to hit this rest endpoint or whatever it is Here's my open api document that you can go look at so you can actually make it programmatic It has it has one Assuming it has one Yeah, I mean the subscription endpoint. We have a description api. It has an open api definition in our repo And but I'm saying that we could use a url here Or we change what the definition of subscription config means and one of those one of the known keys is Open api or json json schema or something and then it points to a url that you can go next look up That is served by the description api There is a subscription api so this way you know What you have to put inside correct that's So so I have for I have for the subscription object that you go and create when you create a subscription I have An id I have a protocol a protocol settings have a sync and have filters So the sync is the url that you go to the protocol settings configures any more detail What the protocol choice is I have the idea and have the filter so bait so I think what what Can you scroll down dog in what you added there? Yeah Try to sync and that's the job. That's the config Added here, right? Yeah, this is new. I think everything else is Except for the singular here Most yeah, well I put dialect inside there. But yeah, most of this is is per the spec this stuff right here is new And we're running a little low on time just so yeah, you can wrap this up Well, not finish it, but at least have last comment. I should say I think I'm Yeah, I think what you're doing there is is so with this scenario with the scenario that I um With this configure configure the the subscriber scenario with your key and key key frames, etc I think that's a valid one and I think the solution that you have here is also not terrible I'll take not terrible Well, tell you what obviously we don't want to rush into a decision Everybody think about this. Maybe we'll talk a little bit more about this on monday. If not, obviously next thursday But we are out of time. I don't people need to leave So anyway, think about this PR is out there. I'm going to make some changes based on what we've said already So keep an eye out for another version. But um, I think that was probably the biggest change was the config thing I think everything else is a minor typo type stuff. Anyway, think about this. Okay All right, and that goes to everybody. I'm not just picking on Clemens there Doug, I would I would pull that change just fix the typo stuff make another pr Yeah, I'll definitely do that. That's a good idea Scott. Okay Um, okay, let's see. Jim. I saw you in chat. So you're there. Josh. Are you there? Josh What about Sanjay? Yep, I'm here. Okay, Anish. Are you there? Yes Yep, and josh, you come off mute you're there. Yes, I'm here Radu, uh, I don't see them online anymore Ujal, I apologize. I'm probably butchering your name. Are you there? A Ujal Oh, and slinky got you. Thank you. Anybody else I missed for a roll call? All right, cool. All right. Thank you everybody. Good lively discussion And we'll talk again at least to some of you on Monday and everybody else next Thursday. Oh Um, this is a check cloud events stk Nothing on the agenda. So anybody want to bring anything up or should we cancel the call? I think we can cancel I have some modification that will be pending, but I prefer to finish our discovery stuff Based on that, I probably have like big pair PR for NGK Okay, cool. In that case, in that case, anybody speak up, we will cancel the stk call All right Cool. On top of the hour. Thank you everybody for joining. Have a good rest of your day. Bye. Bye. Bye.