Yes I understand your metaphor and I like it.
So we will have try and see how it flies.
Aha. Yes, indeed :). I completely agree that we should
aim to allow
people to use higher level editing tools. I just do not want to lose the
ability to keep the mapping to the Pharo level where the real logic is.
A somewhat related parallel that spawns to mind is SmaCC vs PetitParser:
- SmaCC is a DSL out of which the AST is being generated. One
consequence is that the AST nodes are not very smart. For example, there
are no specific traversals in the nodes. However, these traversals are
achieved through the generic query language which is indeed a nice thing
to have. It is possible to add these queries as extensions to the nodes
(I do that for some projects), but I did not see it happening too often.
Probably the main reason for it being the fact that when you change the
name of the AST node class, the extension gets lost.
- PetitParser allows us to work using the same level of abstraction
which is very interesting. What you notice in this case is that the AST
trees tend to be smarter and grow their API over time. This is much
easier to manage given the integrated refactoring. However, at the same
time until now, PetitParser did not produce a generic query language.
I think there are things to learn from both of these worlds. I do not
know if this parallel makes sense to you, but to me, the way I see
Platypus is more like SmaCC, while the way we work with FAMIX/Fame is
more like PetitParser with everything being integrated. Likely, we are
missing opportunities due to that focus, but we gain the liveness and
this ability of growing the API over time. I think the work on Chef was
a very nice thing that showed that we can actually get the best of both
worlds.
Now, it would be definitely be very cool to have a way to integrate
Pharo logic inside another DSL because this would open the door for a
completely different community that we can both learn from and probably
offer tools to. Especially, given that now we could also offer a
debugger for those kinds of languages. And hopefully soon, we will also
offer editing options.
I think this is exciting and definitely worth the investment.