Skadi Cloud - an Experiment with JetBrains Projector and MPS

In mid-March I wrote about how the newly released project Projector from JetBrains could be useful in the context of MPS. Today I'm proud to announce that I used my spare time to implement one of those ideas at skadi.cloud

Skadi.cloud implements the “preconfigured IDEs”-idea I sketched in my original post. Skadi.cloud is an experiment where you can log in with your Github account, start a JetBrains MPS instance, and connect to it right from the browser. No installation required. The MPS instance comes with KernelF, an alternate functional base language, installed out of the box. To get you started easier the instance includes additional samples to the ones shipped in MPS.

I built this mainly for two reasons. First, to lower the barrier for people to try out MPS. My personal experience in teaching MPS to new colleagues or customers has shown that getting started with the tool can be very challenging. Especially when you want to leave the "vanilla" MPS territory things can get tricky. Installing MPS extensions and other plugins can be confusing because there are many ways to do so. Some tutorials suggest installing from the JetBrains Marketplace others prefer downloading from Github releases or even building them from source code. With skadi.cloud you get a ready-to-use environment with most extensions installed. This will get you way beyond the samples and tutorials included in MPS out of the box. For instance Markus excellent MPS Introduction Course or my tutorial from heavymeta.tv are included by default. The second reason I build this is to show that it is possible to do. Hopefully, this will foster discussion in the community and generate new ideas on how it could be used.

Apart from exploring MPS yourself skadi.cloud allows for another interesting feature: giving read-only access to others in the browser. That way you can operate the IDE and others can see what you do. This can be useful for teaching scenarios where a couple of people follow the lecturer. You could use it to solve a problem in your project with somebody else. Especially with the current "everything is remote" situation this can come in handy.

A word on the status of the project. It is an experiment please treat it like that. It's my spare time pet project which I’m really happy to share with you but don't expect it to be a super polished and bug-free experience. That said please experiment with it, share your feedback and ideas with me. I'm always happy to hear what you think about it. The easiest way to get in touch with me is via mail: kolja@hey.com or @dumdidum on Twitter.

The Stack

It would be presumptions of me not to at least briefly tell you how this experiment is built. This whole thing wouldn't be possible without open-source software and therefore the work of others. To no surprise, skadi.cloud uses JetBrains Projector at its core which seems to be built by two people at JetBrains. Without this open-source project, none of this would exist. Then for the infrastructure part of deploying and running IDE instances Kubernetes is used. The web application and fronted are built using ktor and Hotwire. There will be a separate blog post with more technical details later.

Apart from technology Markus and João played a vital role in discussing my ideas, providing feedback, and playing around with early versions.

What's Next?

I honestly don't know. My immediate goal was to get this out of the door so people can play around with it. To get an idea for me where this could be heading I appreciate any feedback. I’m paying the costs for running this experiment out of my pocket and feedback is a great way to keep me motivated to spend it. 😄

Rough ideas for the future include putting Markus - Programming Basics onto the same infrastructure. Another idea is to combine this infrastructure with modelix. You could get a modelix playground with a set of languages of your choice to play with. For not only using modelix but developing languages in it, adding a complete modelix development environment deployed with a single click might be an option. The latter is by far more complex than what is possible at the moment. A modelix development environment itself requires more than just a MPS but all the other components to run a complete modelix stack.

If you read till here and you haven’t visited the website yet head over to skadi.cloud and give it a try. Let me know what you think once you tried it out!

If you liked the content consider subscribing to the email newsletter below. The newsletter delivers all posts directly into your inbox. For feedback on the topic feel free to reach out to me. You can find me on Twitter @dumdidum or write a mail to kolja@hey.com.