Pendant's eye look - 1
I'll duplicate this comment from my previous question thread.
Sorry for saying this but i think also that your MPS' documentation is far from perfect (I've started on MPS 3.0 documentation and in process of reading this understood that there is no hope to get thorough understanding of MPS through it — if there is info in it about what are operationContexts, for example, there are no links to such info in it). I've assumed that the official way is to get through Fast Track to MPS and am now going through it. Is it the way to get MPS right in full detail?
Maybe somebody want create an issue from this (or there is no such a thing as issue about documentation?)?
Sorry for saying this but i think also that your MPS' documentation is far from perfect (I've started on MPS 3.0 documentation and in process of reading this understood that there is no hope to get thorough understanding of MPS through it — if there is info in it about what are operationContexts, for example, there are no links to such info in it). I've assumed that the official way is to get through Fast Track to MPS and am now going through it. Is it the way to get MPS right in full detail?
Maybe somebody want create an issue from this (or there is no such a thing as issue about documentation?)?
Please sign in to leave a comment.
Also you could be interested in this topic: http://forum.jetbrains.com/thread/Meta-Programming-System-841
Web-based MPS is a really exciting thing. MPS folks are aware of it, see point 6 in the road map: http://confluence.jetbrains.com/display/MPS/MPS+public+roadmap
The system I've been designing is based on Node.js. The prototype I did a few months ago used an embedded Neo4J database to store the models (graph database seems like a good way to store an AST). I would prefer to have a pluggable back end, so you could use Mongo, CouchDB, or even just plain JSON files. That's where I got tripped up before and didn't finish it, but I'm going to dust it off and work on it some more.
Conceptually, my idea is heavily inspired by the MPS way of doing things. Each AST node is a JSON object, models are collections of objects, etc, just like in MPS. The workflow would be M2M transformations with a final M2T transformation, just like MPS. I plan to use existing template engines like Handlebars for the M2T part at first. The M2M transformations I would like to follow MPS's approach, since that is one of the key things that drew me to MPS.
The asynchronous/evented model of Node.js makes it easy to chain together small bits of functionality (think "pipes and filters" architecture). All of the transformation/generation workflow could be implemented as Connect middleware to manage the pipeline. This would even allow generation on the fly during development, if so desired.
What I really like about the idea is that the platform language for plugins and extensions would generate HTML/Javascript. One of the key things that has kept me from diving into some serious MPS plugin development is that I don't want to be tied solely to the Idea platform. Of course, the hardest part would be implementing a projectional editor as nice as MPSs - in Javascript. On the other hand, it would be much easier to generate custom kinds of projections, since almost everyone knows HTML/Javascript.
And here I wonder if it's ever possible to do it in JS? You have to keep all your typesystem rules, actions, etc in browser. Given this, generic language editor becomes super-memory-consuming thing. :)