Niko Stotz, one of the people behind the LIonWeb Initiative, was interviewed by Federico Tomassetti. Watch the full interview.
LionWeb is an initiative to create an ecosystem of interoperable components for building language-oriented modeling tools on the web.
We believe that a lively ecosystem will facilitate the adoption of language engineering and modeling solutions by reducing vendor lock-in. Development of advanced solutions will be accelerated by mixing and matching components, potentially sourced from different vendors or open-source initiatives. It will also foster innovation, as incremental improvements can be defined on top of the existing libraries and components.
Federico Tomassetti
Today we are here for our fourth interview on LionWeb. And we are going through this interview to show the different perspective from different contributors to LionWeb. And today, we are lucky enough to have Niko Stotz with us here. So, hi, Niko.
Niko Stotz
Glad to be here.
Federico Tomassetti
Great. And Niko is, DSL specialists have been for quite some time. His work are very notable companies in the field, both in Germany and the Netherlands. For example, Itemis, Canon and now F1re, by the way F1re, and I have cup received from F1re, kindly sponsored the first two dinners that we have at LionWeb. So we are grateful for that. And Niko, co-founded F1re a couple of years ago. And F1re is a company specialized on Model Driven Development. Now, Niko uses a lot of different modeling technologies. But in particular, in the last few years, he has focus on MPS. And I remember some interesting presentation that he gave, for example of making MPS interpreters way more efficient. So it’s nice to take advantage of his expertise with some questions about LionWeb. So I will start with asking why did you decide to join LionWeb?
Niko Stotz
Yeah, so for one, as you said, and in this field for a long time, so I’ve worked with different technologies, I have longstanding interest in these technologies. And yeah, looking, looking at the meta level of everything is like very intrinsic to modeling people, right. And so at some point, you also look at commonalities between different modeling ecosystems. I don’t know if this this then meta meta meta or meta orthogonal, I don’t know what they name it. But I also I worked with several of them also quite intensively. So with EMF and Xtext things, I’ve worked for several years and MPS, and also some customers with homegrown modeling systems. And in the end, you’re mostly solving the same problems if if you are on the modeling framework level, right? Of course, with every customer, you might you solve a different business problem. But the technological problems are often very similar. And especially with EMF, there are some things you realize they were missing in the framework and implemented them like, again, every every single customer, and then again, an MPS and then again at other systems, and this gets boring. So having having a common way to do this is very much in my interest. And also, I really think this is, LionWeb is the logical next step for for modeling, or DSLs, or whatever term you want to use. And I’m really excited to be part of this next step.
Federico Tomassetti
Good. Good. And, well, given your expertise with a lot of different modeling technologies, I think you’re in a good position to comment on what benefit LionWeb will bring to the community overall to the language engineering community.
Niko Stotz
I think there is a bit of a background to understand the benefit is LSP: the language server protocol, right. So the idea was when this was developed in the context of Visual Studio Code, that there are tons of programming languages, and there are tons of IDEs or smart editors. And before this, every single IDE had to to implement the logic to understand every single programming language on their own. So Eclipse had to implement Java logic to implement the logic understand Java and IntelliJ and Visual Studio and now with Visual Studio Code and everybody else again, and they thought this is not a great idea. And LSP was the logical solution to this, let you just say you have a standard protocol, which the language server protocol, which the editors can speak, and some tool which knows everything about the language can speak. And then essentially every tool, every tool provider does needs to provide the editors and the Yeah, go to definition facilities and things like that. And every programming language just needs to provide the language server for their language. And then you have a huge benefit because everybody does what they do best and can benefit from each other. And I think LionWeb can do the same thing for for modeling. Because we have quite a few established modeling systems. And we already mentioned EMF and MPS. And yeah, I mentioned a few more Monticore, Spoofax, Rascal, MetaEdit, probably a few I forgot. And all of these tools have decades of development behind them. So although 1000s of hours that were spent on them, because they need each of these systems are pretty mature. And having a mature modeling system is a lot of effort. But they it’s just, it’s a complex topic. And to have a mature system, you need a lot of different parts, you need some may to manage the structure into syntax, and scoping, and type system checkers, in generators, and interpreters, and parsers, and maybe graphical editors, and 15 other aspects. And it’s actually each of these systems are their own island, they don’t do them talk to each other. And also, all of these systems are mostly pretty old. So they are all essentially desktop applications. And nowadays, everything needs to be in the web. And I think nobody wants or can afford to spend another decades to re-implement parts or all of this. But each of the system again, whatever. So we can do the same thing as LSP. Thus we’ve tried to define a protocol, where you can put these different components together so they can talk to each other. And everybody can focus on the thing that they can do good. And yeah, I think the there are several, every time you talk to people in any of these communities, they all say yes, this is the obviously right thing to do. So we should do it.
Federico Tomassetti
Yeah. And I mean, when you say that, something comes to mind is also that: building this foundation to bring this technology on the web is something that most clients, I guess, would not be willing to pay for, because they want their own specific thing. So building these common technologies, something that we can provide as a community, it makes a lot of sense.
Niko Stotz
And yes. And I think also these, of course, building this build takes time, right? But with each client, you’re a better position to say: “Okay, what about you co-invest in, I don’t know, implementing a nice generator component, which we then did the reusable parts can be open sourced. But for this, you get all the other components essentially for free from the community. So the usual community aspect?
Federico Tomassetti
And can I ask you, what are you working on at the moment?
Niko Stotz
And maybe there’s one other thing I wanted to mention for what’s the benefit for the community. I think it’s really helpful to have these discussions in the open. So how this protocol should look; because yes, are we not doing this for three quarters on an year, Right? And if I think about all the details we discussed, and there are a lot of details, right? And I think it really helps to have this discussion in the open and having like an not like some players to say I do it and whoever else can go along or can go to hell essentially. And also, I find it really important to have the rationale for these decisions somehow acceptable; for us, to the usual reasons, but for us in a year to see why the heck did we decide this stupid idea in this way, and also for others to to be able to read up about it, and understand it or challenge it, but based on the on thorough understanding.
Federico Tomassetti
And so maybe we can now go back to the question about what you’re working on at this moment.
Niko Stotz
Yeah, thanks. So once I somehow got into the role to moderate the weekly sessions we have in the LionWeb group. And also documenting this. So I’m trying the last thing I just said, to make sure that stuff is discussions are accessible to everybody, I spent quite some time in writing these down and make it accessible. And also, I’m implementing the MPS part of LionWeb as far as it currently exists. Yeah, so to make MPS, both repository for LionWeb protocol, and also a client for the LionWeb protocol. It’s currently more in a prototypical state, but it’s getting in the right direction. So there are already people who use it.
Federico Tomassetti
Maybe we can underline that the older material you have been working on is publicly available. I mean, this documentation about LionWeb, I think if you type lionweb.io, it redirects you to our GitHub repository; And there are parts that are public, like these documentation. And, and we can also say that I think the MPS bindings are also published on Maven Central, I think at this point.
Niko Stotz
Yes, there is one version published. So we don’t have any regular users yet. It’s the publishing happens whenever we need to. But of course, as soon as somebody really wants to use this, we can we can make this a bit more thorough
Federico Tomassetti
And can we maybe discuss a little more about the bindings for MPS that you have built on? So what kind of features they provide?
Niko Stotz
Yeah, happy to. So, I wrote a lot of convergence between different representations, especially of languages. Yeah, if you, if you look into the guts of MPS, they have like three different ways internally to represent languages. And then, of course, we have the LionWeb protocol version of representing languages. And then, so that’s the M2 level right in the Meta model. And then we also have instances of this, right, we have regular models, and they need to be representable, in both LionWeb and an MPS. So I wrote convergence between all of these. And so you can to enable the things I’ve mentioned before, that MPS can be the LionWeb that repository and also the LionWeb slides and can import and export JSON files and LionWeb performance. So that’s at the moment domain useless.
Federico Tomassetti
Good, good. And we have seen that LionWeb is about integration. So maybe I was wondering if you have any idea of what kind of integration will be the most useful for LionWeb.
Niko Stotz
I think the most important and useful at the moment, which be some nice system based alignment, which is useful by web developers, because I think in the LionWeb group where that’s part where we are lacking quite a bit there is your all, most of us are from this older generation of language workbenches, right, all desktop oriented. And web is let’s say not out first nature. But this is where most development nowadays happens when and where also this protocol based approach is most useful. So I think it would be really good that if we had a system which essentially is you can write MPM LionWeb install LionWeb example server or something like this. And then you get a base system where you can have a web based client and some kind of repository, maybe even with some kind of real time collaboration, because what you want is that you can start to play with and use as a basis, I think that would be really, really useful. Also to extend our, our community in this direction.
Federico Tomassetti
Good, good. And, by the way, about DSL and the web I think the book from Meinte is about to be published. And, yes, discussion about building the DSLs for the web, is another piece of the puzzle to facilitate adopting DSL in the web.
Niko Stotz
So this is this DSL, beginners book, or different?
Federico Tomassetti
It’s called Building User-Friendly DSLs (https://www.manning.com/books/building-user-friendly-dsls). And yeah, I think it’s suitable also for for beginners to really learn what the sounds are about implementing that without the huge background in understanding EMF first and all these things. And, but maybe we can talk a little bit about F1re and how do you think that F1re could benefit from from LionWeb.
Niko Stotz
So, F1re is a consulting company in principle, right. So of course, we would like to use LionWeb components in our consulting engagements. Both as components, which we can reuse, which are hopefully already there, and also maybe contribute to the, together with our clients, to the library community by developing components. I mentioned that briefly before, right. So if some customer really needs lots of code generation, also, for them just from a business point of view, make sense. So implement very efficient code generator component for that which can plug in with the rest of the system. Or I don’t know if, if a client would have really high requirements on a cell phone model, then it probably might make sense for them to also pay for implementing good <inaudible> component. Another thing which you mentioned it briefly, one of my other pet peeves is interpreters. So I’m really hoping for and there are some candidates that I could implement LionWeb Interpreter components, which would run the graal VM interpreters, which should perform pretty well.
Federico Tomassetti
So looking forward to that. And can he ask you instead, what do you think that would help making LionWeb successful?
Niko Stotz
I think the main thing we need is usable components, right? Which are not only which are available, both for the toy around with them, which basically means they should be open source, because otherwise it’s hard to toy around with stuff. But also commercially, because I think one big part of flying that is also we want to make sure we can use this stuff in commercial contexts. So they should also not the only prototypes, that’s really something I can use and don’t need to be afraid that it blows up in my face on every second turn I take. And this is of course, a bit of a chicken and egg problem, right. So it’s useful once there are components and I can only write components if it’s useful. But I think we are on the way to part of it, if a base layer right we, for example, also the Java implementation of the protocol that you wrote is really helpful there. And Meinte is working on the on solid TypeScript implementation, and the full implementation of web editor which would be a huge effort to implement for anybody on the road. But Jos is doing a lot of this work and really on a production level quality. So I think there is we have kickstarted it, so we’re on a good path there.
Federico Tomassetti
My final question, can you think of someone we should involve or contact to help us making line web successful?
Niko Stotz
Yes, this nicely closes the loop to the very beginning. Currently, it’s the most most people who are really involved in LionWeb are in the MPS community, and quite a few of them have a history of EMF. But there are these other language systems. I mentioned a few before. And they also some of the newer ones that don’t know Langium, or Essential or generative objects, or yeah, probably quite a few are missing. I think we wish it would really help to integrate with them. Because yeah, as long as we essentially try to get MPS in the web, that’s one idea, which is already helpful. But the real power of this would come if also the other communities we could, could join in or, and also learn from them, because they of course, currently all our ideas about the protocol and mostly informed by the stuff we know, which is MPS and EMF. And if it should really be a more generic protocol, then it would be very, very helpful to have input from these other communities. So it also works on that.
Federico Tomassetti
That is good, so I guess we have some work to do. But for today, I think we have answered all the questions. So thank you very much for your time.
Niko Stotz
Thank you.
Read more:
Read more about the LionWeb Initiative: lionweb.io http://lionweb.io
You can find more interview about LionWeb here: