Hi Phil,
if there is something I would like to see our Pharo ecosystem and ST in general
moving
towards is to such a "multilanguage"/"multisourcecode"/"flexible ressources"
kind of
thing. Even when this could not be a short term goal I would like to see this
in the long term.
Regarding integration of different resources
============================================
1. we need a better text editor and not only doing Smalltalk completion/styling
but have this pluggable as well
=> if I'm not mistaken this is what TxText project partly is caring
about
If I remember correctly in VW there were browser plugins to the browsers
code
pane allowing you for instance to directly edit XML as a tree and styling
while the XML text it is stored in a method, etc.
Similar to Eclipse where depending on the content type one or more different
pluggable editors could be used.
2. it should be possible to store and save different code/text formats as
source for methods
=> you can already do it similar to Seaside by just returning Strings
=> maybe a pragma could be used
foo
<language: #JavaScript>
^'alert("hi");'
=> the selector could/should be decoupled from the method body to be
more flexible,
not only in editing
(interesting idea and already in Moose, see Tudors talk from ESUG
2014
https://www.youtube.com/watch?v=LKVPJU3W5Ys&list=PLJ5nSnWzQXi_6yyRLsMMBqG8YlwfhvB0X&index=94)
especially at the beginning of video 3/3.
3. we should think about where the source code (Smalltalk or not) is stored,
it should be
more flexible as well
=> there already was a discussion of integrating the source file into
the image
Pharo4.0 but I would additionally also like to integrate the other
way around (why not
edit an external file (CSS, JavaScript, XML, ...) linked as a
method in the system
with the internal Smalltalk tools)
So one could imagine a method like this where the string is stored
in an external file.
zincMustacheTemplate
<language: 'HTML' external: 'index.html'>
^'<html><body><head><title>{{AppTitle}}</title></head></body>'
Many other ideas come to mind.
Regarding the integration of multiple languages:
================================================
As we all know we have our image and VM provides a dynamic object system and
Smalltalk is only a language that is built into it. So can be others and we
would
open up more.
There are many examples of this already in the Smalltalk world:
- VisualAge for Java was implemented and running inside of VisualAge for
Smalltalk
using all the tools
- running Java inside of Smalltalk/X
- C Source code of the VM can edited and changed in Smalltalk/X tools
- JavaScript on top of VW as seen on ESUG 2014,
https://www.youtube.com/watch?v=ZGAMCz62OM0
- Helvetia (http://scg.unibe.ch/research/helvetia)
Helvetia could be a starting point for Pharo here, also parser frameworks like
PetitParser, ...
Many things are already possible from the meta side.
Maybe one could port the MIT licensed JavaScript implementation from VW to Pharo
and try out if our infrastructure (Compiler, Parser, source code editing) could
really be made pluggable. Would open up Pharo also to JavaScript developers and
maybe realign better with Amber.
So many things we could do to reduce the friction between Smalltalk and the
outside world
... but lots of work if done right.
Bye
T.