MPS rocks
A curated list of awesome MPS extensions/libraries, software and resources.
Inspired by awesome-python and awesome-rust.
What are you looking for?
Understand what MPS is
See what others have been building with MPS
- Built with MPS are open source projects that all built on MPS
- Research contains a list academic papers that make heavy use of MPS
Get started with MPS
To get stated we suggest to look at the tutorials in the following order:
- MPS for the Impatient is a free hands-on course that covers the basics of JetBrains MPS from the language designer's perspective, skipping the theoretical topics as well as the practical productivity how-tos.
- HeayMeta.tv - A complete MPS tutorial to build your first language by @coolya with lots background information on language design.
- MPS Intro Course by @markusvoelter is an advanced introduction to MPS in the form of multiple videos as well as a github repository to play around with. It also covers extensions to MPS such as additional notations or the interpreter framework.
- If you are specificity looking for input on how to build generators this guide contains a set of best practices.
- The DSL Engineering Book contains detailed discussions of the concepts behind MPS in its Part III on language implementation.
- For more details on specific MPS topics we refer to The MPS Language Workbench Book (Volume I, Volume II) as well as the official MPS User Guide
Learning contains a list of even more tutorials. In addition Research contains a list academic papers that make heavy use of MPS.
Get in touch with the community
- The Community list the usual suspects
Awesome MPS
Plugins
Plugins that improve MPS.
- Build Script Notifier - Fix your build scripts with one click when module dependencies change.
- digitalember.extensions - MPS baseLanguage editor extensions for better readability.
- Durchblick - Simplified editors to increase readability of generators.
- Editor2PDF - Serialises editor into PDF files
- Fernsprecher - View your IntelliJ based IDE logs directly in your browser.
- Grammar Cells - An extension to the editor language of MPS. It will help you to create consistent and well-behaving textual notations in MPS with no effort.
- ingrid - Ingrid is a plugin for JetBrains MPS allowing import of ANTLRv4 grammars and create an MPS language out of it.
- Key Promoter X - This plugin helps to learn essential shortcuts while you are working.
- langdoc - This plugin allows arbitrary nodes in your models to be annotated with documentation text.
- Language visualizer - A JetBrains MPS plugin to visualize the structure of a language.
- Mario Progress Bar - Pretty progress bars for IJ based IDEs.
- MPS BaseLanguage Extensions - A set of handy extensions to BaseLanguage, such as tail recursion optimization and function memoization
- mps-code-reviewer - Code Review for JetBrains MPS providing integration with Bitbucket
- MPS Extensions - Various extensions to simplify language development.
- MPS gradle plugin - A Gradle plugin to build & test langauges and to support various tasks related to custom RCP packaging.
- MPS-QA - This repository contains quality assurance tooling for Jetbrains' MPS.
- Nyan Progress Bar - Pretty progress bars for IJ based IDEs.
- Presentation Assistant - This plugin shows name and Win/Mac shortcuts of any action you invoke.
- Shadow Models - Shadow Models is an incremental transformation framework for MPS.
- Stubs Generator - Stubs Generator is a plugin to Jetbrains MPS which allows easy creation of generators of library stubs for custom MPS languages.
- skadi gist - Share MPS code snippets via the browser.
- Text Generator Plugin - Alternative Textgen for JetBrains MPS using the standard model to model generation mechanisms.
Built with MPS
IDEs
Complete IDEs built with MPS.
- Dutch Tax Office - Domain-specific languages to implement Dutch tax legislation and process changes of that legislation.
- FBME - FBME (Function Blocks Modelling Environment) is an IDE for IEC 61499 standard built on top of JetBrains MPS language workbench.
- Hardella IDE - Smart programming environment for PLC
- mbeddr - An extensible C implementation in MPS to support embedded software development.
- MetaR - A IDE for R for people with limited computer science background.
- PeoPL - A full IDE build upon MPS to manage Software Product Lines.
Languages
Individual languages.
- ANTLR_MPS - An ANTLR language for MPS, and the ToMPS language to help create MPS languages and ANTRL visitors from an ANTLR 4 grammar.
- CsBaseLanguage - An implementation of the C# 5.0 language.
- DclareForMPS - Support for the dclare engine in MPS.
- D-Flat - C# language implementation prototype for JetBrains MPS.
- ecmascript4mps - ECMAScript language implementation for JetBrains MPS.
- FormatsDSL - A DSL to describe formats and generate loaders.
- mbeddr.cpp - C++ language implementation prototype for JetBrains MPS, built as an extension on mbeddr.core (C language).
- MPS JSON Language - A JSON implementation for MPS.
- PlantUML - Language for PlantUML models, also useful to generate PlantUML diagrams from custom DSL.
- iets3 - Base language for system modelling and specification including basics abstractions for components, expression, variability, etc.
- Physics - A physical simulation description language built with MPS.
- Voice Menu - A voice menu language and a Java simulator built using JetBrains MPS.
- Web languages - a collection of Web-centric, partial language implementations: JSON, JSON Schema, WSDL, XSD, SVG, CSS.
Other projects
- Modelix - Modelix is a open source platform that aims to bring modeling on the web.
- MPS CodeRules - New typesystem from JetBrains for MPS. Uses logic programming.
- MPS Platform Docs - This website collects practical knowledge about MPS and popular MPS platforms.
- MPSServer - A tool to make MPS accessible remotely.
- mpsZooKeeper.sh - Helper script to generate an isolated configuration prefix for isolated MPS instances.
- Skadi Cloud - An experiment with Projector to put JetBrains MPS into the browser.
- WebEditKit - This is a framework for creating projectional editors which interact with JetBrains MPS.
Learning MPS
Tutorials / Courses
- Learn MPS - Browse top resources, improve your MPS skills, and connect with the community.
- Creating a simple language using JetBrains MPS - The objective of this project is to construct a language to define mindmaps.
- Fast track tutorial is the official tutorial for MPS. It will provide you with an high-level overview in 10 steps, covering all aspects of MPS at a high level.
- HeayMeta.tv - A complete MPS tutorial to build your first language by @coolya with lots background information on language design.
- MPS for the Impatient is a free hands-on course that covers the basics of JetBrains MPS from the language designer's perspective, skipping the theoretical topics as well as the practical productivity how-tos.
- mps-tips - Collection of tips and tricks about the MPS ecosystem which might be useful to someone.
- MPS tutorials - Official tutorials and cookbooks for MPS.
- MPS Intro Course by @markusvoelter - A slightly advanced introduction to MPS wiht a focus on language extension.
- MPS Office Hours - A weekly one-hour Zoom meeting where you can share your screen and get help.
Books and User Guides
- Deployment options for MPS
- Domain-Specific Languages in Practice with JetBrains MPS - Provides an overview of the domain of language workbenches and examples in both industrial applications and research projects.
- DSL Engineering - Contains a detailed discussion of the concepts behind MPS in its Part III on language implementation.
- The MPS Language Workbench - Introduction to the JetBrains MPS language workbench and a complete reference manual.
- Towards Maintainable Generators - Best practices for maintainable generators and a set of rules when to apply them.
- MPS OpenAPI Documentation
- MPS User Guide
Community
Medium
Slack
Websites
- DSLFoundry - DSLFoundry blog: howtos and articles about practical MPS usage.
- F1RE - A blog focus on the model driven software engineering domain.
- languageengineering.io - A blog focused in language engineering with many examples implemented using MPS.
- log verbose - The repositor owner's own blog posts on MPS.
- Official Website
- Programming Basics - Uses MPS to teach the basics of programming to none computer science people.
- Specific Languages - Specific Languages blog: articles about practical MPS usage.
- Strumenta - Strumenta blog: articles about MPS and language engineering in general.
Research
Papers
- Classification Algorithms Framework (CAF) to Enable Intelligent Systems Using JetBrains MPS Domain-Specific Languages Environment
- JetBrains MPS as Core DSL Technology for Developing Professional Digital Printers
- Using Language Workbenches and Domain-Specific Languages for Safety-critical Software Development
- The Design, Evolution and Use of KernelF Slides
- Domain-Specific Languages for Efficient Satellite Control Software Development
- Using C Language Extensions for Developing Embedded Software - A Case Study
- Automated Testing of DSLs Implementations: Experiences from Building mbeddr
- Lessons Learned from Developing mbeddr - A Case Study in Language Engineering with MPS
- Efficient Development of Consistent Projectional Editors using Grammar Cells
- IncA: A DSL for the Definition of Incremental Program Analyses
- An Extensible Framework for Variable-Precision Data-Flow Analyses in MPS
- Towards Usable Projectional Editors
- Taming the Software Development Complexity with Domain Specific Languages
Talks / Videos
- GeeCON Prague 2017: why modern language workbenches matter - Talk by Vaclav Pech about MPS.
- ieeeComputerSociety episode 126 - Jetbrains MPS with Konstantin Solomatov
- MPS Talk Series 2021 - The MPS Talk Series was a free virtual event organized by JetBrains and itemis that took place in February 2021.
- JetBrains MPS as a Tool for Extending Java
- JetBrains TV MPS Playlist - Official videos by JetBrains on MPS.
Contributing
Your contributions are always welcome! Please take a look at the contribution guidelines first.