 Okay, welcome everyone to, I guess, the tail end of the day. Thank you for joining. I'm here as a representative of Morpher. Morgan Stanley contributed to Morpher a couple years back to Finnaz, and one of the main reasons that we did so was to maybe spur some collaborations. It was our hope that like-minded projects would take a look and realize that there's added value to collaborating on similar kind of technologies. It's interesting that when you go into open source, you quickly find out that a lot of people have already thought of, a lot of the things that you've already thought of. And it can be, I guess, a little nerve-wracking and at the same time it's also satisfying because you realize that it's probably a pretty good idea if people have come to the same conclusions maybe from different angles. And so, you know, we contributed it to Finnaz specifically so that we could increase collaboration. And I'm happy to be up here with Damian Reeves from Capital One because this is the epitome of what Finnaz is really about. We contributed more for a couple years ago and then over 2022, Capital One picked up Morpher as a project and became an equal contributor. So, you know, Damian is a maintainer and it is no longer a Morgan Stanley contributed project anymore. It is actually a pure Finnaz project with multiple contributors. And that's exactly what we wanted to happen. And so, let me get out of your way and then introduce Damian from Capital One. Thanks, Steve. All right. So, hello. My name is Damian Reeves. I'm a distinguished engineer and I work for Capital One. Yeah, that company that talks about your wallet. I love functional programming and languages, compilers, domain-specific languages, and open-source software in general. I've got a real passion for this. And yeah, let's see. I'm also, Stephen just said, a maintainer of Finnaz projects. I contribute to Morpher, Morpher Scala, Morpher JVM. And coming soon, Morpher Rust and Morpher Go. Really ambitious, but what Steve just talked about is we are no longer in the place where we just have a single financial institution leading this effort. I think we've heard throughout this day various people talking about Morpher and the value add. I'm going to talk a little bit more about that. But the fact that we know that there is a place and a space, it means that there's also really excited people who want to contribute and help to broaden the Morpher ecosystem. So today's journey that we're going to go down, we're going to go through Hello, Morpher. I'm going to introduce, I'm going to get a little geeky. So excuse me, it's not going to be too geeky. But I'll introduce Morpher to you. I'm going to introduce this Morpher IR that has been talked about, show you some of the pieces, what differentiates it from some things you may have worked with already, talk a little bit about the Morpher ecosystem and why I think it's important and it's beneficial to invest in Morpher as a platform. So let's see. All right, let's make a case for Morpher. So really what is Morpher? Morpher allows you to leverage the power of your business logic by storing, sharing and translating and visualizing it. So fair warning, we're talking about business logic. So don't fall asleep. We talked about regulations, so I think if I talk about business logic, we'll stay awake. But are you excited yet? Come on. It's all right, it's 4.15, we had our coffee. All right, what do we mean? So what is Morpher? Morpher is a set of tools for integrating technologies. You can find this on our fact sheet. Morpher is composed of this library of tools that facilitates the digestion of business logic into multiple different languages. So mouthful, we're going to get a little bit deeper into what exactly that means. But I want us to really focus on why is this important and it's important because Morpher makes your business logic portable. And it does it by turning your business logic into data. This enables you to move your business logic across systems, across departments, organizations. It allows you to go across boundaries. I'll give an example and maybe raise your hand or react if you've ever been in this situation where you have one team who had to code up some business rules, perhaps some compliance rules and you had a compliance back end that had to enforce that rule. And the compliance back end was in some technology. But you also wanted to have a front end for that. And guess what? You want to maybe before you send over bad data, you want to validate it. So guess what? You code the same business rules in a front end language. That is part of what Morpher is about. It's about capturing the business logic one time and taking out that error-prone re-effort and duplication. What else can we say about Morpher? Well, it's important because business logic when it encoded as data can also be converted to new languages and applications. It allows for the use of existing and future tools. Whatever you mean by future tools, I'm going to get into the ecosystem a little bit more. But tools that you haven't built yet, right? Remember, this is data. And the thing we know about data is once you've captured data, right, if you've got a teenager you know once the data is out there, the data doesn't go anywhere. But once we have something in data, even though we don't have a tool that might be able to visualize, that might be able to convert, today those future tools can exist. I talked about Morpher and Go or Morpher and Rust. It's not just about what exists today. And I want you as I speak today to remember that this is an open platform at an open source financial summit. You can contribute in your own way. So don't feel restricted by any of the tools we present. It's open and it's an open platform. So how does it work? So Morpher defines a standard format for storing and sharing your business logic. And Morpher provides APIs. It provides tools. It integrates technologies. Once your business logic is converted into this developer friendly data, it's easy to integrate and assimilate it into your stack, right? It's stack agnostic. And once again I'm going to underscore, though there may be choices that have been made today, part of why we are a member of FinNOS is that the choices that have been made, it's only because of resources, right? It's only because of someone has to pick something. But I think the platform is open enough. So what's the benefit? Morpher eliminates technical debt. I'm going to go through this kind of quick. It ensures correctness. I'm going to talk a little bit about the Morpher IR and what are some of the fundamentals of it. But I mentioned at the beginning that I love functional programming. And in functional programming we have this idea of purity. And sometimes it gets us in trouble a bit. But it's about what you put in is only, or what you get out of a calculation is only in relation to what you put in. And that's really what your calculations and your business logic is all about. The fact that you run it on a Spark cluster, or you run it in Azure, or you run it in AWS, or you send a message out to a queue, that is really an integration problem. It is not really the core of your business logic. But we duplicate effort. We reimplement systems. We rewrite business logic all the time because, well, now I need it on AWS instead of Azure. Now I want to run it in Lambda. Now I want to run it in some Java or Python system. And Morpher's idea is let's capture the business logic in a way that, first of all, is strict. I think functional programming is a strict and very direct way of doing it. You don't really need side effects in your business logic. Though we do it all the time, and I'm sure some of you have been involved in systems where in the middle of doing a business logic calculation that you call out to a database, what we've learned over time is if we want to scale, you shouldn't be doing that anyway. And so if you want to embrace things and make sure things are correct, you just capture it once and then push everything to the edge. So it increases agility because you're able to just capture this one time and the knowledge is able to be disseminated. I'm going to, you know, I'm at the end so I have the ability to refer to what came before me. We saw a wonderful talk about how Morpher, along with Legend and Databricks, was able to make a full integration pipeline and I think that's the sort of things that we can look forward to in the Morpher ecosystem. So let's talk a little bit more about this thing that I keep mentioning, the Morpher IR. And it may seem a little intimidating, this IR notion, but let's try to break it down because this is really the centerpiece of what is Morpher. It is the definition really, and Morpher is really about this IR or this data format. IR is a programming language term that means intermediate representation and at its heart Morpher is kind of like the set of tools but in the midst of it is this format and Morpher embraces functional domain modeling and the Morpher IR enables users to model your domain and model your business logic. It means sit with your business users, talk about what it means to calculate whatever you're trying to calculate. Be at the LCR, take a specification and Morpher is about capturing that and then encapsulating it in the form of code and data. So what are the properties of Morpher? It's pure, functional. So it allows front end languages to encode data types as functions and ADTs, abstract data types. What we found are, as I said I'm biased, I'm a functional programming guy. What I find is that you're able to make illegal states not representable when you're able to talk about things in terms of functions and abstract data types, records and option types and you don't have null anywhere in the Morpher ecosystem but you can instead, usually when you want null what you want is optionality. So we support that as part of Morpher. Morpher is strongly typed, right? There's not going to be any loose type because the reason we are able to operate at the data level is because we tell you something and you're able to abstractulate and make a decision based on that type. Morpher is modular. This is a really important thing because you're able to take different pieces from different ecosystems and connect them together. I can allow your imagination to drift if you would where you've got an accountant system and you need to define yet another representation of an accountant journal and an accountant ledger and then you realize why am I doing this because accounting has been around for hundreds of years but I've got to do it one more time. An organization like Finos, right? Could be an umbrella with something like Morpher where you can have your accountant ledger module. You can have rules. You can maybe have people who know what are the regulations that you're worried about and have a module that you can import and it's part of an ecosystem. So that's part of what the Morpher IR with its modularity gives you. It gives you logic as values. I'm going to say that again. It gives you logic as values. I'll key in a little bit on what that means. Logic and values means that it's a differentiator because usually when we're talking about modeling data, modeling services, then you pretty much stop there. You stop at what is the schema? What is the shape? What is the contract? But Morpher allows you to go one step deeper because now you can save the actual logic, how you make decisions, what are the rules along with your schema, along with your data. And it's distributable. So I can package that up and I can ship it. I can put in a GitHub repository. I'll talk a little bit about how we're looking to broaden the packaging ecosystem of Morpher. I'm not going to say it now because I would be going ahead of myself. And controversial, I use the term complete because Morpher is complete. What I mean by that is not that we're done. What I mean is that you're able to take the formats that you do know today, formats like Avro, all those other formats that you work with, and those can potentially be generated from Morpher because it's high enough and it's powerful enough. And I'm going to get a little bit deeper into the weeds and what do I mean? I'm going to introduce you. I'm not going to show all the flashy demos. I'm going to go into the details of why Morpher is valuable. So it has, at its type level, and this is where you can do schema, right? You can represent, this is how powerful Morpher is. You can talk about things like a list, but you're not just doing list of string. Morpher is powerful enough to allow you to represent generics. And you might not be familiar with some of these other platforms. Generics is something that's usually often overlooked. You can have references to types. You can have tuples. Often those are results that you get from databases. You can have records. Everything has a record. This extensible record thing is almost like functional programmers take on interfaces. And of course you've got functions. Lots and lots of functions. Forget about unit. There's only one of those, but it's needed. And then you've got values. Now, I'll say all that stuff, particularly records, you're probably used to that. When you go to your database, you say, here's my schema, and that's really a record structure. But Morpher allows you to go a little bit further. And how it goes further is it allows you to say, all right, here's all the different values. And I'm just going to let you look at this a little, talk a little bit about. You can do all those things at the value levels. What does it mean to be at the value level? This is the body of your function. And this is the real difference. Because if I take any other format, I'm going to have a little service thing, and it says I take in an int, and I spit out an int. Or I have an add function, I take in an int, and I spit out, and I take in another int, and I spit out an int. What Morpher is going to say is it's actually A plus B that's in there. Stores it in a format that when you're ready, you can turn A plus B into a calculation in Python, in TypeScript, in Scala, in whatever language you want to work with. And you can do that through all the types, lists, records, you can refer to something, which means that you can potentially refer to something that exists in a module. And that's how we support modularization. All those sorts of things, access fields, call functions, lambdas. I show all this to really overwhelm you. I show all this to show that you can do everything in your business logic, because you've probably seen all this, you're like, I'm different. My use case is broader, is bigger, but you've got a very powerful language, right? So you got all that? Cool? It's going to be a quiz at the end. So what am I really saying? Morpher is not just another IDL. What do I mean? It's not just another interface definition language. Morpher is more. And what's at the center of that is also the Morpher ecosystem. And that ecosystem is really why I'm here. So the tool in story with Morpher is you'll hear it all the time if you talk to someone from the Morpher team or engage with a project, that you take a front end, you do this process, you kind of make Morpher IR, and then you do transformation. And when you do your transformation, you can transform the Scala, transform the Type Skip, transform the Jason Schema, transform to a fancy visualization that looks really good at a conference, or you can even do more. Whatever it is, right? You can do reports, you can do all sorts of things like that. All right. So with Morpher, you model your problem domain, you transform what you've modeled into data, now you store that, your business models, and then you use it. And I'll talk a little bit about the ecosystem, then I'm going to talk about why I think we should invest. The ecosystem is ever broadening. I remember in 2020 when Morpher was open sourced that we really had Morgan Stanley and a strict set of tools, but more, there's more in the works. So with Capital One and Team of Capital One, we've been working on Morpher Scala. Morpher already had Scala Tooling, it allowed you to generate Scala, but we're looking to do deeper integration. We're actually working on a compiler plugin, which will allow you to model, if you use Scala as your programming language, that you'll be able to write Scala, you'll get Morpher out just like how you can do currently in the Scala ecosystem, you write Scala, target the JS platform, write Scala, target Native platform, and we're working on write Scala, target Morpher as a platform. We already have Morpher Elm, a lot of the ecosystem is there. Morpher Go, it's one of those things, along with Rust and even .NET that will allow you to do things to target those ecosystems and eventually, we hope, WebAssembly, and then we even got this other repo to the side, which is about Morpher Editor or whatever, but what it is, is this ecosystem of tools and needs exist, and in the open, right, because it's not just one company funding all this, we're able to do that. So why? Yeah, particularly Go, Go is not really good with those constructs, so there's some design going into how Go does support generics as of this year, by the way. I'll get, I'm going to try to release some time for questions. So why invest in Morpher, and why is Capital One invested in Morpher? Well, I'm going to tell you a little bit about Capital One as a company. We believe in open source. I think the term we use is we're all in on open source. As an organization, we believe in standards and standardization. We've got business rules all over the place. In Capital One, your organization probably is the same, and we believe in innovation, and because of all that, I've actually been allowed to work on a business problem, but to work on it in a way where I'm able to use an open source technology like Morpher. And so we invest in Morpher because we know it gives us increased power. So I work on a platform where we had our own DSL, and we wanted to give more power to that DSL. We wanted to expand the capabilities that our business users could have, and we had a choice. We can maybe use one of the systems that exist that maybe isn't as pure didn't really follow the principles that we believe in. I work on something where being correct is really important. So we already embraced functional patterns, and Morpher's focus on correctness was important for us, but we needed more power than what our DSL provided. And we could have started from scratch, but being open source first, one of the things that we like to do at Capital One is look, is there something that does what we want to do? And Morpher fit that build. We want to expand on modularity. We wanted to be able to have one part of the business define rules and procedures and calculations and have another part of our business use that and wrap it, extend it to incorporate it in what they're doing. Security is important. Because it's closed. Because it's not just like, it's not just a scripted engine, right? I've talked about all this, it's not just a scripted engine. With scripted engines, you suddenly find yourself where you've got a scripted engine and maybe you've got some login and you find that in December you're suddenly trying to squash some sort of bug because you're able to do scripting. Anybody remember last year? We said, what we wanted to do and what we wanted to do then is what you get out. And we wanted discipline constraints and we wanted an ecosystem. And we found that in Morpher. And now, because of this, we looked at this, we said, listen, we can build this from scratch or we can contribute and we can get all the power of an expanding ecosystem because if we did this earlier, we wouldn't get it. But we recognized that if we contribute back in the spirit of open source, then we can get benefit and we can benefit others and we can build on the ecosystem. So I'll talk a little bit about what my team and what myself personally is working on. We're working on Morpher Scala. I talked about it. We're going to bring the Morpher IR and all its types. We're going to do that Scala 3 interpreter which allows you to take Morpher. Right now you've seen Morpher running in web applications. You've seen it maybe running at a command line. You're going to be able to run Morpher directly in the JVM. Morpher, just to be clear, right now you can compile and generate Morpher code that runs on the JVM. But this is about directly taking Morpher models in real time running them on the JVM platform in a secure manner because you don't have to deal with all the things of jars or things reaching out to libraries. That's really important to us because with Morpher's data what it means is that if you've got not just hundreds but you've got thousands of variations of business rules you want to version all that stuff you want to be able to load it on the fly if you have maybe millions of customers that have little slight variations on how they use, I don't know something like a credit card that's really important and this is what Morpher allows us to do other things we're working on workspaces which are around packaging and the extensible CLI and yeah, that's basically it I just want to say thanks to the Morpher and Finno's teams Steven Goldbaum, Tilla Mahali the entire Morpher team and Finno's team and I want to also say thanks to the great team of engineers at Capital One and the leaders at Capital One and a very open and awesome open source program office and thanks I know I don't have much time but Q&A Go for it, you had a question Yeah, so that's one of those things where we've looked at and for someone like me I love languages, I love programming languages so I'm involved in a lot of those projects and yes part of why we look at languages that kind of have principles or at the heart the same tenets as Morpher which is why Scala was one of the first ones I'll be very honest Go I was hesitant for but Go has a pretty big presence at Capital One so I kind of begrudgingly started the effort of seeing what it would look like to integrate Morpher what's also interesting is remember Morpher has basically a front end where you can author something and then you have a back end which is about execution so you can actually not even author it in Go but just use Go as an execution platform and Go and Rust as execution platforms they actually open up the door for you to run on WebAssembly which allows you to run basically anywhere I think it's going to differ a little bit based on your use case but there is a lot of use cases that we've seen where you do want to just dynamically load but from a security standpoint the minute you say dynamically load there's all sorts of issues that get unlocked so the idea then is if we have this runtime interpreter of this very closed loop then you're able to have dynamicism without security holes so I do think it's a big future it's actually the principle behind why WebAssembly has taken off so I think that Morpher can benefit and learn lessons from that it's also an age old balance across all programming we've always had interpreted systems users defining query rules at runtime versus compiled systems with unit tests and there's always a balance of when do you want to use one or the other and it really comes down to the context in use case what I'm saying is that the tension between interpreting a runtime versus compiling is that you can make changes to things like regulations at runtime and push those out whether that's a good idea is really up to the business for example you might have traders who would like to create rules is that really the best thing to happen or should we actually unit test the kind of rules that a trader would build to make them push those out those are really business context questions I think the important thing is that you've got the option for both you could take that same model and interpret it at runtime or you could compile it down we've seen examples where there's a desire to separate the platform on which the thing executes from the rules and the logic that it's being executed and once again I've probably said security a lot of times in a safe manner being able to do it is not any huge achievement you can take a scripted engine you can deploy that in your application and just let the hackers and security holes creep in or you can do it in a very secure sandbox environment and that's what the interpreted play I shouldn't say play but the interpreted position I think for Morpher it adds a value in that you have a sandbox safe execution environment and it's something that for your organization if you got a security group that they're gonna ask oh can I talk to a database you can't do any of that for Morpher it doesn't even have the concept of that and that's part of the power you still have all the power to do everything at the business logic level but you can't do the bad stuff there's no launch and missiles in the middle of your calculation and I think that is all my time I can get one more question that if that is an oversight on my part just to repeat the question oh sorry I just want to make sure that everybody here so the question was are there some types and some types being you go ahead and explain it some types being like unions being able to express the idea of a choice like A or B or C and sorry that's an oversight Morpher actually includes some types it's an important part actually the IR is full of them yeah I agree we totally agree we love some types some types are the ability to say hey look I'm getting a message that's of this format like a trade request message which has these ten fields versus maybe I'm getting a trade cancel message which just has one field the idea of a field and through pattern matching your code goes and figures out what do I do with that a lot of languages don't have that it's a very powerful functional feature yeah and I skipped over that but I went through it quickly but we support pattern matching and all those things as well well thank you so much for your interest and of course you can check out morpher.finneaus.org thank you