FAQ of the OpenPalm Project

What is the OpenPalm project ?

The OpenPalm is an open source project that aimed at providing a Palm API compatible GUI system for small embedded platforms.

What is the developing goals of the OpenPalm project?

There are some developing goals for the OpenPalm project:

100% source level compatible with Palm APIs. All Palm applications needs only a simple recompile.
100% binaray level compatible with Palm APIs. All Palm applications binary can be seamlessly run through a m68k emulator.
Kernel OSes independence. Only minimum set of kernel OS support is needed.
Processor independence. Support all processors that the kernel OS supports.
Multi-thread and multi-application extension. Lift the "old" limitation and allow much more versatile applications. E.g. Listening to MP3 while browsing the web..

But isn't there already CoPilot that we can run Palm applications on?

CoPilot is in fact a Palm hardware emulator on desktop system. That is, you still need the PalmOS romfile to make it work. On the contrast,  OpenPalm is aimed to provide an API compatible environment such that all palm applications can be easily ported to different platforms.

What is the architecture of the OpenPalm system?

OpenPalm system is roughly divided into five layers.

Jedi Virtual Machine(JediVM): The m68K emulator which is responsible for translating m68K machine codes into real CPU's machine codes, adjusting API parameters in calling stacks, and route API calls into OpenPalm's kernel. This layer is only used by native Palm applications. If  running binary Palm applications seamlessly is not an issue, ignore this layer.
Anakin: This is the Palm API compatible layer. It is quite thin and provide only API signatures translations to OpenPalm's kernel. From another point of view, OpenPalm can be extended to support other APIs by changing this layer,
Jedi: This is the kernel layer of the OpenPalm system. It is composed of four major subsystems: Thread and application manager, graphic engine, UI manager, and database manager.
OS layer(OSL): This is the OS abstraction layer and the OpenPalm's porting layer.
Thumb Virtual Machine (TVM): A virtual kernel OS for platform developers. With this layer, the OpenPalm allows both system and application developers to develop programs on the desktop (e.g. PC running Win NT or X-window).

What computer languages are used in developing the OpenPalm?

Most of it is C++, only a very tiny part is written in assembly.

What platforms do the current OpenPalm system run on?

The current OpenPalm system can be run on top of cygwin  (The linux environment running on top of WinNT) and run on top of Microsoft's "Desktop Pocket-PC emulator". Anybody want to increase the list?

What is the current status of the project?

Fundamental architecture and implementations are done, including threading, memory management, window management, graphic engine, and emulator on Cygwin/Windows NT.
Two kernel OS, Cygwin & Pocket-PC, has been ported.
Several demo programs are ready.
About 400 APIs are implemented and increasing (total around 1000).

What can I do to help this project?

There are a lot of jobs to be done. The major help you can do for us is testing. Not only for bug-fixing but also for compatibility. Another territory is about porting to different OSes, processors, platforms, and handheld devices. Of course, the API implementation is always the most basic and important job. The project needs your help on all areas.

What license is the OpenPalm project under?

The OpenPalm project is licensed under the MPL. Please check "License" for details.

Why MPL?

We have argued on whether GPL or MPL should be used. However, this is a project for embedded systems and GPL seems get too far for embedded community. We have been trying to balance the needs and desires of all aspects.

Where can I get the source code? Join the mailing list? Ask questions?

The project is currently hosted on SourceForge. Go there and you will find what you need.

Copyright © 2000 Infoshock Corporation. All rights reserved.
October 26, 2000