Hi Ernest,
Some comments below.
1. Headless. This is probably best answered by Erwin.
2. Remote GUIs. The short answer is basically "no, but". Here are the "buts"
DisplayInterface and PlotterBase were part of an display output remotely called HandSimDroid. Below is a summary of this work:
In 2011, the HandSimDroid project developed a prototype that allows Ptolemy models to run under Android.
Students from CMU:
- Anar Huseynov
- Justin Killian
- Ishwinder Singh
worked with Bosch researchers:
- Elizabeth Latronico
- Charles Shelton
and Berkeley researchers to re-architect a
portion of Ptolemy II so that models could run on a server and be
displayed on a low-powered handset.
The code for this effort is in
- $PTII/ptolemy/ptserver
- $PTII/ptolemy/homer
- $PTII/ptolemy/actor/gui and $PTII/ptolemy/plot were modified to support displaying on a remote machine.
We looked at SWT and at the time it did not work for us under Mac OS X. See
https://chess.eecs.berkeley.edu/triq/wiki/Main/EclipseAndAWTOne of the Triquetrum bugs is to build an interface to PtPlot, which is Swing-baseed and part of Ptolemy II. Erwin prototyped an interface to a more Eclipse-centric plotter, see
https://wiki.eclipse.org/Triquetrum/Extending_TriquetrumThere are a bunch of different ways to display data remotely. These days we typically use a VNC application to log in to a remote machine and view the data that way. Erwin probably has some input here.
3. Actor Descriptions vs Actor Instantiation. This is a thorny issue, here are some thoughts.
Ptolemy II has ptolemy.kernel.LazyComposite.
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII10.0/ptII10.0.1/doc/codeDoc/ptolemy/kernel/util/LazyComposite.html says:
A marker interface for lazy composites. A lazy composite is a
CompositeEntity that does not automatically populate itself
with contained entities and relations when it is instantiated.
It does populate itself with attributes and ports, but the
contained entities and relations are not created until they
are explicitly requested.
Note that a class that implements this interface cannot
have parameters whose values are expressions that refer to
contained entities or relations or attributes contained by
those. This is a rather esoteric use of expressions, so
this limitation may not be onerous.
So, you could delay instantiation by using LazyComposite. I'm not sure how you would edit the model composite without instantiation.
Actor-oriented classes are not a solution in themselves, but they could help. The Triquetrum RCP model editor does not yet support Actor-Oriented Classes. There is an open issue for this:
https://github.com/eclipse/triquetrum/issues/78Note that combining LazyComposites and Actor-Oriented Classes is very tricky and likely to have bugs.
The way I would do it is to create a facade actor that had the ports and parameters that would be set at model creation time. The facade actor would then instantiate a named class at runtime and do the transfer of data. We probably already almost do this with some of the higher-order function classes in actor/lib/hoc.
So, I think this would require some engineering time, but would be solvable. If Edward does not reply to this message, then try posting to the ptolemy-hackers list.
4. Luna: Sure, I'm open to supporting Luna if it does not break the current support for Neon. I did the port from Luna to Neon, see
https://github.com/eclipse/triquetrum/issues/104. The reason to support Neon is because it is the current release of Eclipse and it seems like a good idea. I don't think we have any other reasons to move to Neon.
_Christopher