Modelix: Browser-based language workbench

We are developing Modelix, a new browser-based language workbench with real-time collaboration support and with MPS in the backend. In this post you will learn what drove us to this project, what the main architectural building blocks are and what the current status is. Modelix is open source. We’re looking forward to your contributions.

7 Likes

Just finished reading. Great article!
I am very excited about Modelix and I am looking forward to see how it evolves.
We are living exciting times!

1 Like

Good stuff!

I think it’d be great to be able to see the latest state of the art in a publicly-available instance. A technology demonstrator like that -especially if it’s up-to-date with the development itself- would help a great deal in getting people onboard with this approach, and DSLs in general.

2 Likes

A few questions:

  1. Is Modelix the implementation of the proposal mentioned here (Proposal for Future Tool Platform) ?
  2. Or is it one of the components within that future platform?
  3. @ftomassetti, I wonder if you’ve investigated Modelix. If so, how do you imagine it working with your own initiative (WebEditKit)?

I’m just excited imagining that platform.

@voelter is the right person to answer 1. In my opinion yes, Modelix has the ambition to go in that direction. At least initially it would go in that direction not by creating an autonomous system but by working in combination with MPS

Regarding point 3, I am contributing to Modelix. Modelix has many different features. At this moment I am looking to use Modelix for its ability to sync models with a remote repository and provide collaborative editing. I plan to use it in combination with MPSServer to get access to MPS features remotely, for example to calculate types or errors. WebEditKit would permit to create editors that work with MPSServer (and indirectly with Modelix) but are written in TypeScript, HTML, and CSS. The reason is that I think it is very important to integrate the editors easily in existing web applications and let web developers who are not language engineers work on those editors. Modelix has also support for editors, but I am not familiar with that part. I think however that those editors are not created by web developers but by language engineers, and that would be the difference I see with the WebEditKit approach

1 Like

Thank you for the reply. I actually did not expect it to be answered that fast (probably because my timezone is GMT+8 and it’s 2:45 am here and sort of assumed the rest are supposed to be asleep also:) ).

Anyway, having read your answer, the next questions I have are:

  1. Now that there seems to be synergy between Modelix and WebEditKit, will there be a stage where these 2 initiatives will be merged?
  2. Is it even a goal to merge these initiatives?

My next question is for @pjmolina:
3) Do you see Essential somehow as part of this overall future platform that @voelter is imagining?

I think not at this stage, one could also consider merging Modelix and MPSServer I guess, as Modelix could offer services by acting as a proxy to MPS and to do that MPSServer could be useful.

In general I like the idea of having small independent components that can be mixed & matched.

Modelix could have many sinergies, also with other projects, like ProjectIt, created by @jos.warmer

I think there are all interesting initiatives and we need to figure what will work best. At this stage it could also make sense to have different attempts, as a way to learn and compare alternatives to figure out what works best in practice

OK.

I agree.

Yes, I agree with this also.

On the (quasi) project management side of these initiatives though, especially in terms of monitoring or at least for members to be informed, is there a goal to set some initial high-level goals and timelines for these initiatives? At the very least, centralizing these initiatives will allow the members to identify areas where they might be able to contribute or at the minimum check or investigate and provide feedback.

I think having a set of independent components is good because it fosters a community, and this is ultimately what makes an initiative like this a success.

On the other hand I think it is important that we explicitly design, implement and document how the various components can be integrated. One of the frustrations with Eclipse was always that people just were’s aware of the various plugins in the EMF world and how to integrate them, and then didn’t. The MPS situation is a bit similar. Many people don’t know about things like grammar cells, and then people build crappy editors and then complain that MPS sucks.

So I guess IMHO we should

  • consider the modelix project as the umbrella
  • and call the existing things something like Modelix Repository and Modelix MPS Server or something,
  • see WebEditKit under that same umbrella (“Modelix WebEditKit”)
  • and then implement and document how these components can be used together.

To some degree what I write sounds like “markting”. And it is. Because I think it is really important to communicate to the world of possible users that a COMMUNITY is trying to build something TOGETHER that then solves real problems.

1 Like

My next question is for @pjmolina:
3) Do you see Essential somehow as part of this overall future platform that @voelter is imagining?

If the community is interested, for sure. We can join forces to work on the integration and building bridges. Always looking forward to get as much interoperability as we can.

1 Like

I think having a set of independent components is good because it fosters a community, and this is ultimately what makes an initiative like this a success.

I think that, at some point it could make then sense to see if one could extract some elements from Modelix as separate projects, under the same umbrella, as you suggest later. I would not suggest doing that at this stage because having a single project makes development faster, as interfaces between components are not clear

I would really like that.

I think in particular we could take out some of the work from MPSServer, because I think that Modelix could need to build similar APIs to integrate with MPS for things like, getting list of modules, calculating types, and calculating errors.

Agreed. I think that part of the story is to show there are some forces behind a project, to gain the trust and encourage more participation. And also because, besides the interesting prototyping/design phase, there is a lot of engineering and refining that would take significant efforts. Also writing tutorials, examples, and articles alone would take a lot of work and any contributor or team of 1-2 persons could hardly do all of that is necessary alone.

1 Like