 So how many of you are aware of SPDX license expressions? How many of you know those? How many of you are familiar with the underlying UML model that implements the license expressions? Okay, more than I thought. So I'm gonna talk a bit about what we're doing. Now licensing has been around in SPDX for quite some time. And so I'm just gonna focus in on what we're doing in SPDX 3.0 with licensing. 80% of this is about the model and there's one change to license expressions. So those of you that are interested in the model, the five or six of you, you'll get a lot of information. The rest of you, you'll learn about the UML model through the process. So in terms of generally what, oh, I gotta look at the, oh wait a second, I can see it there. Okay, in terms of, okay, thanks. Perfect. Yeah, that's big enough, thank you. So basically the SPDX 3.0 carries forward most of what we've been doing in SPDX 2.3. There are a few important changes, however, and that's what I'll be focusing in on. And then in terms of the license expression, the one change is we're adding in license additions. So in SPDX 2.3, you can only have license exceptions, the with clause that point to something that's defined in the license list itself. With 2.3, you can have with your own license additions and so you can define them yourself. That's the biggest change that we have in the expression. So pretty much what you were expecting before. Now in terms of the model, one of the biggest changes that we've made is we split the model into really almost like two different models for implementing the licensing. One is called the simple licensing and it's very simple. It really has a couple of fields in it and it basically has a complete license expression string. So if all you care about is license expressions, which may be a lot of you, you can represent that in the model with a single class that has a string that's your license expression. If on the other hand you wanna do some more rigorous processing, you really wanna get down and do some analysis on it and break down what are all the components of this expression, we have the expanded license and expression class. So we split those into two different things. Another big change that we made in the model is that we used to have them as properties of the element. So if you had a license concluded or a license that's been declared, those would be properties directly on the element. And as Rose explained earlier, the downside of doing that is that if you have an SBOM that has an element, say a package, and you later decide what the concluded license is, very typical by the way, you would have to create a new package element because they're immutable and to add that conclusion in. So what we've done in 3.0, we've moved them over to a relationship. So basically now, rather than having a concluded license property, you'd have a relationship with a relationship type concluded license that goes from the package to the license. So that's a fairly significant structural change in the model. So let's talk a little bit more about the license model components that are there. So at the very top level, you have a license and that license can be either a listed license or custom license, custom license being something that you define yourself. Listed license is something that's been vetted by the licensing workgroup within SPDX and you have similarly exceptions. These are the things that go after the width. And then there's a complex structure of complex licensing structure where we have the ands and the ors and how we structure those within the model. And then we have a couple special values which is the non-license and the no assertion license. So basically the way we group these into the different classes is any license info can be all of those things above and then we have the non-license and the no assertion license to represent those other values. So this just gives you a little bit of a visual of how this may look like when you have the expression on the top and how that breaks down into the model. So you have an Apache license and parenthetically an MIT or an ETL 1.0. So in the model that at the top level that's a conjunctive license set that represents the and and it breaks down into the license Apache 2.0 and then the other part of this is the disjunctive license set which has the MIT and or later operator and that has a property that points off to the ETL 1.0. So that just kind of gives a little bit of a visual of how you would relate license expressions to the complex licensing. So in terms of the, see I don't even, the different types of licenses, there are these, I guess I mentioned this before, the listed licenses, the custom license are the ones to implement yourself. And similarly on the exceptions, there's the license exceptions that are defined and then there's the custom exceptions and these are all put after the with. I think I'm kind of repeating myself there a little bit. So the new custom license additions that are there, we decided to use the term addition rather than exception because it's a little bit more general. You basically can define them in your SPDX data. Similar to the way do you do the external license references that are there. In terms of how we relate these back, we are continuing on with what we did in 2.3 with the declared and the concluded license. Again, the difference being their now relationships as opposed to properties. And there's a few open issues that are still being left to work through and I left a link if you want to follow up on those and that's pretty much it. All right.