[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).