How to distribute a language

First of all, congratulations to the MPS folks for what promises to be one of the more interesting development platforms around.

One thing I haven't been able to find out is how we can develop a language and then distribute the editor and generator in some sort of packaged form. I don't want the users of my language to have to understand importing languages, classpaths, etc (they are not supposed to be technical users). And, I don't want them to be able to create their own language or extend my language in any way. I just want them to use my language as I distribute it.

Do you have any plans to support such a way to lock and distribute a language?

In my case, we have a small team that defines the DSL, and hundreds of users who need to use the DSL in a uniform and consistent way.

Thanks for your help.

- Kashif Q.

Comment actions Permalink

Hello, Kashif,

If you take a look at our distribution, many language are distributed in a packaged form, in .mps.jar files. You can do the same thing with your languages if you use packaging language. You can read more about it here:

In the future builds (probably in 1.0, we plan to release ) you will be able to create a custom distribution which in addition to the core language will contain your languages. There will also be option to turn off language development features so the distribution will be IDE to your language and user won't be confused with many actions/tools etc.

We don't have to plans to support language locking. It's almost impossible to implement it in an open source product where locking can be easily worked around.



Comment actions Permalink

As Konstantin had already mention, MPS can understand languages packed in special jars. To create those jars for your own languages you can use "module" construction in language. For example, for complex language and it's runtime a build script can look like:


Ant-scripts, generated from it, will package each language into a separate jar. If "generate compilation script" parameter was set to "true", it would also compile languages.

If you have a project with several language to distribute, MPS can generate a script on packaging language automatically. How to do it is described in the user's guide.

Some more information about packaging language can be found in


Please sign in to leave a comment.