Heavy Meta: A Streaming Series on JetBrains MPS

A while back I experimented with “streaming” about MPS. I didn’t do much more than a single, not even live streamed, video. It was basically me working on some extension to MPS while I explained what I was doing which I happened to record.

Recently I revived my efforts in that direction and starte with new series in Twitch. This time really live and with recordings available on twitch afterwards. The first two “episodes” focused on a more advanced topic that was requested by members of the MPS community: the command line build and integration in a continuous integration setup. Another goal was also to see if the setup I had in mind would work technically, which seems it did.

What’s next? I plan to more streams about MPS with two streams a week, starting with very basic introduction to MPS. Then building a basic language(s) and eventually ending with advanced episode on language design and features.

Why Live on Twitch?

Instead of making prerecorded videos and putting them one a platform like youtube I decided to do this in a different way: having regular live session where I show you how to use MPS and build languages. The main reason for me is, while I still have an overall plan what to show and teach, I don’t want to do static tutorial. I want to integrate your feedback and ideas. There will be several ways to contribute and to interact. Ideally we will build the tutorial together.

If this is going to work out I have a lot of other ideas where we can develop the format into. Further ideas include:

  • “MPS office hours”: where you, the community, can talk to people involved in the development of MPS and it’s extensions
  • “Bring your problem” - sessions where some from the community brings a problem and we build a language for it together
  • showcasing a specific MPS extension and it’s usage

What Are We Going to Do

Until the Christmas I would like to build a simple language with you. The language will feature simple expressions, methods and an abstraction to test the code written in the language. It will look and feel familiar to a mainstream programming language. Although I don’t think MPS is necessarily the best choice for building languages that target normal software developers, and I will explain in one of the first episodes why in more detail, I wanted to start with something software developers can easily relate to.

The Content

The series will start with the very basics of JetBrains MPS (what is it, what can do with it, etc) and an introduction into how to build your first language step by step. We will then gradually progress into more and more advanced use cases over time. Overall the series aims to be slow paced so that you can follow along with what I’m showing. Each episode will be around two to three hours long. Currently I have planned for episodes until Christmas with tow episodes a week every Tuesday (20:00 CET) and Thursday (19:00 CET) on my Twitch channel. While the content for the November portion of them is already concrete to get you started with MPS the later episodes in December aber ideally based on your feedback.

There are several ways to give feedback and contribute to the project for instance by asking questions in the chat on twitch, by join the Slack channel on the MPS Slack, by adding issues to the Github repository or by sending pull requests to the repository with something that you find a useful extension to the language.

Is this another “Fast Track to MPS”? The simple answer is No. The “Fast track to MPS” is a great tutorial to get you started with basics of MPS but does not cover more advanced topics or language design in general. While I will also start with basics there will be some overlap at the beginning but the goal is to cover much more advances topics later on but with a consistent example language starting from the very basics.

The plan for each episode looks like this:

  • 6th of November — An Introduction to JetBrains Meta Programming System (MPS): What is it, what can I do with it, what is a language in MPS.
  • 8th of November — The different Aspects of a language in MPS: Detailed look at the different aspects of language with small examples what theses aspects are useful for.
  • 13th of November — Starting our first language: What are we going to build, setting up the project and creating our first concepts.
  • 15th of November — A closer look at editors: How to define editors with good usability. How to use MPS extensions to simplify editor definitions.
  • 20th of November — A basic type system: A simple type system for our language to ensure correct programs.
  • 22nd of November — Using constrains to limit applicability: Using constrains to prevent users from doing mistakes.
  • 4th of December — References and Scopes: Adding scopes for variables.
  • 6th of December — Testing the language: What can we test about our language and how.
  • 11th of December — Support for tests in the language: Adding support for tests written in our language.
  • 13th of December — A simple Interpreter: Executing programs directly inside the IDE.
  • 18th of December — Code Generator: Generating Java from our language.

You can also find all the dates in this google calendar for easy access.

As mentioned earlier the content in the later episodes is based on your input and how we progress through the tutorial. I would like encourage everyone to send in your idea through the channels mentioned before.

Hope to see you on Twitch every Tuesdays and Thursdays! 💪