 Hi, everyone, and welcome to another session in the Open Source Summit. My name is Javier DuRaschi. I'm a software engineer at RStudio. And in this talk, we're going to talk about a news project on the LFAI foundation called Sparkly R, which can help you democratize AI with really useful tools like Apache Spark and similar tools in the community. So actually, I'm really excited for this talk because we usually don't get to talk about the R community and open source projects on the R community with the broader open source community. So before we start, I want to give you like a quick overview of what is the place that I work on and the specific team that I'm working on as well. So RStudio is a public benefit corporation and mostly its mission is to support the R community. R is a programming language and we'll talk about this in a second. But I kind of like wanted to let you know that, you know, like RStudio is this community that supports RStudio, they are community and it has a lot of open source products and as well as professional products. And most importantly, it supports organization like the Linux foundation, which we are proudly supporters of. And we also have various customers that you can check out under RStudio.com. Now, within RStudio, the team that I work on is mostly tasked with bringing artificial intelligence technologies to the R community. So for instance, a lot of the communities, a lot of the technologies that we usually work on are things like Spark, TensorFlow, PyTorch, MLflow, Horovod and why not. So that's kind of like the space where I come from within the R community and RStudio itself. But let's talk for a second about what is artificial intelligence. Now, there's usually a lot of, you know, like feelings and like points of view on what artificial intelligence is. From my point of view, all that artificial intelligence is is a set of technologies. And it's a set of technologies that helps us solve some types of problems. And to get more concrete on kind of like what I consider artificial intelligence, we should, we can take a look at two of the projects that were pretty important in the development of this field. So the first one is the paper that you're seeing on your left side of the screen, which basically is the paper that gave momentum to the deep learning community. It's the AlexNet paper where Alex and Jeff Hinton basically put together a system that could outperform the current computer vision tasks. And kind of like from there on, like deep learning has evolved into multiple several disciplines like reinforcement learning and, you know, many other interesting fields. But as well, like one of the most more recent developments that I consider also pretty important on artificial intelligence is the development of AlphaGo by DeepMinds team. And basically what AlphaGo did was to create an algorithm that could compete on the Go board game, which happens to be a very challenging board game, which was considered kind of like beyond human, beyond kind of like algorithmic capabilities because it requires intuition and some creativity to actually succeed in playing it. And this algorithm basically also succeeded against, in a series of matches against the current world champion, which was, which is at least at all, or at the time was the champion. And in general, this is what I consider modern artificial intelligence. And these are the set of tools or the set of problems that we're interested in solving with tools like SparklyR that we'll see in a second. So kind of like if we were to drill down into this, you know, we can, we talk about the problems that we can solve with artificial intelligence, but let's start talking about the tools that are useful. And what we have in this chart, we're basically plotting what are the state of the art deep learning and AI models over time, right? So at the very left of your screen, you can see that AlexNet somewhere in there, the paper that we just mentioned, what's considered a state of the art. And kind of like more recently, we have another systems like AlphaGo and OpenAI's Dota one versus one model, which, you know, they actually on the y-axis, what we have is the number of petaflops, basically the number of computing power that is required to achieve training of these particular AI models. And we have one model or twist in this plot, which is what you can see on gray are the models that require a single computer to be trained. And the ones in black are the models that require more than one computer to train. Usually they require hundreds or even thousands of computers to train. And you can see that it's very clear that deep learning has moved away from training on a single machine to making it more obvious the need to actually train across clusters of computers. So we can identify a few specific technologies that are important for artificial intelligence. One would be obviously deep learning, reinforcement learning, statistical analysis, which we usually take for granted, but, you know, like a lot of the core concepts of how do we measure errors and variants and things like that. They come from, you know, like plain statistical analysis that are also part of or that I would consider part of AI. And more recently as well, what we call distributed computing, which is going to be related to build our rest of the talk with technologies like Apache Spark, which really enable using distributed computing across multiple environments and multiple with large scale models. You know, I've mentioned already a few, but to even drill down even, even more on these particular technologies, we know that we want to use things like deep learning, reinforcement learning. But if we look at the actual frameworks that are pretty useful today, you will hear things like Apache Spark for transforming big data sets into something that that GPU can consume. Things like TensorFlow, which is a graph computation engine that works on GPUs, similar to PyTorch, which is gaining momentum. MLflow, a new open source project to help you manage the life cycle of your AI workflows that just got incorporated into the family of Linux Foundation projects. And then there's our VOD, which can bridge the gap between Spark or Spark like clusters and TensorFlow libraries. All of these frameworks are required with for artificial intelligence. So kind of like now the question is like, well, we have, we have these great frameworks, like what, why do we need anything else, right? Like, you know, obviously Apache Spark and TensorFlow are already pretty great. Why do we need, you know, sparkly are or other frameworks apart from this, right? And to understand kind of like the state of the art today, you know, I have a couple, you know, like comics from XKCD that explain a little bit the challenges that we face today. So my background is in computer science. And you know, like, when I went to school, I work on things like C and C++. So when you compare like the C language to, for instance, Python, you can make the case that Python is so much more simpler than C. And I think that would be true. I think Linus Torval in the keynote this morning, kind of like talk a little bit about C and kind of like how usually C is hard core level programming language and a low level programming language that, you know, it's used. So Python is definitely simpler, but there's still a lot of complexity when we look at things like Python or Kubernetes, not for computer science people per se, but especially for people that are not proficient on computer science, right? So if we're thinking about people that are doing data science that have statistics background, and people like, you know, biologists or, you know, like people in the pharma industry, like think even simple things like installing Python could be actually quite hard. And here one of the comics that we have is for those of you that use Python, you can see that, you know, you might find some familiarity in this diagram where even installing a package, you know, you need to figure out first like what is the virtual environment technology that you're using and, you know, like it can get, it can get pretty tricky. You know, in the day to day. So not to say that Python is not great. It's just to say that there is definitely room for improvement to make things even simpler, which kind of like brings us brings us to the topic of this talk like how do we make artificial intelligence more accessible to people or how do we democratize it such that more people can use it. And what I want to mention here is kind of like give you an introduction to the our programming language and they are community. So the our programming language was a programming language developed, I believe, three years after the first release of Python. But the interesting thing about the program they are programming language is that it was built by a statisticians and really at the time it was it was a tool for statisticians to kind of like build an environment that allows them to create a statistical computing in its own environment. And statistical computing is really what we call today data science is marrying the statistics with computing. And I would argue that it's a great project for data science in general. Now what is more interesting is like they are community, knowing that statistics is used by a lot of people in this world that they're not necessarily computer scientists. The type of people that work in the art community. A lot of times are either data scientists, but also biologists or, you know, like people in the pharmaceutical industry finance people, you know, people doing psychology or even art. So the range of people that have to apply statistics, it's obviously pretty broad and a lot of the users in the art community, you know, like they're focused more on solving the problem without really having to want to learn, you know, like what are what are all these technology stacks that we talk about, you know, like in, you know, like in the scope of computer science, which is pretty common. And the other thing to mention is like the chart on your right side of the screen. It basically shows the number of downloads of packages per day that the art community has been providing. And as you can see, it's a pretty vibrant community. I don't know if this would be considered exponential growth, but it definitely seems pretty steep, especially in the last year. So it's a pretty vibrant community and it's full of people that, you know, don't necessarily have as their main goal to become computer scientists, which I find quite interesting. So it really opens the door to create packages and technologies that really allow a different type and a more diverse user group to use technologies like artificial intelligence. And this brings us, you know, to the topic of this talk, which is sparkly are. So what is sparkly are well sparkly are is an open source, modern interface to scale your data science and machine learning workflows, using Apache spark and many packages that are intertwined and supported by the art community. Now, you know, there's there's a lot to digest in these diagram but you know at the core at the core of what this sparkly are is is an interface to Apache spark. But it goes beyond that it allows you to use these very powerful computing framework, which is Apache spark with all the tools that surround them right so you know like if you're running Apache spark you probably want to run it on top of how do beyond or mess us or Kubernetes. You know, Kubernetes being kind of like this great project also from the Linux Foundation, which allows you to use kind of like see group style. You know, Linux kernel technologies to really virtualize efficiently processes in your cluster. And you know there's also other technologies like H2O AI is a company and also open source project that allows you to do advanced modeling at large scale. Exibust which might be familiar to some of you that are doing, you know, machine learning or AI and technologies like M leap that allow you to export pipelines. So even though the main purpose of sparkly are is creating this interface to Apache spark. You know, like the same momentum that Apache spark is having of bringing the rest of the AI community into kind of like an easy to use distributed computing framework sparkly are is trying to accommodate like all the needs that kind of like surround spark on its own. And it's also great to mention in this conference that sparkly are joined the Linux Foundation early in 2020. So definitely we've been quite excited and to join the Linux Foundation under the Linux Foundation AI Foundation, which has been a great partner to help us, you know, move this project forward, and we're definitely look forward for some of you to get interested in this project. So, you know, getting into the specifics of the actual code. How do you sparkly are, and you know, we're going to spend some time in this slide because I think it's actually pretty great. Not not the slide per se, but like what is communicating and it's, it's some of the work that we put into making this package and this interface really quite easy to use for any user right so as you can see here there's two lines after the install spark comment. Which basically, you know request to sparkly are to well first be installed so you kind of need to ask, you know, they are runtime to install sparkly are and you can execute that with one line of code. This would be similar to peeping style but like the great thing about the R interface is that you can basically run everything to a single repel so you don't need to teach your users to get out and install and run peeping style out of of their environment right and then the second line what we're actually running is installing spark is basically just installing spark on your local computer. Now you can also use existing proper spark cluster, but you know like a lot of times you want to work locally, and it's much easier to start working locally than, you know, like starting with a full on cluster. And then once you have a spark installed, you can just simply connect to it, and the comment that you use there is spark connect, and then you can say master equals local or yarn or Kubernetes, or you know other technologies like Levy or spark standalone or why not. And one of the great things about this is that it also works on Windows so a lot of the our users, you know tend to be Windows users, just because Windows still pretty prominent operating system in the desktop space. So we wanted to make sure that you know this is enabled for users that are getting ramped up in technologies like artificial intelligence we want to make sure that they're well served in these type of environments. All right, so kind of like that gives a very high level overview of how to get started with spark and using the our programming language. What we're going to look at this slide is kind of like understand a bit more like what is the actual functionality that you get from spark and their ecosystem and sparkly are. So we already talked about the first two commands which is installing spark and connecting to spark. But the next interesting comment is loading data into spark. So usually you have large data sets stored on HDFS or you know in S3 buckets Azure Google cloud or data bricks and and why not. So you have these large data sets and you need to read them and you need to read them in parallel across multiple machines. So for for running that particular kind of like process, you can use functions like spark read and then we have like over more than a dozen of different formats that you can use. You can say spark read CSV spark read JSON Avro parquet, you know, text based and a few others. So you can very easily load data from large data sets into spark. And honestly, you know, the code here looks like local code that you could run on your local machine that we can actually run. But it also scales to huge numbers of worker notes and in general notes in your cluster environment. Then you can do data analysis you can do you can obviously run SQL statements. I said obviously because I work in spark but you know, it might not be obvious. In general, if you're learning about Apache spark, but Apache spark supports SQL statements. So you can use SQL directly to perform those operations. But in their community, we also have a pretty great package called the plier. And what the plier allows you to do is create SQL queries or that or SQL analysis operations in a very concise, concise manner. So as you can see here at this statement summarize cars where where you want the total number like the count of n. This is basically what we call the plier syntax provided by the plier package, which is a grammar of data manipulation, which makes data analysis much more concise. And our users definitely love this particular functionality and package. But you know, like if you're familiar with SQL, you can always use SQL statements. And you can also do things like plotting and linear regressions. And for that, I want to switch and share my screen and give you a sense of kind of like how this works and also show you the more advanced functionality running the sparkly. Our package. So I'm going to share my screen in a second and. All right, so what you should be seeing is what a screen with our studio running. First of all, I want to mention that they are programming language is is just an it's just a programming language right and it has all the features from a programming language that you would expect. So for instance, in this case, I have a console, a terminal running, right? And if I were to run our once it's installed, you would basically get, you know, like a rebel prompt similar to Python, Scala, or why not. So, you know, like when you're here in this terminal, you can run something like library sparkly are you already have it installed or actually install it. Now, you know, like in the same way that a lot of you probably use. Instead of using Python directly, you use either Jupiter or IDs like. You know, like JetBrains ID. PyCharm. In a similar way, our studio is also an open source project that supports free access to an ID for the R community. So that's what you're seeing here. So rather than executing the code on the on the R terminal, in this particular demo, I'm going to use our studio. And there's a few things that we want to run. So first of all, I have created an R notebook for us for this particular presentation. And I'm just going to run a few kind of like pre preparation steps for for the data in general. And then I'm going to run the comment that we just discussed. In this particular case, installing sparks pretty easy. We can run spark install. And in this case, you know, it's already installed. So we're good. And then we can connect to a patchy spark. And again, we do that with only one line of code, which I think is great. And especially the installation, which is the hard part of actually getting a spark running locally, especially on Windows. We can launch the spark. Yeah, so anyways, so I'm only sharing the screen part of the R studio version, the window, but like if I were to share like the entire screen, you would be able to see kind of like spark running in the browser, which, you know, it's, it does what you would what you would expect. Then the other thing that we can do is we can actually let me just make sure that until. Yeah, so then the next thing that we can do is we can load data sets, which is the next kind of like line that we have here. And what we're doing here is we're basically loading a data set which happens to be defined locally, but it happens to be, you know, like if this was was defined in HDFS it would work in a similar way. And you can see here that you have your data set, which we just loaded into spark, and you can also look at the preview of the data set, which, you know, like it's, it's just there and it's working. And it's pretty easy, like, you know, it's what we want, we want to make sure that tools like sparkly are are easy to use and that's exactly what we're doing. We can run a count of records, you know, for our small data set that we have here is just 32 records, but these scales as well in spark to, you know, like billions or thousands of records whatsoever. And again, we're running here SQL SQL comments. Now, one of the popular packages for the R community is a package called GG plot to and what this package allows you to do is basically do plots in their community and for their programming language and it's such a popular package that a lot of times you see the news from Python. And what we can do is kind of like also use GG plot to to, for instance, in this case, sample a subset of the data set, and then just simply plot it, which is what we're doing here. So we see that this particular data set, you know, like it's plotting the weight of a car against their efficiency in miles per gallon. And we can see that, you know, the heavier the vehicle, the slower it becomes right. Well, the less efficient that it becomes the miles per gallon simply go down right because you have more weight that you're moving. And we're seeing that in this particular, you know, visualization already. But what you can also do with sparkly are in in general with Apache spark is you can do, you can use over dozens, if not hundreds of different modeling frameworks and also feature transformers that basically allow you to create anything from a simple linear regression to something as complex as a deep neural network. So what we're doing here is we're going to run a linear regression and this linear regression is running again on Apache spark, but it's quite easy to run. And as you can see here is that we see that there's an inverse correlation on the way that we see on the actual plot. So this is obviously what we want to see. And, you know, there's there's many other frameworks and modeling approaches that you can use. As I mentioned, one of the popular ones is actually boost which we have support for. So definitely, you know, like, you have like a lot of tools including H2O AI, which can support you with some other types of modeling frameworks and different metrics while you're doing modeling in Apache spark. So there's a few other features that are interesting. A lot of times our users want to stay within the art. Our framework right there's the tools that they want. It's easy to use. And, you know, like, it's simply, you know, like what they're used to write, but a lot of times you want to export that functionality that you build from our into other tools like, you know, like Java enabled devices or Python or Apache spark itself. And for that, what we support is the concept of pipelines. So basically a pipeline allows you to extract a version of your our computation that was defined in spark as a, you know, as a programming language, agnostic functionality that you can basically reuse from other environments. I would consider this pretty advanced functionality. So, you know, if it doesn't make a lot of sense. That's fine. Another kind of advanced functionality that we support is calling low level interfaces, because there's always, or not always, but there's a times needs to call more advanced functionality that is, you know, perhaps different or not yet available on the package. Or you might have to call functionality that is not available on a spark, but that is available on our, and we have support to basically call those level functionalities in Scala, but also use spark to use functionality from our. And in this case, what we did is we just counted the number of records, but we use an our function to count the number of records. It's a little bit more complex than this, because whenever you're doing, you know, computation in a distributed fashion, you need to consider multiple computing environments, not environments, but multiple computing instances. And, but in general, it's kind of like great that to have this functionality that enables you to grow beyond what the sparkly our framework supports initially. And last but not least, a lot of times, we want to support real time data sets, right. And there's frameworks out there that are specializing real time processing. But for the past two or three years, Apache Spark has also been adding features to process real time data sets with something that they called spark structured streaming, which is supported in sparkly are for the R community. And basically, it's, it's currently processing in real time, this particular folder, which is the input folder. But the great thing about this framework is in the, in the same way that we're creating a stream from a CSV file, you can create a stream from a Kafka provider, or from similar sources that support structure streaming. And you can use the same tools like the player or, you know, like the model scoring a model, or using a custom are transformations written in our to address real time data sets with your same infrastructure, which again is one of the benefits of of using Apache Spark as a unified platform that can allow you to really scale your AI workflows from simple data analysis to real time data sets to things like deep learning and reinforcement learning as well. All right, I'm going to stop sharing our slides. And yeah, so we basically, you know, cover this slide as a few demos that we can do with with this partly our project. And what I want to do now is, let me just stop something. Yes, so what I want to do now is we're going to move to the next slide and I want to present kind of like a much more complex use case of Apache Spark and sparkly are. This is this is what I would consider, you know, like a proper AI workflow that, you know, it's involving distributed computing with also tools like Keras and TensorFlow. So the way that it works is, you know, it's a little bit more complex because you're mixing your concepts from deep learning with also distributed computing. But as you can see here is we can, we can create a distributed model quite easily. And what we're doing here is, well, first of all, we're connecting to spark in the code that you see on this slide. And then we're basically telling each our each of our computing instances to perform a particular task. And in this particular task where we're telling each of the instances to do is to load TensorFlow and Keras. And then we're saying things like, okay, you need to load a configuration file, which you know, like, for brevity, I'm reducing in code here. And we're selecting our distributed training strategy, we're def and we're creating our actual deep learning model, we're compiling it, and then finally we're feeding it. And what is great about this code is that it's really executing across multiple computers, and even multiple GPUs if each computer is has support for a GPU right. So kind of like this brings together like a kind of like more elaborate use case of how you can use sparkly are in combinations with technologies that support deep learning and more advanced frameworks in a kind of like single interface that really allows you to scale your workflows with ease. So, kind of like to give you a little bit of background of what the sparkly are project is and where it is and where it's going. So the sparkly are project got launched on late 2016 so it has been a little bit more over three years and almost four years, and it is great to see today that he supported by most cloud providers. So, Amazon AWS Azure, Cloudera, Databricks, they all have, you know, support in different degrees from having it properly documented how you can use it in their platforms to having full integrations in platforms like Databricks and Google or our studio products. Not only that but the project has grown to be centric on our studio to incorporate other contributors from the open source community like Databricks and Cuba. So that's also great. We have customers that have been kind enough to allow us to list them as users of sparkly are like 8451 Equifax Express scripts, catchbook analytics edx and Netflix. And last but not least, as I mentioned, the sparkly are project joined the Linux foundation within the LFI foundation earlier in this year and I must say that they have been great partners, helping us grow the project, really. I think, looking at today's earlier keynote from Linus Tervals like I think really the maker attitude of focusing on building stuff it's something that I've seen the Linux foundation in general supporting where there's very low overhead per se and more emphasis is put on helping developers like myself really bring projects to life in the open source community and supporting them. Yeah, that's that's pretty, pretty great. And just kind of like to recap where this project is. I know that it has been a lot for sure. But I want to give you like an overview of you know sparkly are around with all their ecosystem. So sparkly are on itself. It's an interface that supports many packages and make lots of technologies. There's a lot of about Apache spark as a large scale computing engine. But there's also supporting sparkly are for Delta Lake, which happens to be a pretty new project, which also happened to be donated I believe last year to the Linux foundation, which allows you to scale your data sets in kind of like a house environment, or in on top of technologies like Apache spark that were designed with high scalability in mind. And so yeah, you can use sparkly are to access Delta Lake as well we have spark readers like spark read delta and spark right delta that easily allow you to connect to Delta Lake. And we've we spend a good amount of time figuring out how to interpret with tools like TensorFlow and Keras. And a couple other tools that I didn't mention or projects that are related to sparkly are is we have support for Apache leavey and Apache arrow Apache leavey being a rest. We have interface to Apache to Apache spark and Apache arrow project being these technology agnostic programming language agnostic way of storing data frames and manipulating data frames, which, you know, like we use to optimize performance in sparkly are when using spark arrow and they are programming language. And we do other kind of like high level packages that are not just packages but infrastructure that is related with sparkly are like H2O AI, XGBoost and Emily. But that's that kind of like covers what it supported on the art community. We also have, as I mentioned ways of extracting the functionality that you create within our two other languages like Python and Java with things like pipelines and packages like reticulate. And in general, we have this philosophy, at least on our team. And I think that we want to enable people to work locally. We believe that working in your local computer is as important as working on a computer that has a GPU or a remote cluster. And mostly because it allows you allows us to lower the barrier of entry to technologies that, you know, like in the past, we're only accessible to, you know, big teams of artificial intelligence experts. Now you can use them directly on your local computer. And once you learn to use them and once you have the workflows working, you can get computing either on a cluster or with a GPU, and kind of like lower the barrier of entry, which is all this talk is about we're basically trying to lower, you know, like how how hard it is to get to use AI technologies. And we think that they are programming language is a great way of lowering the bar of entry to computer science topics like, you know, artificial intelligence and distributed computing. And why not. So kind of like that's how we view this. Alright, so I'm going to leave you with some research. Well, actually, before I leave you with some resources, I just want to kind of like talk a little bit about contributing. So, as I mentioned, you know, like the project is quite new, or at least for open source, successful open source projects, it just was just pretty humbling to hear, you know, that Linux has been out for almost 30 years we take that for granted, but, you know, like, that'd be awesome is if open source package packages, you know, could last that long, but definitely, you know, like we're still pretty early were, as I mentioned about three years in. And we still have a lot of major features to contribute to. We have about a dozen major features that the community has proposed, and several dozens that we have implemented. We also have a lot of github issues for those developers that might be interested in supporting it or if you want to be a user of sparkly are in your organization, and then contribute back definitely there's a lot of, you know, like opportunity there to help. And you know, not to say that there's a lot of github issues open there's also over 1000 give 1000s of github issues that have been resolved on the project. But we definitely want to, you know, encourage if you're if you feel curiosity for this project there or contributing, you know, by all means you can find us on github.com slash sparkly are where we have most of our projects currently, it's really just a sparkly are main project where you can follow development and why not. And yeah, I should mention that we have some resources that are super useful. I know that it's really hard to pack in a single, you know, like 40 minute 50 minute talk, everything that is to know about a packet, an open source project. But if you want to learn more about sparkly are the landing page that you should this visit is sparkly are.ai. This is the official Linux Foundation landing page for the project. And from there, you know, there's not a lot of information but there's a lot of pointers that can take you to, you know, additional resources. And one of those pointers is the book that we finished writing with O'Reilly, a few months ago, which is mastering spark with our, and this, this is a book that basically can take you from start to finish to learn sparkly are. And I would argue that if you're motivated enough, you can also pick the book and learn our as you're reading to the book is definitely a bit of stretch but you know like if you're really motivated. You can look at the book and you know, like whenever you get stuck with our, our concepts, you can look at our for data science which is also available online for free to use. And last but not least, all the work that our team is developing in the open source world for the art community, and in general to make AI easier to use. We usually blog about things like, you know, like different deep learning algorithms and tools. You know, things like distributed computing, data management, modeling with things like ML flow and so on. So yeah, definitely subscribe. We post about every week or so. Pretty interesting articles. And yeah, thank you so much. So I think what I'm going to do right now is I'm going to go to questions. So if anyone has a questions, we can spend a few minutes on the questions section. All right, so, so the first question that I have here is can sparkly are be used with Python. So the, the strict answer is no you cannot use sparkly are with Python. There's, there is a kind of similar interface with different perhaps design goals called pie spark to use spark from Python. Now the philosophy is a bit different because a pie spark is specialized in talk in using spark, while sparkly are has grown a little bit more support rich ecosystem of packages and why not. But yeah, so the tool that you would use would be a pie spark if you want to use spark with Python. What I would say is that we try to interoperate between our and Python. I think in general in our studio, we believe that it's not either or like it's not a fight between Python and are, but you can really, you know, like depending on your type of user and your application, you can either use Python or are or some users use actually both. So we spend a lot of time also making sure that you're not stuck with our. And if you know if you want to migrate to Python, there's tools and ways of doing that as well. But yeah, it's sparkly are is not a Python package. Right, so another question is our version for backward compatible with version three. I would. Yes, so actually one of the things that I'm, I think I'm most excited from the art community is that they are has been backwards compatible for many versions and sure like there's there's sometimes little things here and there that that change and get deprecated. But you know like when, when you see the transition between Python to and Python tree. There was like a brief, a significant breach that people that users have to move and understand between Python to and Python tree. That has not happened with the our programming language and it's something that I think that is something that I admire from the our maintainers that they have followed kind of like that. Very, you know, like standard, very cautious evolution of the our programming language kind of like reminds me a little bit of the talk from Linus turbo is this this money morning where he was putting emphasis on kind of like being consistent with your releases and making sure that things are not broken as your community evolves. So yes, from, from, from all my understanding are has been compatible from version four and also previous versions and even even going behind. Actually sparkly are I don't remember on top of my mind I think we support version 3.1, which is quite old, maybe seven years or eight years old, and all the way to version four so. And again, most I'm at some point I was the core maintainer of sparkly are I'm definitely one of the creators, and I've never had to fix a bug where are broke something which is actually quite amazing. Yeah, so I think we have time for maybe a couple more questions. So here's another question. Do you support PMML PFA or onyx. We unfortunately do not. And I would say that that's on my radar and on the radar of the team, especially with onyx. As I mentioned, sparkly are joined the Linux AI foundation, and there's there's great projects out there that we should probably be collaborating with like Horovot and onyx. It's just that there's there's still a lot of work to do on the sparkly are project itself. So, by all means like if someone is interested on prototyping or at least exploring or discussing how these integration could look like. Follow you can contact me and slack after after this talk or you know after sparks after the open source summit. We also have a Gitter chat room for the sparkly are project. And you know, feel free to discuss this I think it would be great to have onyx support for for sparkly are onyx is becoming the standard. So we're a little bit behind there but I would I would want to have that integrated in the near future. So let's see. I think that might be it. So I really want to give you thanks for everyone to attending. I hope that you have a great open source summit and hope to also see you around. Thank you.