our orbiter software runs in two ways: 1) you run the actual orbiter C++ program on the device. This is the way it works with Windows CE and PDAs. Assuming that there is an ANSI C++ compiler for Palm, this would work for Palm as well. We specifically wrote orbiter in a very object oriented manner so that the main class, src/Orbiter/Orbiter.cpp, which has all the logic, has nothing to do with the user interface. it just calls virtual functions that are derived class must implement. primarily RenderText and RenderGraphic. so if you did this, you would create a new class called OrbiterPalm that implemented the text and graphics rendering for Palm. that's it--the logic and guts would still be the same ANSI C++ that runs on all the platforms
2) the second option is that the orbiter is basically a dumb terminal. This is how Symbian phones work because the phone just doesn't have enough horsepower to handle the logic. So in this case we have a derived version of orbiter class that runs on the media director--not the phone--and when you call the render method's it sends a prerendered graphic to the phone, and the phone just sends back keystrokes. So in this case the phone has no idea what it is displaying, and absolutely no logic. It is strictly a terminal that displays a prerendered graphic and sends back keystrokes. I don't know how powerful the Palm platform is, but if the CPU is really low power you could use this approach. Also, if Palm does not have an ANSI C++ compiler, this approach is probably better even if it had a powerful enough processor because this way you do not need to duplicate all the logic of orbiter in another language. The C++ orbiter class is quite big, so if you have no C++, you don't want to rewrite the whole thing in another language. So using this technique allows you to only write a function that draws a picture and sends back keystrokes, and the same C++ orbiter would run on the media director.
another possibility, if you wanted to do your own graphical user interface from scratch, is not even to use orbiter. Remember all Pluto's devices do nothing but send messages to other devices. So to start playing a movie, for example, all you do is send a message to the media plug-in. You could do this using simply a telnet session. All the communications are over a socket. So you could actually write a completely new graphical user interface for Palm from scratch, and as long as it sends the same messages over a socket, it will still control everything.
which of these approaches sounds best to you?