What other meta-programming systems with support f...
# present-company
j
What other meta-programming systems with support for projectional editing are there than https://www.jetbrains.com/mps/ ? Does anyone have experience with MPS?
šŸ‘ 1
a
I have been playing with MPS for a while
j
@Alexey Shmalko awesome, how has your experience been? I can certainly see the value of MPS if one is looking to build many DSLs for different systems. However, I'm wondering if it's worth diving into MPS as something to build a domain specific language for your own product. Like if a DSL is the most important part of your product, is it just better to built it from scratch to exactly serve your needs, without the added complexity of a generic system such as MPS..
a
I've built a couple of experimental languages back in 2019 (so the feedback might be outdated). My experience is twofold. Once you learn MPS basics it is quick and easy to create simple languages/editors. But once you want to step outside or use some advanced feature, you can feel lost for days as there is little documentation. Overall, I find MPS overcomplicated. There is a ton of docs, but they are not enough. There is a two-part MPS book that has more details, but even it is not enough. There are many places in the book that go like: "there is thing called xxx but I could not figure out what it's doing." Though, there are some advanced languages like http://mbeddr.com/ and Java'ish one that comes with MPS, and I believe there are companies betting on MPS. My general recommendation is to try MPS and/or mbeddr and see if you like them. MPS has many interesting ideas and is the most mature structural editor, so I recommend trying it out to anyone working on structural editors. If a regular text-based DSL works, I wouldn't use MPS. If you want a structural editor and non-text elements, then MPS is worth it.
šŸ™Œ 1
g
FWIW: Not direct answers to your questions, but some thoughts, hth: 1) I am of the opinion that Lisp is the mother of projectional editing (IOW: studying Lisp can indicate what some of the building blocks of PE might be (e.g. expression language, lack of syntax, normalized syntax, etc., etc.). 2) I am of the opinion that it is easier to crank out languages that are based on a common toolbox than it is to build PE (hence, my current interest in Ohm-JS, and transpiling). 3) A colleague asked my opinion (:-) of MPS. I gave my opinion in 2 stages: (1) before I looked at MPS, and, (2) just after I looked at MPS for the first time. I wrote down my observations. (1) is https://guitarvydas.github.io/2021/07/24/Jetbrains-MPS-Before-I-Look-At-It.html, and, (2) is https://guitarvydas.github.io/2021/07/28/Jetbrains-MPS-First-Impressions.html
šŸ™Œ 2
j
Thanks for the great answers! I skimmed through the presentations at the MPS Talk Series 2021 (

https://www.youtube.com/watch?v=c0qd6KSR3xoā–¾

) and I got the impression that MPS can be effective and has a small but active community. However, MPS (or the ecosystem) is not super mature and quite critically doesn't currently have a good solution for enabling projectional editing in the web.
That being said, MPS still looks like the most mature and full fledged solution for building DSLs with projectional editing. Apparently JetBrains is working on a web editor, but nothing is publicly available yet. There are third party solutions such as: • https://github.com/Strumenta/webeditkit • https://github.com/modelix/modelix Then there's ProjectIt, which doesn't rely on MPS https://github.com/projectit-org/ProjectIt Additionally something related can be found from • https://github.com/yairchu/awesome-structure-editors • https://www.reddit.com/r/nosyntax/
ā¤ļø 1