As some of you may know, I maintain a simple Gradle plugin for MPS, called specificlanguages/mps-gradle-plugin. It focuses on building MPS libraries, taking the approach of convention over configuration.

Today I have released version 1.3.0 of this plugin. Previous versions were using a “backend” that was very strictly tied to a specific MPS version, so it would refuse to work with MPS 2021.1.4, for example, while working just fine with MPS 2021.1.3. The new backend strives to be independent from a particular version of MPS, thus a single code base supports MPS 2020.3 and above (until something changes on the MPS side that causes it to break).

The “backend” mentioned above is one of two backends that come from mbeddr/mps-build-backends, a set of command-line utilities that work with MPS projects and a framework to write more such utilities.

The backends were extracted from another Gradle plugin, mbeddr/mps-gradle-plugin, that is older and more universal but more complicated to use than the simple plugin that I mentioned in the first paragraph. The mbeddr plugin can be used to build RCPs and does not prescribe any conventions for your project.

Sacha Lisson, the wizard behind advanced MPS editors and one of the contributors to Modelix, has developed another Gradle plugin, gradle-mpsbuild-plugin. This plugin is part of his effort to create a replacement for the MPS build language. The plugin can generate Ant scripts and package and publish MPS libraries without having to create a MPS build script for them.

This is both a blessing and a curse because a library or RCP that is built using a MPS build script requires all of its dependencies to have MPS build scripts as well. In this case, a revolution would have to start at the top (of the dependency hierarchy). Since the Modelix project does not build an RCP, it can dispense with the build scripts sooner.

Sascha’s plugin is already used in the master branch of MPS-extensions and the artifacts that it creates are published to GitHub Packages under the group io.github.jetbrains.mps-extensions.

In other news, Daniel Ratiu, the main contributor behind FASTEN, a MPS-based environment for formal verification, is working with some of his colleagues on a language to describe the architecture of MPS projects in terms of groups of modules and dependencies allowed between them.

Daniel’s work is not open-source (yet?) but I believe that this language could be a stepping stone towards a new generation of the MPS build language, one that does not punish you for forgetting to Reload modules from disk every time you change a module dependency but instead helps you describe, reason about, visualize, and maintain the architecture of your project. In short, helps you apply the modeling approach of MPS to MPS projects themselves.

In the mean time, if you are tired of forgetting to reload your modules, I have written a small MPS plugin, Build Script Notifier, that will let you know when you need to reload your modules, and give you a simple link to reload them all at once.