bytecode modules

[email protected] Mon, 4 Apr 2005 09:58:55 +0200
Newsgroups gmane.comp.graphics.y.devel
Message-ID <[email protected]>
Hello,

I'm writing to get some feedback on an idea that I came up with today.

The reason why I've been thinking about it is because I think thin clients are 
pretty nifty things. But better software is needed to make them more useful.

I see three options to get the look and feel of your desktop environment no 
matter what terminal you happen to sit in front of.

* A VNC-like system plugged in as video and input driver.
  - Latencies. No better than X.
  + Pure plugin, doesn't require changes to the server.

* Standalone clients for things that affect L&F (theme, wm...) communicating 
  through proxy plugins or special method invokations in the Y protocol.
  - Latencies. No better than X.
  + Possible as pure plugin.

* Bytecode or script for L&F modules.
  - Performance.
  - Requires changes to the server and lots of work.
  + No network latency.
  + Security, no theme plugins with spy-ware or other crap.
  
Here I'm arguing that designing a bytecode for theme/wm/widgets modules is a
good idea.

For security (and laziness) reasons the bytecode should only consist 
of instuctions that a theme, widget or window manager needs to use.

I'm guessing (very much guessing) performance wouldn't suffer all that much
since the instructions would be on a very high level, e.g. drawLine(), and thus
most execution would be native. Themes with thousands of putPixel() calls have
themselves to blame...

Being able to write widgets in bytecode would make life easier when a new 
version of Y contains a new widget. New apps could provide the widget 
themselfs if running on an old server lacking this widget. At least it's a 
better fallback than implementing the new one on a canvas.

Artistic non-programmers would get an easier, dedicated language to write themes 
in.

This solution removes (or at least decreases) the need for a stable internal 
api.

A program drawing the desktop (root window) should be a client since it most 
probably will want to load images from remote harddrive.


Curious to hear what people have to say about this.

/Simon