[pyshell] recapping/extending discussions
holger krekel
hpk@trillke.net
Tue, 13 Jan 2004 01:31:37 +0100
Hi,
Armin, Michael and me already had some starting discussions on
a possible pygame/pyshell design. Here is what i got from it in
no particular order. feel free to brainstorm or add/modify to it:
- there should be a User Interface or frontend process
running pygame and managing user input and display.
- the UI process connects to (and/or controls) a backend
process which actually performs computations and holds
objects and where user input is executed.
- if the UI crashes it should be able to reconnect
to the still running backend process
- in order to extract displayable information like
e.g. expression results, introspection/completion
information the UI process marshals code objects to be
executed on the backend. Thus there should be no need for a
formal RMI protocol. The backend just needs to allow
executing arbitrary code objects coming in via
a socket or Stdin.
- one idea is to be able to enable "screen-like"
facilities, i.e. multiple users connecting to the
same backend and/or sharing a screen session.
- one idea for structuring user input and output is
the mathematica "notebook model" where an input
statement and e.g. a resulting image are grouped
together. Refreshing the input would result in
an update of the picture.
- of course we want clean multiline edits
- we want to have a copy&paste clipboard interoperable
with OSX, Win32 and Linux desktops. Ah yes, the
shell should work uniformely on these platforms,
obviously :-)
- we want flexible ways of displaying arbitrary
object structures in multiple ways: e.g. an image
object can be displayed as a thumbnail but have
also some methods and attributes displayed ...
- in principal there should possibly be multiple
pygame windows. As each pygame process can only have
one window we would then need to be able to
start multiple processes.
- a UI process maybe should be able to talk to
multiple backend processes, e.g. multiple python
versions (e.g. Python2.2, 2.3 and PyPy :-) to explore
different behaviour.
And some naming suggestion: as 'pyshell' is actually
already taken by wxPython we could go with 'pysh' for
the time beeing. Google even shows some svn-checked
in module from Armin for this name, already :-)
cheers,
holger
P.S.: And some organizational information: Armin will arrive
next Saturday noon at my place and we'll start hacking
later in the afternoon. Michael will join remotely and
Jens-Uwe will probably come to my place, too. The idea
is to also have some voice-over-ip connection probably
realized via some OpenH323 clients (not explored yet
but shouldn't be too hard).