At last! An affordable Linux PDA
In previous articles I covered the efforts to implement Linux on the Compaq iPAQ, a high-end PDA especially well-suited for Linux because of its generous complement of resources; including generous amounts of RAM and flash, a fairly high-speed processor, and a color display. A reasonable question might be how well Linux could function on a more restricted platform, since Palm's products are successfully used by millions of users but are implemented with quite limited resources. Accordingly, this article takes a brief look at the Agenda Computing VR3, a new PDA designed specifically for use with Linux.
To call the VR3 a low-end PDA comparable to most Palm devices is probably not quite accurate, as it has a MIPS VR4181 running at 66 MHz, 8 MB of RAM and 16 MB of flash available. Still, it retails for $249, which puts it in the mainstream of PDA pricing. A successful Linux-based PDA implementation retailing at that price could mark the maturation of Linux as a PDA OS to rival PalmOS.
Thus, it is encouraging to report that the VR3 is a fairly successful implementation of a Linux PDA, from both a user's and a developer's point of view. Users will appreciate the well-designed applications, consisting of the usual complement of personal information management programs such as a to-do list manager, an address book, a calculator, a note manager, a utility to keep track of expenses, and a time scheduler. It also has some cleanly ported standard Linux games, including solitaire and checkers.
The VR3 has plenty of hardware buttons available for its applications, including two on the front below the display; up, down, and an on/off button on the left edge; and large buttons taking up most of the bottom half of the left and right edge. The applications currently make very little use of these buttons, which is probably just as well because it is virtually impossible to hold the unit without inadvertently pressing at least one of these buttons. Another annoyance is the stylus holder, which has a switch that is intended to turn on the unit when the stylus is removed. A nice idea, but it also turns on the unit when the stylus is returned to its holder. Suppose you follow this seemingly reasonable scenario: use the unit, turn it off with the on/off button, and return the stylus to its holder. Upon returning to it later, you will find that your batteries are dead because you turned the unit back on when you returned the stylus to its holder.
Recognizing a problem
Agenda has suffered considerable criticism for its handwriting recognition (HWR). Unlike other PDAs, the VR3 does not have an area dedicated to HWR. Instead you can write directly on the display area and the text you enter will be entered as if typed at the cursor location.
The screen area is divided into quadrants -- you write in the upper right for lower-case letters, in the lower right for upper-case letters, in the lower left for numbers, and in the upper left for punctuation.
The pen input code attempts to judge from the speed of your movement whether you are trying to write a character or simply register a mouse click at that location. I found it rather difficult to adjust to the system's assumptions about what is handwriting and what is mouse movement. If you do not start moving the stylus immediately upon hitting the touchscreen the system will interpret your movement as a mouse click rather than an attempt to write a character.
The VR3 HWR would benefit greatly from some ability to configure this behavior. I think I could adjust to the mouse movement vs. HWR determination if I could tell the system to wait another fifty milliseconds or so before it assumed I wanted a mouse movement. Adjusting to the almost-but-not-quite-like-Graffiti characters is also difficult; and the system has a hard time distinguishing between certain characters, at least the way I write them.
Thus the VR3 handwriting recognition is relatively unusable as the moment; using the supplied pick-board is the only reasonable way to input text data. The Agenda mailing lists have been full of speculation about how to improve the HWR. Suggestions have included having a dedicated HWR area, or a button that would switch between cursor mode and HWR mode. I hope Agenda resists such suggestions, as the design seems good and only the implementation needs work. A dedicated HWR area would obviously subtract from the screen area available for other uses, and having HWR and cursor modes is undesirable from a user interface design perspective. Perhaps the ability to configure the pen input code would help those who find it difficult to adjust to the default behavior.
All of which leads nicely into the Agenda software development model. If you don't like how the VR3 software behaves, you are quite free to change it. Like Compaq with its handhelds.org project to port Linux to the iPAQ, Agenda's software development effort has been admirably open. All of their code is released under the GPL or LGPL, a gutsy strategy that so far seems to be paying off well for them.
As a hardware manufacturer, Agenda is primarily interested in selling its PDAs; preservation of perceived intellectual property residing in software is not a priority. So a strategy of using freely available software such as Linux for their system software has obvious appeal. They get mature software, they do not have to pay for it or ask anyone's permission to use it, they can modify it as needed without consulting anyone, and they can draw on the expertise of those involved in the Linux VR project -- often without cost.
Open PIM apps
The gutsy part of the strategy comes in when it becomes necessary to develop some significant applications from scratch. The PIM applications required considerable development effort from Agenda. To release them under the GPL is risky: on the one hand, there is a good chance that opening the source would result in significant contributions to the effort from open source developers; on the other, there is the danger that competitors will simply use the applications in their products.
In the case of Agenda, both of these possibilities have developed. The Agenda PIM applications have been ported by the Familiar project for use with the iPAQ, making it possible that Agenda's efforts will contribute to sales of that PDA. Admittedly, the high-end iPAQ probably does not compete directly with the VR3, but it is possible that directly competing products using the Agenda PIM apps will come onto the market over time.
Substantial third-party developer contributions have also occurred. Agenda developers have spearheaded most of the kernel and other system software development, but some of the most useful applications have been contributed by interested third parties, especially in the area of developer tools and documentation. For example, vrflash, a utility that reprograms the VR3 with new kernel and romdisk images, was contributed by Jeff Carneal.
Lego Andy's Agenda Help Page
The most impressive contribution to the VR3 development effort has been by Andrej Cedilnik, who maintains Lego Andy's Agenda Help Page, by far the most useful resource for both developers and users of the VR3. This site is a virtual one-stop documentation source, including everything needed to get started with the VR3.
Others have contributed resources such as a Wiki page and its content. The amount of contributed documentation has been truly impressive, to the point where Agenda's weak web site looks rather embarrassing. It also runs counter to the oft-stated assumption that open source software suffers from poor documentation because no one wants to write documentation for free.
The GUI platform
Agenda's GUI development platform is FLTK implemented on top of X. FLTK is a sensible choice about which I have written previously.
FLTK is, as its initials suggest (Fast and Light ToolKit), a GUI toolkit targeted toward small footprint applications. FLTK provides most of the widgets and other capabilities needed for GUIs without the bloat and clutter characteristic of many desktop-oriented toolkits. For some additional widgets, Agenda adds Flek to FLTK.
The decision to use a full X implementation rather than FLTK directly on top of the Linux framebuffer is an interesting one. A framebuffer implementation would save some code space at the expense of some flexibility. The Agenda developers decided that the additional overhead of X is small enough that they did not want to give up the ability to use other non-FLTK X-based applications.
Thoughts on the compiler
Another interesting design decision has concerned the choice of compiler. In an attempt to minimize executable code size, former Agenda developer Shane Nay pushed the use of the "snow" compiler, a gcc variant started by Jay Carlson. Developers are accustomed to the choice of dynamic vs. static library linking. With static linking all addresses are resolved at link time and the library code used by an application is linked directly with the application itself, so no run time cost is associated with using the library's facilities.
With dynamic linking, the library is loaded into memory separately from the application, and the library's functions and variables are exposed in symbolic form. When the application is loaded, the resources it needs from the library are linked in at that time -- any reference to the library must be resolved at load time, so load times are slower and executable file sizes are larger than if static linking is used.
The snow compiler attempts to gain the best of both the static and dynamic linking worlds by resolving symbols at link time but loading the application and libraries separately. Thus libraries can be shared among applications, but the overhead of dynamic linking is saved. The downside is that applications refer to specific locations within the libraries, so the libraries cannot be changed without breaking all the applications to which they are linked.
This rather confusing hybrid static/dynamic linking scheme reportedly saves considerable code space and load time, but Agenda has decided against using it for now because of the maintenance headache involved in managing library dependencies. This seems like a sensible decision, but as a result, applications load fairly slowly.
Perhaps a practical way to resolve the code size and load time problems would be to follow the lead of Trolltech. For their Qt Palmtop Environment, they offer two types of build. The "dynamic build" is like the Agenda (or full desktop Linux) model; a full dynamically linkable environment is provided, at some cost of code size and load speed. But they also offer a "static, single application build" in which the entire system, including the kernel and all applications, is linked together into one big binary, and this binary forms the image to be flashed into the handheld device. So the dynamic build can be used for prototyping applications and for systems that require applications to be loaded dynamically, while the static build can be used for most production systems. Adding an option like this to the VR3 build process would allow users to build faster and more compact systems.
Agenda's ability to attract third-party contributions to the development of its software indicates the success of its open source software development model. They should be commended for taking the risks associated with it.
It remains to be seen, however, whether Agenda will succeed commercially. For one thing, they are selling a PDA with fairly high-end hardware specs at a low-to-mid range price, so their profit margins are sure to be squeezed relative to those of Palm and the other major manufacturers.
Another potential problem is Agenda's apparent reliance on third-party developers to document and write software for their system. Some might see this as embarrassing, although such an approach is certainly consistent with open-source software development.
In the near term, it is likely that the VR3 will continue to be attractive to Linux hackers and enthusiasts because of its openness. But because Agenda doesn't have a large team of in-house developers writing applications for the VR3, mainstream success will have to wait until Linux itself has a complete and competitive suite of PDA applications available -- in particular, top-quality handwriting recognition software.
If the company can survive until some of these deficiencies are eliminated, Agenda may succeed in the mainstream PDA market. Fortunately, Agenda is not alone in the Linux PDA market -- so their community orientation and open development model may help them achieve the usability and applications threshold required to attain widespread acceptance.
Author's bio: Jerry Epplin has written embedded software for the past fifteen years, primarily for medical devices. He can be reached at firstname.lastname@example.org
Other related stories:
In the other articles of this series, we investigate various Linux PDA environments in detail, examining their ease of installation, cross-development, and use. Be sure to read them all . . .
- Part 1 -- Exploring Linux PDA software alternatives
- Part 2 -- Hacking the iPAQ with Linux, for fun and profit
- Part 3 -- Installing Microwindows on the iPAQ
- Part 4 -- Installing the Qt Palmtop Environment on the iPAQ
- Part 5 -- A developer's perspective on PocketLinux
- See Agenda's VR3 on CNET TV
- Agenda to launch "first pure Linux PDA" in US April 3
- Agenda to challenge Palm with "pure Linux PDA"
- The Linux-PDA and PDA-Linux Quick Reference Guide
- Agenda launches "developer program" for new Linux PDA
- Device Profile: G.Mate Yopy PDA
- The Linux-PDA and PDA-Linux Quick Reference Guide
- The Embedded Linux GUI/Windowing Quick Reference Guide
- Graphical Windowing systems for Embedded Linux
- Using the X Window System in Embedded Systems