Scanning The Landscape Of Palmtop GUIs
There are several Linux-based palmtop OSes emerging, and I would like to know what people are expecting from a non-WinCE, non-PalmOS handheld. I have put together minature reviews of three current offerings that I was able to test on my iPaq for comparison.
The TrollTech Qt
Palmtop Environment
QPE was demoed recetly at Comdex, and in my opinion is the best-looking hand-held Open Source OS so far, even though it is merely a demo of Embedded QT and has not been released as a product. On the iPaq; instead, it installs a new /usr filesystem on top of handhelds.org linux distro.
I think there are a number of advantages to using Embedded QT rather than an X windows + toolkit solution. One, it does not use X, but writes directly to the frame buffer instead, which makes it lighter than X-based solutions, and provides the capability to do things X cannot -- like anti-aliasing and alpha compositing. [Ed. Note: See also recent Slashdot stories on just such developments.]Another nice (future) feature might be cleartype-rendering for the final output, to improve sharpness for all display elements (not just text). The X Window system's most useful feature is remote display. QPE also includes support for remote display -- it can draw to a VNC framebuffer as well as the Linux framebuffer.
Another advantage to QPE is that it uses the popular QT toolkit, making porting applications from KDE relatively easy, and easing cross-platform development (QT also runs on Windows and other non-unix OSes). Addtionally, QT and QPE are both very space-efficient, all handheld-type applications included. The libraries, framebuffer driver, etc. fit into a 3.7MB .tgz file for the iPaq (mirror). If anyone knows of an Embedded GTK project, please post a link below.
One of the most compelling features of QPE is the variety of input methods it allows. It includes five input methods: pickboard, handwriting, keyboard, opti (modified keyboard), and unicode (apparently understands Cherokee out of the box). Every method includes -- this is the really cool part -- dictionary look-ahead. If you type out part of a word, a ticker presents a list of likely candidates. You simply tap on one to erase the partial you already typed and insert the entire word in its place. This is, I think, its best feature, and one that other environments would do well to copy. it also includes support for "right-clicking" -- tap and hold -- to bring up context menus, set flags in minesweeper, etc.
And though perhaps unpolished, QPE is anything but incomplete: it includes 14 applications -- address book, games, etc. -- plus several applets (like a slider to set backlight brightness and a load monitor) and some silly stuff, like a Tux plush-doll simulator (a shaped window with Tux in it). It also includes an HTML-based help browser. And, of course, it's both Open Source and Free Software.
For all of its niceness, QPE does have some cons as well. A lot of them are related to the fact that QPE is a demo, not a released product. For instance, there's no way to suspend the iPaq. It must be shut off, which requires re-calibrating the display each time. There's a menu option for exiting QPE, but it does not also shut down Linux, so you have to power off the running OS, which can't be good. Crashing applications can bring down the whole GUI. For instance, playing a bad MPEG video in the MPEG player hangs the whole UI. I can restart it using the serial-port console, but that's not really a solution. It currently does not have working audio, which is a shame, because the MPEG player also plays MP3s.
Handhelds.org provides the father of all iPaq linux distros (which is also a required base install for QPE). It runs TinyX, written by Jim Gettys. It's really kind of minimalist and unintegrated. However, it's linux, it's free, and Compaq and the iPaq team should be congratulated for providing Linux support on the iPaq. Compaq also provides some other benefits, such as you ability to compile apps using their Skiff Cluster -- making development much easier, as there's no space for a compiler on 16MB of flash. The UI for the Handhelds distro is pretty ghastly -- X + TWM + xterm + TWM menus for few installed apps and administrative tasks, such as changing brightness of backlight.
TWM and xterm are quite tedious to use with a stylus. They're also pretty unattractive. It includes a lot of utilities and programs, but very few GUI apps, which is what you need on a handheld. The three major apps are "scribble" for handwriting recognition, a qwerty keyboard, and a statically-linked GTK mp3 player (note: menus don't work well with stylus). And Xterm makes four, if you want to bother counting it.
The two input methods are strange to use -- you have to get the input focus set just right, and be careful to not obscure the scribble or keyboard app with the target app. In contrast, WinCE and QPE both resize the display area available for apps when the input methods are invoked, and reserve space at the bottom of the screen for the input handler.
Again, the major thing about the handhelds.org Linux distro is that it exists; it's not really meant to be a useful PDA environment. However, it does illustrate the numerous reasons why an unmodified desktop GUI does not belong on a handheld.
PocketLinux is an interesting beast. It is linux-based, but the GUI and all of its apps run in Kaffe and use XML for interface definition and other data storage. The GUI is themeable, and PocketLinux included several themes. I actually didn't care for any of them. Perhaps they should look at SkinLF, a skin engine for Java/Swing.
They have certainly achieved Buzzword compliance with the use of Java + XML. The downside is, it's slooooow. The UI is simply not very responsive, and the iPaq is the most muscular of the current handhelds. The upside is, it's portable. And since it's Java, I imagine it's theoretically possible to beam apps and data to other PocketLinux devices, even if they use a different processor. That's not an insignificant advantage. Plus, because all apps run in the Java VM, it's likely to be stable (assuming the VM is) thanks to the garbage collection, lack of pointers, etc. that Java provides. Plus, the PocketLinux environment can be used to develop (both compile and test) apps off-unit without having to resort to using a special cross-compiler setup and ftping or syncing builds of apps to just see if they run.
Like QPE, it uses the framebuffer; but it does not include any remote display functionality. I'm not certain that's really an issue with a handheld, anyway -- although it might be nice to open your handheld display on your desktop PC while it's in its cradle so that you can use a mouse and a keyboard to more quickly use the UI to manage the device.
The major downfalls of PocketLinux are its slowness and its clunky UI. It's better than xterm, but not as nice as either QPE or WinCE. Otherwise, it's in the same vein as QPE -- includes all the usual suspects as far as apps go, and an MPEG player to boot.
Thoughts -- I am interested in what you all are looking for in a handheld GUI. Please post! I'm looking for a number of things:
- Flexible, easy to use "sync" feature. This would preclude ActiveSync, as it does not work (at all, either USB or serial) on my iPAQ.
- Standard file formats. None of the Linux handhelds options I've discussed here provide a way to "sync" data to another computer, but when they do, a standard resource file format would be nice.
- Easy to use interface. This means, no need to type out words to start apps (or to use most apps). A "start menu" is the best thing going in the launcher department that I've seen, and the use of things like context menus and QPE's dictionary lookahead make using a stylus easier.
- Free Software.
- I actually spent a couple of months getting to know WinCE before I wiped it, and I never did really care for it. It does include Microsoft Reader, though. All handheld environments should include a good, standard document reader. I reccommend PDF rather than MS Reader or any other proprietary format, because it's an open spec and tools to create and view it are available as free software. It also supports sophisticated layout and compression and delivery of all document elements as one file -- something XML and HTML cannot do.
- Variety of working, non-intrusive input methods. QPE's dictionary is great. WinCE and QPE both resize apps to reserve an area for the input method at the bottom of the screen. This is much better than handhelds.org's TWM focus-game method.
- Standard app toolkit. There's not a lot of space on handhelds, but handhelds need a rich GUI toolkit to be useful and provide a way to write lightweight apps. Palm does this well, even though it is a very limited platform. I can't install GTK and QT and whatever, because there's not a lot of space. I use Gnome on my desktops and laptop, and program for GTK, but am very happy with the slim, trim QT/Embedded used in QPE. PocketLinux sort of half-wins. Demerits for slowness and ugly themes. Handhelds' X+TWM+Xterm wins in the oops-thought-this-was-a-desktop category. WinCE does a moderate job; It looks mostly like windows, but different enough to be mildly strange at the beginning. And, of course, Media Player is totally different. What is it with media players these days? Do they all have to be ugly and slow?
- Speed. Handhelds.org and QPE win here. PocketLinux, of course, does not.
- Support for common features: syncing, serial/ppp/ethernet/other connectivity setup, etc. No one does this yet.
- Apps. Including games. MPEG video player optional. Really. Mp3 player would be cool. Doc reader a requirement.
- Attractive interface. I don't mean gaudy. I mean, easy to look at. Microsoft's cleartype for text does make a difference. QPE's anti-aliasing and alpha-compositing both make a difference in this area. Handhelds.org gets no points here. QPE wins, and PocketLinux, while themeable, is somewhat cluttered and awkward to use.
Note: You may also be interested in reading this piece on PocketLinux and reading more about the iPAQ.
Hello All Slashdotters (/ME puts on flame retardant suit, just in case)
I just want to say hi. I am a sysadmin at handhelds.org and would like to clarify/expand on some stuff mentioned above.
Note: all of the following comments are mine and do not represent the handhelds.org community as a whole or part
First of all I'd like to say that handhelds.org is not an IPAQ only community and we are currently looking to setup websites/mailing lists/etc that will help anyone looking to port linux to ANY handheld device. So if you are a developer looking to put up your work, please let me know (edwardam@handhelds.org).
The Handhelds.org (hh.org) iPAQ distro is also the base for the pocketlinux distro, they just add their java environment and get rid of our X server (they write directly to the fb), which in my opinion is a technical mistake.
The hh.org distrobution is very minimalistic at this time. We are stsill working on some core issues (that will benefit QTE & pocketlinux) like Advanced Power Management (what we have now I would not consider Advanced), X screen rotation (what we have now is a gross hack; some of the people working on this are Keith Packard and Jim Gettys), jffs (so you can write to the fs; currently we are using cramfs a read-only comrpessed filesystem) and jffs compression (so we can get the same storage we are used to with cramfs)
Our X server sources have been rolled back into the main Xfree 4 tree. Jim Gettys has made a lot of size improvements to xfree and it's xlibs, and I believe there is still more improvement to be made. So everyone will benefit from the work. And let me just say that X is NOT TOO BIG for a handhel!!!! (heck even IBM's Linux Watch runs X.
Lets see what else: We are also replacing xterm with rxvt ('cause xterm is too big).
There is also work going on (with xstroke and xscribble) to do full screen character recognition, so all of the focus issues related to text input will go away (No popups and stuff, just write what you want; Eat your heart out CE). As a matter of fact xstroke is what I currently use on my ipaq
Some other things of interest:
Languages like tcl, python, perl and java are being worked on. One of which may make the standard distro at some point. P.S Just use python (that's my baby), it already has support for unicode, xml, gtk and libglade on the ipaq.
Various people (Alan Cox included) are working on several Window Managers that are PDA specific like pdawm, swm and various hacks on aewm and other.
There is of course NO timetable for any of the above. :-)
edwardam@handhelds.orgPalin...
2. Scratch out 97.5% of them.
3. Build your gui and base it on the remaining 4 items.
People working on handheld gui's need to step out of the freaking desktop paradigm. Icons and flashy menus are not the way to create a good handheld interface. Who needs enlightenment in your freaking handheld? Apart from wankers, I can't think of anyone.
tcd004 Tired of election coverage? How about some UNCOVERAGE?
Look no further than henzai.com.
---
In summary, you need a fast, easy input method, with a fast, intuitive way to launch apps, and a way to view all the necessary data at the same time (color and screen use both come into play here). After all, what are these things for if not fast, easy access to the data we can't go 2 minutes without having access to? I'm curious, though, what features do people think are really necessary in these things? I for one think MP3 players and most network connectivity are overrated. I also only care about getting the files off the device and being able to use them in other applications. Syncing, for me, is just another buzzword, as I keep my phone book and appointments in only one place (on the handheld). I know others will take issue with these points, though. Flame on.
Some of these items have been covered in other posts since I started writing this tome, but I'm going to post it anyhow since they weren't covered in the detail I wanted to see.