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?)?
0
17 comments
MPS is being experiencing it's next reincarnation, JetBrains' guys are preparing MPS for public 3.0 version. I think it's acceptable at this time that documentation is not sufficient (although I'm finding it very good). If you need, you may find examples of how built-in languages and samples are made and how they work. You might find helpful "Go to concept declaration" (ctrl+shift+S) and "Find usages" (alt+F7) actions in code exploration.

Also you could be interested in this topic: http://forum.jetbrains.com/thread/Meta-Programming-System-841
0
Avatar
Permanently deleted user
My problem is i'm a kind of guy which learns by deduction not by induction — that means i'm almost always trying to go from general things to more particular ones, so the absence of tutorials which can be searched or fully cross-referenced documentation (or the one which doesn't need cross-references — linear one in nature) makes learning a little bit harder for me.
0
I understand, MPS is a really big amount of new info to chomp at once. Have you tried Calculator tutorial? I started learning MPS via that tutorial and then Markus Voelter's mps-lwc tutorial on google code (http://code.google.com/p/mps-lwc11/wiki/GettingStarted). It took me several times to understand it, and I was starting all over again while I was going through these tutorials, but each time you understand more and more of why and how it works.
0
Avatar
Permanently deleted user
Yeah, i tried it a long time ago. But there are big amounts of time when i don't have any possibility to pay time to MPS learning, so it's always got forgotten :-( But i'm trying to fight this situation! :-)
0
Avatar
Permanently deleted user
And also that is exactly the kind of situation where one would need reference documentation to quickly refresh his memory. (Instead of watching/reading again tutorials).
0
Avatar
Permanently deleted user
MPS is Open Source, so you are very welcome to help building a community and make things better.  :) MPS offers such a huge amount of functionality that it's not easy to keep the docs up to date and complete. Perhaps you could start a wishlist for missing docs?
0
Avatar
Permanently deleted user
Yeah, i'll definitely think about it :) Well right now i'm a little bit tired of submitting issues, but in advance i'll ask — how do you propose to use this list? Also my biggest point is that there is no such a thing as index in documentation, so that you could refresh your memory at a glance. Remember MSDN? That is similar to the thing i'm talking about. You can rather quickly look at a certain thing, like a specific class, but of course it is not a tutorial.
0
Avatar
Permanently deleted user
I was thinking of the list as something for us as community. (So issues are not helpful because they are only maintainable by JetBrains folks.) We could get ideas for code samples, blog posts, screencasts, podcasts and so on. An index would be great, but how do you integrate code samples and screencasts? Both are very important for documentation. Perhaps we should create show notes. Hm, a large page with pointers to the original content, searchable, filterable, with API (e.g. for direct MPS integration) and different criteria for showing hierarchies.
0
Avatar
Permanently deleted user
There was a big idea to somehow translate MPS to JavaScript, embed it into a webpage and... Well, there are so many opportunities! :-) For example, if it would have an API, we could to create interactive tutors. Or create copy/paste-able representations of our programs and so on... But it's more to the developers.
0
There was a big idea to somehow translate MPS to JavaScript, embed it into a webpage and...


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
0
Avatar
Permanently deleted user
And for now we could focus on trying to create MPS language for tutors and documentation — it's possible, right?
0
Avatar
Permanently deleted user
Just my opinion, but out of all those features I would move web support to the top. That would allow the use of MPS to vastly grow.
0
Avatar
Permanently deleted user
That maybe not completely wise because with advent of graphical notations ecosystem (that word seemed to be right, but maybe it's better to say environment) of MPS will change a lot, so the growth should be postponed.
0
Avatar
Permanently deleted user
I've thought a lot about a web-based MPS, and even did some prototyping awhile back.  It's an idea that keeps me awake at night, literally, as I can see SO MANY possibilities for a web-based language workbench.  Anyone seriously interested in working on this, contact me and we'll make it happen.  I keep getting pulled to this idea, but it's a big job for one person.  Just seeing the interest here motivates me to keep working on it, and if a couple more people start pitching in, you won't be able to stop me from knocking this out!

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.
0
Of course, the hardest part would be implementing a projectional editor as nice as MPSs - in 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. :)
0
On the other hand, MPS might introduce some features that will prevent it from moving to web (things that are hard to implement in client-server environment).
0
Avatar
Permanently deleted user
Oh, i didn't thought of that kind of architecture. Rather i thought of some lightweight thing fully working on client side in V8 or asm.js (or pNaCl) that would not require server at all.
0

Please sign in to leave a comment.